严谨的程序案例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 ...
随机推荐
- devstack环境中不能创建cinder volume
刚安装好的devstack环境中无法成功创建cinder volume,创建的volume的status为error:在cinder scheduler中看到失败log:2015-10-15 14:1 ...
- Appium 自动化测试(5)-- Appium详细介绍:Appium 手机自动化测试_TesterHome公开版pdf
- datagrid拖动列头更换排列顺序
在做这个功能的时候在网上找了大量资料,发现都不适用,要不然就是代码太冗余,所以另起炉灶,自己封装了这个函数 下面是完整的代码: <!DOCTYPE html> <html> & ...
- Android应用实现Push推送消息原理
本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我 们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅 ...
- 静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同?
Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化.而通常的内部类需要在外部类实例化后才能实例化,其语法看起来挺诡异的,如下所示. /** ...
- margin特性深入分析与总结
今天写了个小demo,总体不难,但一些细节需要注意: 1)如下图所示,蓝色区域为白色box的padding,橙色区域为每条数据项的margin-bottom,那么如何解决最后一条记录margin-bo ...
- 打造属于自己的安卓menu
首先,我们来看看这张图吧 看下面的menu菜单,是原装的菜单,好丑陋哦,类似于小编这么爱美的人来说,纯粹就是天大的打击,接受不起.于是,小编就发奋图强,努力,努力,再努力,终于,将菜单改的漂亮了一点, ...
- spring 和springmvc 在 web.xml中的配置
(1)问题:如何在Web项目中配置Spring的IoC容器? 答:如果需要在Web项目中使用Spring的IoC容器,可以在Web项目配置文件web.xml中做出如下配置: <!-- Sprin ...
- Java 线程的中断机制
今天我们聊聊 Java 线程的中断机制. 线程中断机制提供了一种方法,用于将线程从阻塞等待中唤醒,并作出相应的“受控中断”处理. synchronized (lock) { try { while ( ...
- php session在高并发时可能存在的问题。
如果同一个客户端并发发送多个请求,而每个请求都使用了Session,那么PHP Session锁的存在会导致服务器串行响应这些请求,而不是并行.这是因为在默认情况下,PHP使用文件存储Session数 ...