WxLoginController.php 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2020-09-25
  6. * Time: 11:43
  7. */
  8. namespace api\js\controller;
  9. use api\js\model\JsDiscountModel;
  10. use api\js\model\JsModel;
  11. use api\js\model\UserDiscountModel;
  12. use api\js\model\UserModel;
  13. use cmf\controller\RestBaseController;
  14. use think\Db;
  15. class WxloginController extends RestBaseController
  16. {
  17. public function wxLogin()
  18. {
  19. $data['nickname'] = $this->request->param('nickname');
  20. $data['openid'] = $this->request->param('openid');
  21. $data['union_id'] = '微信平台';
  22. $data['avatar'] = $this->request->param('avatar');
  23. $data['type'] = $this->request->param('type');
  24. $info = Db::name('third_party_user')->where(['openid'=>$data['openid'],'union_id'=>$data['union_id'],'type'=>$data['type']])->find();
  25. if($info['user_id']){
  26. $findUserToken = Db::name("user_token")
  27. ->where('user_id', $info['user_id'])
  28. ->where('device_type', $this->deviceType)
  29. ->find();
  30. $currentTime = time();
  31. $expireTime = $currentTime + 24 * 3600 * 180;
  32. $token = md5(uniqid()) . md5(uniqid());
  33. if (empty($findUserToken)) {
  34. $result = Db::name("user_token")->insert([
  35. 'token' => $token,
  36. 'user_id' => $info['user_id'],
  37. 'expire_time' => $expireTime,
  38. 'create_time' => $currentTime,
  39. 'device_type' => $this->deviceType
  40. ]);
  41. } else {
  42. $result = Db::name("user_token")
  43. ->where('user_id', $info['user_id'])
  44. ->where('device_type', $this->deviceType)
  45. ->update([
  46. 'token' => $token,
  47. 'expire_time' => $expireTime,
  48. 'create_time' => $currentTime
  49. ]);
  50. }
  51. if (empty($result)) {
  52. $this->error("登录失败!");
  53. }
  54. Db::name('user')->where('id',$info['user_id'])->update(['last_login_ip'=>get_client_ip(),'last_login_time'=>time()]);
  55. $this->success("登录成功!", ['token' => $token,'id'=>$info['user_id']]);
  56. }else{
  57. if(!$info){
  58. $id = Db::name('third_party_user')->insertGetId($data);
  59. }else{
  60. $id = $info['id'];
  61. }
  62. $this->success('ok',['token'=>'','id'=>$id]);
  63. }
  64. }
  65. public function wxInfo(){
  66. $openid = $this->request->param('openid');
  67. $info = Db::name('third_party_user')->where('openid',$openid)->find();
  68. $this->success("登录成功!", ['wxInfo' => $info]);
  69. }
  70. public function bangding()
  71. {
  72. $openid = $this->request->param('openid');
  73. $mobile = $this->request->param('mobile');
  74. // $password = $this->request->param('password');
  75. $code = $this->request->param('code');
  76. $type = $this->request->param('type',1);
  77. $referral = $this->request->param('referral');
  78. // $district = $this->request->param('district');
  79. // $district_id = Db::name('region')->where('cityName',$district)->value('id');
  80. // $data['city_id'] = Db::name('region')->where('id',$district_id)->value('parentId');
  81. // $data['province_id'] = Db::name('region')->where('id',$data['city_id'])->value('parentId');
  82. // $data['district_id'] = $district_id;
  83. $user_type = 2;
  84. if($type == 2){
  85. $user_type = 3;
  86. }
  87. $where['mobile'] = $mobile;
  88. $where['user_type'] = $user_type;
  89. $bool = cmf_check_verification_code($mobile, $code);
  90. if ($bool) {
  91. $this->error($bool);
  92. }
  93. $UserModel = new UserModel();
  94. $user_id = $UserModel->where($where)->value('id');
  95. $info = Db::name('third_party_user')->where('openid',$openid)->where('type',$user_type)->find();
  96. if($user_id){
  97. // $user_info = $UserModel::get($user_id);
  98. // if(!$user_info['avatar']){
  99. // $up['avatar'] = $info['avatar'];
  100. // $UserModel::where('id',$user_id)->update(['avatar'=>$info['avatar']]);
  101. // }
  102. // if(!$user_info['user_nickname']){
  103. // $up['user_nickname'] = $info['nickname'];
  104. // }
  105. // $up['user_pass'] = cmf_password($password);
  106. // $UserModel::where('id',$user_id)->update($up);
  107. if($type == 2){
  108. $JsModel = new JsModel();
  109. $js_info = $JsModel::where('user_id',$user_id)->find();
  110. if(!$js_info){
  111. $JsModel->allowField(true)->isUpdate(false)->save(['user_id'=>$user_id]);
  112. }
  113. }
  114. }else{
  115. $data['mobile'] = $mobile;
  116. // $data['user_pass'] = cmf_password($password);
  117. $data['user_type'] = $user_type;
  118. $data['create_time'] = time();
  119. $data['referral'] = cmf_get_referral();
  120. if($referral){
  121. $parentInfo = $UserModel->where('referral',$referral)->find();
  122. if($parentInfo){
  123. $data['parent_id'] = $parentInfo['id'];
  124. $data['parent_id1'] = $parentInfo['parent_id'];
  125. }
  126. }
  127. $UserModel->allowField(true)->isUpdate(false)->save($data);
  128. // $JsDiscountModel = new JsDiscountModel();
  129. // $discountInfo = $JsDiscountModel::get(1);
  130. // if($discountInfo['dispark'] == 1){
  131. // if($discountInfo['quantit'] > 0){
  132. // $UserDiscountModel = new UserDiscountModel();
  133. // $draw_time = time();
  134. // $UserDiscountModel->allowField(true)->isUpdate(false)->save(['user_id'=>$UserModel->id,'discount_id'=>1,'draw_time'=>$draw_time,'past_time'=>($draw_time+($discountInfo['day_num']*24*3600)),'project_id'=>$discountInfo['project_id'],'store_id'=>$discountInfo['store_id']]);
  135. // $JsDiscountModel::where('id',1)->setDec('quantit',1);
  136. // }
  137. // }
  138. $user_id = $UserModel->id;
  139. }
  140. Db::name('third_party_user')->where('openid',$openid)->where('type',$user_type)->update(['user_id'=>$user_id]);
  141. $findUserToken = Db::name("user_token")
  142. ->where('user_id', $user_id)
  143. ->where('device_type', $this->deviceType)
  144. ->find();
  145. $currentTime = time();
  146. $expireTime = $currentTime + 24 * 3600 * 180;
  147. $token = md5(uniqid()) . md5(uniqid());
  148. if (empty($findUserToken)) {
  149. $result = Db::name("user_token")->insert([
  150. 'token' => $token,
  151. 'user_id' => $user_id,
  152. 'expire_time' => $expireTime,
  153. 'create_time' => $currentTime,
  154. 'device_type' => $this->deviceType
  155. ]);
  156. } else {
  157. $result = Db::name("user_token")
  158. ->where('user_id', $user_id)
  159. ->where('device_type', $this->deviceType)
  160. ->update([
  161. 'token' => $token,
  162. 'expire_time' => $expireTime,
  163. 'create_time' => $currentTime
  164. ]);
  165. }
  166. if (empty($result)) {
  167. $this->error("登录失败!");
  168. }
  169. Db::name('user')->where('id',$user_id)->update(['last_login_ip'=>get_client_ip(),'last_login_time'=>time()]);
  170. if($type == 2){
  171. $JsModel = new JsModel();
  172. $js_info = $JsModel::where('user_id',$user_id)->find();
  173. if(!$js_info){
  174. $JsModel->allowField(true)->isUpdate(true)->save(['user_id'=>$user_id]);
  175. }
  176. }
  177. $this->success("登录成功!", ['token' => $token,'id'=>$user_id]);
  178. }
  179. }