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 has encountered an Access Violation 错误的解决方法
Jan 17 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
PHP类的反射用法实例
Nov 03 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
PHP7中I/O模型内核剖析详解
Apr 14 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
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
2007/02/11 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
分享PHP守护进程类
2015/12/30 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
2013/12/27 Javascript
AngularJS基础教程之简单介绍
2015/09/27 Javascript
Node.js 多线程完全指南总结
2019/03/27 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Python下的subprocess模块的入门指引
2015/04/16 Python
Python中用于转换字母为小写的lower()方法使用简介
2015/05/19 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
美国购物网站:Clickhere2shop
2021/01/28 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
大学生军训自我评价分享
2013/11/09 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
采购员工作总结范文
2015/08/12 职场文书
mysql优化
2021/04/06 MySQL
MySQL系列之三 基础篇
2021/07/02 MySQL
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL
MySQL查询日期时间
2022/05/15 MySQL