文档

  1. 功能

    同步推荐关系
  2. 接口方法

    syncRelation
  3. 参数描述

    OriginalUsername 查询的用户用户名

    RecommandUsername 推荐人用户名
  4. 返回值

    status 1成功 9 失败
  5. 备注

    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的更多相关文章

  1. 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!

    支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者! 锋锐支付平台程序(www.100freenet.com)隶属于盐城市沐良商贸有限公司(沈阳杰速网络科技有限公司旗下 ...

  2. AppCache 离线存储 应用程序缓存 API 及注意事项

    使用ApplicationCache接口实现离线缓存 原文:http://www.mb5u.com/HTML5/html5_96464.html 推荐:html5 application cache遇 ...

  3. 微信小程序通过api接口将json数据展现到小程序示例

    这篇文章主要介绍了微信小程序通过api接口将json数据展现到小程序示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧实现知乎客户端的一个重要知识前提就是,要知道怎么通过 ...

  4. Atitit。激活某个程序的api attilax总结

    Atitit.激活某个程序的api attilax总结 1. 设置当前某窗口为当前窗口,有几个步骤要做:1.得到窗口句柄FindWindow2.切换键盘输入焦点AttachThreadInput3.显 ...

  5. 小程序常用API介绍

    小程序常用API接口  wx.request https网络请求 wx.request({ url: 'test.php', //仅为示例,并非真实的接口地址 method:"GET&qu ...

  6. 图解微信小程序---调用API操作步骤

    图解微信小程序---调用API操作步骤 什么是API API(Application Programming Interface,应用程序编程接口:是一些预先定义的函数,目的是提供应用程序与开发人员基 ...

  7. 把微信小程序异步API转为Promise,简化异步编程

    把微信小程序异步API转化为Promise.用Promise处理异步操作有多方便,谁用谁知道. 微信官方没有给出Promise API来处理异步操作,而官方API异步的又非常多,这使得多异步编程会层层 ...

  8. 快要C语言考试了,大学生们收好这些经典程序案例,包你考试过关!

    距离考试越来越近 编程大佬早已饥渴难耐 电脑小白还在瑟瑟发抖 但是不要怕! 来看看这些经典程序案例 包你考试过关! [程序1] 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...

  9. 微信小程序 HTTP API

    微信小程序 HTTP API promise API https://www.npmtrends.com/node-fetch-vs-got-vs-axios-vs-superagent node-f ...

随机推荐

  1. JavaScript面向对象之Prototypes和继承

    本文翻译自微软的牛人Scott Allen Prototypes and Inheritance in JavaScript ,本文对到底什么是Prototype和为什么通过Prototype能实现继 ...

  2. socket 关于同一条TCP链接数据包到达顺序的问题

    转:http://blog.csdn.net/l1008610/article/details/52197602 以前作者也一直以为数据包先发的不一定先到,直到今天才意识这个问题的缺陷,数据包是不一定 ...

  3. Python SQL相关操作

    环境 Anaconda3 Python 3.6, Window 64bit 目的 从MySQL数据库读取数据,进行数据查询.关联 代码 # -*- coding: utf-8 -*- "&q ...

  4. 【C#笔札】1 string类型

    C中没有string这个类型,而是用字符串数组来实现,相对来说比较麻烦. LABVIEW相对来说要简单太多,毕竟他主要的精力集中在硬件控制上,软件操作方面极其简单. C#类似,C#中有System.S ...

  5. C++(十八) — 内存模式、堆和栈

    1.内存模式 一个程序执行时,先复制到内存,然后CPU逐句读取指令执行. 每个存储单元存放一个字节(8bit)数据,每个有一个唯一的地址,地址是顺序编码的.比如:一台计算机256MB内存,则有256* ...

  6. Redis 有序集合(sorted set),发布订阅,事务,脚本,连接,服务器(三)

    Redis 有序集合(sorted set) Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.redis正是通过 ...

  7. angular之 $watch 和$digest 和$apply和$observe的区别

    $watch 代表的就是对数据源的监听,当数据源发生变化,就会触发第二个参数的回调函数 $digest 代表触发一个数据源变化的事件 $apply 代表对于$digest的一个封装,他多了一个参数 . ...

  8. 【51nod-1046】最大子矩阵和

    一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值.   例如:3*3的矩阵:   -1 3 -1 2 -1 3 -3 1 2   和最大的子矩阵是:   3 ...

  9. win8 商店应用 设计风格原则

    共八条: 1,突出内容(数据). a,仅在屏幕上保留最相关的元素:移除线条.框和不必要的图形效果:限制屏幕上持久显示的导航框,如选项卡. b,交互尽量直接在内容上,直接控制内容来完成操作,而不是使用控 ...

  10. Week03-Java学习笔记第三次作业

    Week03-面向对象入门 1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系. ...