1 //授权控制器

2 <?php3 namespace app\index\controller;4 usethink\Controller;5 usethink\Db;6 usethink\Request;7 usethink\Session;8 class Index extendsController9 {10 private $clientId = "fea8cf1cfc75421e929115902f5a60cb";11 private $clientSecret = "286933c544380ac846be5f2938b7f276dee85132";12 private $accessToken;13 /**14 * 进入授权页面15 */

16 public functionindex(){17 return $this->fetch('Index/loginin');18 }19

20 /**21 * 授权接口22 * @throws \think\Exception23 * @throws \think\db\exception\DataNotFoundException24 * @throws \think\db\exception\ModelNotFoundException25 * @throws \think\exception\DbException26 * @throws \think\exception\PDOException27 */

28 public function login(Request $request)29 {30 $state = $request->param('state');31 //初始化数据库

32 $db = Db::connect('pfpartner');33

34 $data["code"] = $_GET["code"];35 $data["grant_type"] = "authorization_code";36 $data["client_id"] = $this->clientId;37 $data["client_secret"] = $this->clientSecret;38

39 $arr_header[] = "Content-Type:application/json";40 $resJson = http_request_post("http://open-api.pinduoduo.com/oauth/token",json_encode($data),true,$arr_header);41

42 $resArr = json_decode($resJson,true);43

44 $this->accessToken = $resArr['access_token'];45 $scope = json_encode($resArr['scope']);46

47

48 //判断该店铺是否授权过

49 $user = $db->name("open_user")->where('owner_id','=',$resArr['owner_id'])->find();50

51 //获取店铺信息

52 $shopJson = $this->getShopInfo();53 $shopInfo = json_decode($shopJson,true);54 if (empty($shopInfo["mall_info_get_response"])){55 return $this->redirect('http://pdd.shanyanzhineng.com');56 }57 /***店铺信息S*************************************/

58 $userInfo['logo'] = $shopInfo["mall_info_get_response"]['logo'];59 $userInfo['mall_name'] = $shopInfo["mall_info_get_response"]['mall_name'];60 $userInfo['mall_desc'] = $shopInfo["mall_info_get_response"]['mall_desc'];61 /***店铺信息E*************************************/

62

63 //var_dump($shopInfo);die;

64

65 $userInfo['owner_id'] = $resArr['owner_id'];66 $userInfo['owner_name'] = $resArr['owner_name'];67 $userInfo['login_num'] = $user['login_num']+1;68 $userInfo['login_time'] = date('Y-m-d H:i:s');69 $userInfo['access_token'] = $resArr['access_token'];70 $userInfo['expires_in'] = $resArr['expires_in'];71 $userInfo['refresh_token'] = $resArr['refresh_token'];72 $userInfo['scope'] = $scope;73 $userInfo['is_token'] = '0';74 $userInfo['is_cookie'] = '0';75

76 /***记录登录日志S*************************************/

77 $loginLog['owner_id'] = $resArr['owner_id'];78 $loginLog['mall_name'] = $shopInfo["mall_info_get_response"]['mall_name'];79 $loginLog['open_info'] = $resJson;80 $db->name("login_log")->insert($loginLog);81 /***记录登录日志E*************************************/

82

83 ///店铺之前未授权信息初始化S//

84 if (empty($user)){85 $userInfo['is_lock'] = '0';86 $userInfo['role'] = '0';87 $userInfo['state'] = '0';88 $userInfo['login_num'] = '1';89 $userInfo['lock_time'] = date('Y-m-d H:i:s', strtotime('7 days'));90 $userInfo['evaluate_time'] = date('Y-m-d H:i:s', time()-10);//最后评价时间

91 $userInfo['cookie_expires_time'] = date('Y-m-d H:i:s');//cookie被封时间

92 $userInfo['evaluate_task_time'] = date('Y-m-d H'.':00:00');//最后生成的评价任务结束时间

93

94 ///最后生成增量任务时间S

95 $whole = date('Y-m-d H'.':00:00');96 $half = date('Y-m-d H'.':30:00');97 $now = time();98 if ($now - strtotime($whole) >= 1800)99 {100 $userInfo['task_time'] = $half;101 }else{102 $userInfo['task_time'] = $whole;103 }104 ///最后生成增量任务时间E105

106 // var_dump($userInfo);die;

107 $addRes = $db->name("open_user")->insert($userInfo);108

109 //用户信息存入session

110 Session::set('user',$userInfo);111

112 ///新增请求执行任务等创建S//

113 $domain=$request->domain();114 $data['owner_id'] = $resArr['owner_id'];115 $data['mall_name'] = $shopInfo["mall_info_get_response"]['mall_name'];116 $this->request_by_fsockopen($domain.'/index/index/AsynProcess',$data,false);117 ///新增请求执行任务等创建E//

118 if ($addRes){119 return $this->redirect('index/Home/index',['code' => $state]);120 }else{121 return $this->error('新增失败');122 }123

124 }125 ///店铺之前未授权信息初始化E//

126

127

128 $updateRes = $db->name("open_user")->where('owner_id','=',$resArr['owner_id'])->update($userInfo);129

130 if ($updateRes){131 $updatedUser = $db->name("open_user")->where('owner_id','=',$resArr['owner_id'])->find();132 //用户信息存入session

133 Session::set('user',$updatedUser);134 return $this->redirect('index/Home/index',['code' => $state]);135 }else{136 return $this->error('更新失败');137 }138 }139

140 public function AsynProcess(Request $request){141 header("content-type:text/html;charset=utf-8");142 $param = $request->param();143 //初次授权生成八天的初始化订单任务

144 $this->InitializeOrderTask($param['owner_id']);145

146 //初次授权生成八天的初始化评价任务

147 $this->InitializeEvaluateTask($param['owner_id']);148

149 //初次授权生成一条dsr任务

150 $this->InitializeDsrTask($param['owner_id']);151

152 //初次授权生成七天数据统计和dsr统计

153 $this->InitializeStatistics($param['owner_id']);154

155 //初次授权记录初始期望dsr值

156 $this->saveInitDsr($param['owner_id']);157

158 //初次授权记录免费试用消费记录

159 $this->saveFreeRecord($param['owner_id'],$param['mall_name']);160

161 //file_put_contents("alipaytext4.txt",$param);

162

163 }164

165 /**166 * dsr_statistics和data_statistics表167 * @param $ownerId168 * @throws \think\Exception169 */

170 public function InitializeStatistics($ownerId){171 $db2 = Db::connect('pfpartner2');172 $yesterday = strtotime(date('Y-m-d',strtotime('-2 days')));173 $eightDaysAgo = strtotime(date('Y-m-d',strtotime('-8 days')));174

175 $data['owner_id'] = $ownerId;176 $data['add_order'] = 0;177 $data['logistics_order'] = 0;178 $data['remarks_order'] = 0;179 $data['evaluate_order'] = 0;180 $data['praise_order'] = 0;181 $data['effective_praise_order'] = 0;182 $data['logistics_status'] = 0;183

184 $dsr['owner_id'] = $ownerId;185 $dsr['dsr_score_describe'] = 0;186 $dsr['dsr_score_logistics'] = 0;187 $dsr['dsr_score_attitude'] = 0;188 $dsr['avgDescRevScrRcatePct3m'] = 0;189 $dsr['avgLgstRevScrRcatePct3m'] = 0;190 $dsr['avgServRevScrRcatePct3m'] = 0;191

192 for ($i = $eightDaysAgo;$i <= $yesterday;$i+=86400) {193 $data['data_date'] = date('Y-m-d',$i);194 $data['add_time'] = date('Y-m-d H:i:s');195

196 $dsr['data_date'] = date('Y-m-d',$i);197 $dsr['add_time'] = date('Y-m-d H:i:s');198

199 $db2->name('dsr_statistics')->insert($dsr);200 $db2->name('data_statistics')->insert($data);201 }202

203 $dsr['data_date'] = date('Y-m-d',strtotime('-1 days'));204 $dsr['add_time'] = date('Y-m-d H:i:s');205 $db2->name('dsr_statistics')->insert($dsr);206

207 }208

209 /**210 * dsr_task表211 * @param $ownerId212 * @throws \think\Exception213 */

214 public function InitializeDsrTask($ownerId){215 $db = Db::connect('pfpartner');216 $data['owner_id'] = $ownerId;217 $data['state'] = '0';218 $data['data_date'] = date('Y-m-d');219 $data['add_time'] = date('Y-m-d H:i:s');220 $db->name('dsr_task')->insert($data);221 }222

223 /**224 * evaluate_order和task_evaluate_page表225 * 当店铺初次授权生成八天的初始化评价任务226 * @access public227 * @param int $owner_id 店铺id228 */

229 public function InitializeEvaluateTask($ownerId)230 { //3600 = 1h 86400 = 24h

231 $db = Db::connect('pfpartner');232 $now = strtotime(date('Y-m-d H'.':00:00'));233 $eightAgo = strtotime(date('Y-m-d',strtotime('-8 days')));234 for ($i = $eightAgo;$i < $now;$i+=3600){235 $data['owner_id'] = $ownerId;236 $data['state'] = '0';237 $data['type'] = '0';238 $data['start_time'] = date('Y-m-d H:i:s',$i);239 $data['end_time'] = date('Y-m-d H:i:s',$i+3599);;240 $data['add_time'] = date('Y-m-d H:i:s');241 $data['task_id'] = $db->name('evaluate_order')->insertGetId($data);242 unset($data['type']);243 $db->name('task_evaluate_page')->insert($data);244 unset($data);245 }246 }247

248 /**249 * task_order和task_orderincrement_page表250 * 当店铺初次授权生成八天的初始化订单任务251 * @access public252 * @param int $owner_id 店铺id253 */

254 public function InitializeOrderTask($ownerId)255 {256 $owner_id = $ownerId;257 $db = Db::connect('pfpartner');#选择执行的数据库

258

259 for ($i=1; $i <8 ; $i++) {260 $taskArr["owner_id"] = $owner_id;261 $taskArr["state"] = 0;262 $taskArr["type"] = 0;263 $taskArr["start_time"] = date("Y-m-d",strtotime("-".$i." day"))." 00:00:00";264 $taskArr["end_time"] = date("Y-m-d",strtotime("-".$i." day"))." 23:59:59";265 $taskArr["add_time"] = date("Y-m-d H:i:s");266

267 $taskOrderArr["owner_id"] = $owner_id;268 $taskOrderArr["state"] = 0;269 $taskOrderArr["start_time"] = date("Y-m-d",strtotime("-".$i." day"))." 00:00:00";270 $taskOrderArr["end_time"] = date("Y-m-d",strtotime("-".$i." day"))." 23:59:59";271 $taskOrderArr["page"] = 1;272 $taskOrderArr["add_time"] = date("Y-m-d H:i:s");273

274 $taskOrderArr["task_id"] = $db->name("task_order")->insertGetId($taskArr);275 $db->name("task_orderincrement_page")->insert($taskOrderArr);276 }277

278 $start = strtotime(date('Y-m-d'));279 //$now = strtotime(date('Y-m-d 17'.':29:00'));

280 $now = time();281 for ($j = $start; $j <= $now; $j+=1800){282

283 if ($j+1800 > $now){284 break;285 }286 $taskArr1["owner_id"] = $owner_id;287 $taskArr1["state"] = 0;288 $taskArr1["type"] = 1;289 $taskArr1["start_time"] = date("Y-m-d H:i:s",$j);290 $taskArr1["end_time"] = date("Y-m-d H:i:s",$j+1800);291 $taskArr1["add_time"] = date("Y-m-d H:i:s");292

293 $taskOrderArr1["owner_id"] = $owner_id;294 $taskOrderArr1["state"] = 0;295 $taskOrderArr1["start_time"] = date("Y-m-d H:i:s",$j);296 $taskOrderArr1["end_time"] = date("Y-m-d H:i:s",$j+1800);297 $taskOrderArr1["page"] = 1;298 $taskOrderArr1["type"] = 1;299 $taskOrderArr1["add_time"] = date("Y-m-d H:i:s");300

301 $taskOrderArr1["task_id"] = $db->name("task_order")->insertGetId($taskArr1);302 $db->name("task_orderincrement_page")->insert($taskOrderArr1);303 unset($taskArr1);304 unset($taskOrderArr1);305 }306 }307

308 /**309 * evaluation_rules表310 * 当店铺初次授权生成初始化期望dsr值311 * @param $ownerId312 * @throws \think\Exception313 */

314 public function saveInitDsr($ownerId){315 $db2 = Db::connect('pfpartner2');316 $evaluationRule['owner_id'] = $ownerId;317 $evaluationRule['default_evaluate'] = '1';318 $evaluationRule['remarks_evaluate'] = '1';319 $evaluationRule['dsr_score_describe'] = '5';320 $evaluationRule['dsr_score_logistics'] = '5';321 $evaluationRule['dsr_score_attitude'] = '5';322 $db2->name('evaluation_rules')->insert($evaluationRule);323 }324

325 /**326 * purchase_record表327 * 当店铺初次授权生成初始化免费试用记录328 * @param $ownerId329 * @param $mallName330 * @throws \think\Exception331 */

332 public function saveFreeRecord($ownerId,$mallName){333 $db2 = Db::connect('pfpartner2');334 $initRecord['owner_id'] = $ownerId;335 $initRecord['mall_name'] = $mallName;336 $initRecord['data_date'] = date('Y-m-d');337 $initRecord['product_name'] = '免费试用';338 $initRecord['product_type'] = '2';339 $initRecord['payment_method'] = '2';340 $initRecord['product_details'] = '免费试用';341 $initRecord['start_time'] = date('Y-m-d H:i:s');342 $initRecord['end_time'] = date('Y-m-d H:i:s', strtotime('7 days'));343 $initRecord['day'] = '7';344 $initRecord['original_price'] = '0';345 $initRecord['discount_price'] = '0';346 $initRecord['actual_price'] = '0';347 $db2->name('purchase_record')->insert($initRecord);348

349 }350

351 /**352 * 异步请求函数353 * @param $url354 * @param array $post_data355 * @param bool $debug356 * @return bool357 */

358 public function request_by_fsockopen($url,$post_data=array(),$debug=false){359 $url_array = parse_url($url);360 $hostname = $url_array['host'];361 $port = isset($url_array['port'])? $url_array['port'] : 80;362 //@$requestPath = $url_array['path'] ."?". $url_array['query'];

363 @$requestPath = $url_array['path'];364

365 $fp = fsockopen($hostname, $port, $errno, $errstr, 10);366 if (!$fp) {367 echo "$errstr ($errno)";368 return false;369 }370 $method = "GET";371 if(!empty($post_data)){372 $method = "POST";373 }374 $header = "$method $requestPath HTTP/1.1\r\n";375 $header.="Host: $hostname\r\n";376 if(!empty($post_data)){377 $_post = strval(NULL);378 foreach($post_data as $k => $v){379 $_post[]= $k."=".urlencode($v);//必须做url转码以防模拟post提交的数据中有&符而导致post参数键值对紊乱

380 }381 $_post = implode('&', $_post);382 $header .= "Content-Type: application/x-www-form-urlencoded\r\n";//POST数据

383 $header .= "Content-Length: ". strlen($_post) ."\r\n";//POST数据的长度

384 $header.="Connection: Close\r\n\r\n";//长连接关闭

385 $header .= $_post; //传递POST数据

386 }else{387 $header.="Connection: Close\r\n\r\n";//长连接关闭

388 }389 fwrite($fp, $header);390 //-----------------调试代码区间-----------------391 //注如果开启下面的注释,异步将不生效可是方便调试

392 if($debug){393 $html = '';394 while (!feof($fp)) {395 $html.=fgets($fp);396 }397 echo $html;398 }399 //-----------------调试代码区间-----------------

400 fclose($fp);401 }402

403 public functiongetShopInfo(){404 $data["type"] = "pdd.mall.info.get";405 $data["client_id"] = $this->clientId;406 $data["client_secret"] = $this->clientSecret;407 $data["timestamp"] = '1527065024';408 $data["access_token"]=$this->accessToken;//access_token

409 $data["data_type"] = 'JSON';410

411 $dataWithSign = getSign($data);412 //var_dump($dataWithSign);

413 $res = http_request_post("http://gw-api.pinduoduo.com/api/router",$dataWithSign);414 return $res;415 }416 }

php拼多多登录下单接口,对接拼多多授权登录及店铺信息接口_tp5相关推荐

  1. 对接支付宝人脸识别和获取用户信息接口

    h5通过服务端调用支付宝接口获取用户信息 前提介绍 功能快捷键 总结 前提介绍 通过对接支付宝的接口,实现在移动端(安卓和ios)通过唤醒手机上的支付宝应用,调用支付宝的人脸识别实现实人认证;通过移动 ...

  2. springboot整合qq登录<1.前置要求和授权登录原理>

    目录 1.前置要求和授权登录原理 2.读取自定义json配置文件信息 3.获取跳转url和回调的接口 4.使用websocket和前端建立连接 5.对接qq登录的流程 前置要求 在使用qq登录之前需要 ...

  3. ios微信登录不上服务器,iOS微信授权登录

    首先需要确保你的App应用在微信开发平台上注册创建并获得对应的接口,对应登录.支付等功能还涉及付费,具体申请流程就不再这里说了.到开放平台->管理中心->移动应用->查看应用,确认你 ...

  4. uni app和php开发微信登录代码,uniapp如何实现微信授权登录

    uniapp实现微信授权登录的方法:首先获取对应的appid和appsecret:然后在uniapp项目的manifest.json中进行APP SDK配置和模块权限配置.最后实现编码. 本教程操作环 ...

  5. php微信登录代理转发,PHP微信网页授权登录

    PHP微信网页授权登录 2018年04月10日 15:44:03阅读数:601 namespace Org\WeChat; /** * 微信授权相关接口 */ class Wechat { //高级功 ...

  6. app登录时用QQ或者微信授权登录,及找回密码功能

    前部分是QQ授权登录的,想看微信授权的直接跳下面 1.个人希望做到的饿效果效果如优酷的授权登录,但前提是你的应用必须在应用市场上架之后才可以做授权登录的操作 参照 :http://blog.csdn. ...

  7. SpringBoot + Spring Security多种登录方式:账号+微信网页授权登录

    一.概述 实现账号用户名+微信网页授权登录集成在Spring Security的思路,最重要的一点是要实现微信登录通过Spring Security安全框架时,不需要验证账号.密码. 二.准备工作 要 ...

  8. 小程序微信授权登录服务器异常,微信小程序授权登录流程(强制绑定手机号码)...

    本文作为多平台用户登录模块设计的扩展设计,即以手机号作为用户的唯一凭证. (图片摘自 2018.10.30) 小程序与服务器是通过自定义登录态来识别用户身份的,以下简称口令(token). 由于微信未 ...

  9. 免费快递单号查询api接口对接调用demo地址

    应用场景: 最常见的应用场景如下: (1)电商网站:例如B2C.团购.B2B.批发分销站.C2C.本地生活交易等网站. (2)管理系统:订单处理平台.订货平台.发货平台.分销系统.渠道管理系统.客户管 ...

最新文章

  1. C# winform版 nbtstat
  2. nodejs之connect
  3. spring mvc在Controller中获取ApplicationContext
  4. Angualr 加载速度慢,为页面初始化完成前添加loading
  5. 实现简单render函数
  6. 常见设计稿字体对应字重font-weight大小
  7. Mugeda(木疙瘩)H5案例课—教你做魔性H5弹幕-岑远科-专题视频课程
  8. 灌篮高手湘北高中原型
  9. python圣诞节祝福_Pyhton表白代码——浪漫圣诞节
  10. 注解和反射复习——B站
  11. POWERVR 是什么
  12. 【Pygame实战】妈耶~这款经典的《俄罗斯方块儿》竟这么厉害......
  13. SQLserver的Always On 可用性组
  14. 新型付费服务能否在IT领域异军突起?
  15. VBS--Microsoft Visual Basic Script Edition(一)
  16. “九章”问世了,RSA算法在量子计算机面前还安全吗?
  17. corn表达式生成器
  18. TCP标志位 RST作用、原理、攻击
  19. vue点击按钮显示弹窗写法
  20. mka是什么格式?mka如何转换mp3?

热门文章

  1. 基于IRT和CRT的试题难度计算控制算法
  2. 数组起泡排序C语言编程,C语言之起泡排序法总结
  3. 1号店登录页(共5页)
  4. 初中计算机ppt速学,图片基本处理方法ppt课件初中信息技术苏科课标版七年级全一册课件_3.ppt...
  5. [Unity]怎么做个桌面宠物精灵desktop mascot
  6. Golang使用go.mod配置加载本地模块
  7. LIEBE餐盘机自带微信订餐程序源代码
  8. 胜利之日起源服务器无响应,《胜利之日》刷不出服务器解决方法
  9. 叨叨记账APP产品体验报告
  10. Linux U盘助手(一)