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 相关文章推荐
基于mysql的bbs设计(三)
Oct 09 PHP
台湾中原大学php教程孙仲岳主讲
Jan 07 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
强制PHP命令行脚本单进程运行的方法
Apr 15 PHP
PHP处理Oracle的CLOB实例
Nov 03 PHP
自己写的php中文截取函数mb_strlen和mb_substr
Feb 09 PHP
PHP实现QQ快速登录的方法
Sep 28 PHP
PHP-FPM运行状态的实时查看及监控详解
Nov 18 PHP
PHP对象、模式与实践之高级特性分析
Dec 08 PHP
PHP实现普通hash分布式算法简单示例
Aug 06 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 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
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP基于Closure类创建匿名函数的方法详解
2017/08/17 PHP
php PDO属性设置与操作方法分析
2018/12/27 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
2015/05/15 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
python 接口返回的json字符串实例
2018/03/27 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
CSS3对背景图片的裁剪及尺寸和位置的设定方法
2016/03/07 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
安全生产月活动总结
2014/05/04 职场文书
关于诚信的活动方案
2014/08/18 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
出租车拒载检讨书
2015/01/28 职场文书
小学生读书笔记
2015/07/01 职场文书