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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
PHP中session变量的销毁
Feb 27 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
php实现网站顶踩功能的完整前端代码
Jul 19 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
php数组指针函数功能及用法示例
Feb 11 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下使用strpos需要注意 === 运算符
2010/07/17 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP 验证登陆类分享
2015/03/13 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
JS实现的检验身份证格式并输出出生日期,年龄,性别,出生地示例
2019/05/17 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
[01:34]DAC2018主赛事第四日五佳镜头 Gh巨牙海民助Miracle-死里逃生
2018/04/07 DOTA
Python下载网络小说实例代码
2018/02/03 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
SQL Server面试题
2013/04/04 面试题
师德师风演讲稿
2014/05/05 职场文书
服务理念标语
2014/06/18 职场文书
应届生面试求职信
2014/07/02 职场文书
python实现自定义日志的具体方法
2021/05/28 Python
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技