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 相关文章推荐
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
PHP计数器的实现代码
Jun 08 PHP
CodeIgniter上传图片成功的全部过程分享
Aug 12 PHP
php过滤敏感词的示例
Mar 31 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 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的cURL快速入门教程 (小偷采集程序)
2011/06/02 PHP
php中对2个数组相加的函数
2011/06/24 PHP
php生成短域名函数
2015/03/23 PHP
隐性调用php程序的方法
2015/06/13 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
window.location和document.location的区别分析
2008/12/23 Javascript
toString()一个会自动调用的方法
2010/02/08 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
2010/12/30 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
javascript常用对话框小集
2013/09/13 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
用jquery获取select标签中选中的option值及文本的示例
2018/01/25 jQuery
layui实现form表单同时提交数据和文件的代码
2019/10/25 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
linux系统使用python监控apache服务器进程脚本分享
2014/01/15 Python
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
2014/07/04 Python
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
Python实现输出某区间范围内全部素数的方法
2018/05/02 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
Django 多环境配置详解
2019/05/14 Python
python getpass实现密文实例详解
2019/09/24 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
DNA基因检测和分析:23andMe
2019/05/01 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
专业技术职务聘任书
2014/03/29 职场文书
推广普通话主题班会
2015/08/17 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis