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字符串截取中文截取2,单字节截取模式
Dec 10 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
php实现的CSS更新类实例
Sep 22 PHP
php静态文件生成类实例分析
Jan 03 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
php中错误处理操作实例分析
Aug 23 PHP
laravel 创建命令行命令的图文教程
Oct 23 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函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
java解析json方法总结
2019/05/16 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
2013/10/25 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
Bootstrap轮播加上css3动画,炫酷到底!
2015/12/22 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
基于vue实现分页效果
2017/11/06 Javascript
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
python中元类用法实例
2014/10/10 Python
windows及linux环境下永久修改pip镜像源的方法
2016/11/28 Python
Python3.6正式版新特性预览
2016/12/15 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
Python socket聊天脚本代码实例
2020/01/02 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
Python根据字典的值查询出对应的键的方法
2020/09/30 Python
Python eval函数原理及用法解析
2020/11/14 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
业务部经理岗位职责
2014/01/04 职场文书
简历里的自我评价
2014/01/31 职场文书
安全责任书范文
2014/03/12 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫