PHP实现的同步推荐操作API接口案例分析


Posted in PHP onNovember 30, 2016

本文实例分析了PHP实现的同步推荐操作API接口。分享给大家供大家参考,具体如下:

文档

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));
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP基础学习小结
Apr 17 PHP
php全排列递归算法代码
Oct 09 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP与jquery实时显示网站在线人数实例详解
Dec 02 PHP
php+resumablejs实现的分块上传 断点续传功能示例
Apr 18 PHP
php 7新特性之类型申明详解
Jun 06 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 #PHP
PHP获取指定日期是星期几的实现方法
Nov 30 #PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 #PHP
详解PHP处理密码的几种方式
Nov 30 #PHP
php+js实现百度地图多点标注的方法
Nov 30 #PHP
php 运算符与表达式详细介绍
Nov 30 #PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 #PHP
You might like
file_get_contents("php://input", "r")实例介绍
2013/07/01 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
Jquery中对数组的操作代码
2011/08/12 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
javascript将list转换成树状结构的实例
2017/09/08 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
Bootstrap 中data-[*] 属性的整理
2018/03/13 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
在Vue中用canvas实现二维码和图片合成海报的方法
2019/06/10 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python标准库与第三方库详解
2014/07/22 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
使用Python实现批量ping操作方法
2020/05/06 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
StubHub墨西哥:购买和出售您的门票
2016/09/17 全球购物
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
护士毕业生自荐信
2014/02/07 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书