严谨的程序案例Api
文档
- 功能
同步推荐关系 - 接口方法
syncRelation - 参数描述
OriginalUsername 查询的用户用户名
RecommandUsername 推荐人用户名 - 返回值
status 1成功 9 失败 - 备注
Status=1 原用户不存在,关系未建立
Status=2 推荐用户不存在,关系未建立
Status=3 原用户存在,并且没有推荐人,推荐用户也存在,成功建立关系
Status=4 原用户存在,而且已经有了推荐人,推荐人是传递的推荐用户,关系不再重建
Status=5 原用户存在,而且已经有了推荐人,推荐人不是传递的推荐用户,关系重新建立,原推荐人是XXX
Status=9 查询失败,操作异常
protected function _initialize() {
parent::_initialize();
$this->outData = array('status'=>0,'msg'=>'','info'=>array());//输出参数
}
// 同步推荐关系
public function syncRelation() {
$memberModel = D('Member');
$memberInviteeModel = D('Member_invitee');
$OriginalUsername = $this->_request('OriginalUsername','trim'); // 被推荐人号码
$RecommandUsername= $this->_request('RecommandUsername','trim'); // 推荐人号码
if ($OriginalUsername == $RecommandUsername) {
$this->outData['status'] = '9';
$this->outData['msg'] = '参数有误';
$this->printOut();
}
$o_member = $memberModel->getMemberByTel($OriginalUsername);
if (empty($o_member)) {
$this->outData['status'] = '1';
$this->outData['msg'] = '原用户'.$OriginalUsername.'不存在,关系未建立';
$this->printOut();
}
$o_wxinfo = $memberModel->getWxinfo($o_member['id']);
$r_member = $memberModel->getMemberByTel($RecommandUsername);
if (empty($r_member)) {
$this->outData['status'] = '2';
$this->outData['msg'] = '推荐用户'.$RecommandUsername.'不存在,关系未建立';
$this->printOut();
}
$r_wxinfo = $memberModel->getWxinfo($r_member['id']);
// 查询原用户是否存在推荐关系
$o_member_invitee = $memberInviteeModel->getInviteeWxuserMember($o_wxinfo['id'],$o_member['id']);
if (empty($o_member_invitee)) { // 不存在推荐人
$r = $memberInviteeModel->setRelationship($r_member['id'],$o_member['id'],$o_wxinfo['id']);
if ($r !== FALSE) {
$this->outData['status'] = '3';
$this->outData['msg'] = '原用户'.$OriginalUsername.'存在,并且没有推荐人,推荐用户'.$RecommandUsername.'也存在,成功建立关系';
$this->printOut();
} else {
$this->outData['status'] = '9';
$this->outData['msg'] = '查询失败,操作异常';
$this->printOut();
}
}
if ($o_member_invitee['member_id'] == $r_member['id']) {
$this->outData['status'] = '4';
$this->outData['msg'] = '原用户'.$OriginalUsername.'存在,而且已经有了推荐人,推荐人'.$RecommandUsername.'是传递的推荐用户,关系不再重建';
$this->printOut();
}
// 获取原推荐人信息
$o_member_inviter = $memberModel->getMemberById($o_member_invitee['member_id']);
// 修改原有推荐关系
$o_member_invitee['member_id'] = $r_member['id'];
$r = $memberInviteeModel->where(array('id'=>$o_member_invitee['id']))->save($o_member_invitee);
if ($r !== FALSE) {
$this->outData['status'] = '5';
$this->outData['msg'] = '原用户'.$OriginalUsername.'存在,而且已经有了推荐人,推荐人不是传递的推荐用户,关系重新建立,新推荐人'.$RecommandUsername.',原推荐人是'.$o_member_inviter['tel'];
$this->printOut();
} else {
$this->outData['status'] = '9';
$this->outData['msg'] = '查询失败,操作异常';
$this->printOut();
}
}
protected function printOut() {
exit(json_encode($this->outData));
}
严谨的程序案例Api的更多相关文章
- 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!
支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...
- AppCache 离线存储 应用程序缓存 API 及注意事项
使用ApplicationCache接口实现离线缓存 原文:http://www.mb5u.com/HTML5/html5_96464.html 推荐:html5 application cache遇 ...
- 微信小程序通过api接口将json数据展现到小程序示例
这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...
- Atitit。激活某个程序的api attilax总结
Atitit.激活某个程序的api attilax总结 1. 设置当前某窗口为当前窗口,有几个步骤要做:1.得到窗口句柄FindWindow2.切换键盘输入焦点AttachThreadInput3.显 ...
- 小程序常用API介绍
小程序常用API接口 wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...
- 图解微信小程序---调用API操作步骤
图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...
- 把微信小程序异步API转为Promise,简化异步编程
把微信小程序异步API转化为Promise.用Promise处理异步操作有多方便,谁用谁知道. 微信官方没有给出Promise API来处理异步操作,而官方API异步的又非常多,这使得多异步编程会层层 ...
- 快要C语言考试了,大学生们收好这些经典程序案例,包你考试过关!
距离考试越来越近 编程大佬早已饥渴难耐 电脑小白还在瑟瑟发抖 但是不要怕! 来看看这些经典程序案例 包你考试过关! [程序1] 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...
- 微信小程序 HTTP API
微信小程序 HTTP API promise API https://www.npmtrends.com/node-fetch-vs-got-vs-axios-vs-superagent node-f ...
随机推荐
- c++中的函数对象《未完成》
头文件: #pragma once #include<iostream> #include<vector> using namespace std; class Student ...
- Origin软件作图留白过多问题解决
解决空白过大方法:1.Tools——>Options2.Page——>Copy page setting——>Margin默认是Page,下拉菜单选Border,Clip Borde ...
- Web2.0 TA 问题记录
记录一下上学期在当Web2.0 TA的时候遇到过的小朋友们问过的问题,可能会成为以后我开发上遇到的问题. 1. 元素的背景默认是boader origin的,也就是说是从边框开始延伸的. 但如果对bo ...
- mysql 转移数据目录
由于MySql的数据库文件和日志文件比较大,导致磁盘空间不够,在添加新的磁盘之后,需要把MySql的数据转移到新挂载的目录下. 1.停止MySql服务: /etc/rc.d/init.d/mysql ...
- yii2:oracle date类型字段的写入或查询
insert: insert into tabname(datecol) value(sysdate) ; -- 用date值 insert into tabname(datecol) value(s ...
- 在js中,ajax放在for中,ajax获取得到的变量有误
先看代码 for(var i=0;i<tds.length;i++){ mui.ajax(url+'api/client/gifts/isSigned', {data :{ sqId:" ...
- git网站
https://backlog.com/git-tutorial/cn/ ------------------------------------------------------------- ...
- 51nod 1042 数位dp
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042 1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131 ...
- Ubuntu下Python使用MySQLdb远程连接数据库的常见问题及解决方案
本文基于http://www.cnblogs.com/fnng/p/3565912.html这篇博文,学习使用MySQLdb过程中遇到下面这些问题. 1. 安装MySQLdb时运行sudo pytho ...
- 条款20:在传递对象的时候尽量用reference-to-constent来代替,pass-by-value
注意一下,c++的底层编译器而言,引用类型往往都是由指针来实现出来的,所以pass-by-reference实际意义上往往是传递了一个指针,这对于c++的内置类型来说往往传递一个reference更加 ...