Register.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\member;
  11. use addon\wechat\model\Message as WechatMessage;
  12. use app\model\BaseModel;
  13. use app\model\message\Sms;
  14. use addon\coupon\model\Coupon;
  15. use app\model\system\Stat;
  16. /**
  17. * 登录
  18. *
  19. * @author Administrator
  20. *
  21. */
  22. class Register extends BaseModel
  23. {
  24. /**
  25. * 用户名密码注册(必传username, password),之前检测重复性,判断用户名是否为手机,邮箱
  26. * @param $data
  27. * @return array|mixed
  28. */
  29. public function usernameRegister($data)
  30. {
  31. $examine_username_exit = $this->usernameExist($data[ 'username' ], $data[ 'site_id' ]);
  32. if ($examine_username_exit) return $this->error('', '用户名已存在');
  33. $this->cancelBind($data);
  34. $member_level = new MemberLevel();
  35. $member_level_info = $member_level->getMemberLevelInfo([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'level_type', '=', 0 ], [ 'growth', '=', 0 ] ], '*')[ 'data' ];
  36. if (isset($data[ 'source_member' ]) && !empty($data[ 'source_member' ])) {
  37. $count = model("member")->getCount([ [ 'member_id', '=', $data[ 'source_member' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  38. if (!$count) $data[ 'source_member' ] = 0;
  39. }
  40. $nickname = $data[ 'username' ];
  41. if (isset($data[ 'nickname' ]) && !empty($data[ 'nickname' ])) {
  42. $nickname = preg_replace_callback('/./u',
  43. function(array $match) {
  44. return strlen($match[ 0 ]) >= 4 ? '' : $match[ 0 ];
  45. },
  46. $data[ 'nickname' ]);
  47. }
  48. $data_reg = [
  49. 'site_id' => $data[ 'site_id' ],
  50. 'source_member' => isset($data[ 'source_member' ]) ? $data[ 'source_member' ] : 0,
  51. 'username' => $data[ 'username' ],
  52. 'nickname' => $nickname, //默认昵称为用户名
  53. 'password' => data_md5($data[ 'password' ]),
  54. 'qq_openid' => isset($data[ 'qq_openid' ]) ? $data[ 'qq_openid' ] : '',
  55. 'wx_openid' => isset($data[ 'wx_openid' ]) ? $data[ 'wx_openid' ] : '',
  56. 'weapp_openid' => isset($data[ 'weapp_openid' ]) ? $data[ 'weapp_openid' ] : '',
  57. 'wx_unionid' => isset($data[ 'wx_unionid' ]) ? $data[ 'wx_unionid' ] : '',
  58. 'ali_openid' => isset($data[ 'ali_openid' ]) ? $data[ 'ali_openid' ] : '',
  59. 'baidu_openid' => isset($data[ 'baidu_openid' ]) ? $data[ 'baidu_openid' ] : '',
  60. 'toutiao_openid' => isset($data[ 'toutiao_openid' ]) ? $data[ 'toutiao_openid' ] : '',
  61. 'headimg' => isset($data[ 'headimg' ]) ? $data[ 'headimg' ] : '',
  62. 'member_level' => !empty($member_level_info) ? $member_level_info[ 'level_id' ] : 0,
  63. 'member_level_name' => !empty($member_level_info) ? $member_level_info[ 'level_name' ] : '',
  64. 'is_member' => !empty($member_level_info) ? 1 : 0,
  65. 'member_time' => !empty($member_level_info) ? time() : 0,
  66. 'reg_time' => time(),
  67. 'login_time' => time(),
  68. 'last_login_time' => time(),
  69. 'login_type' => $data[ 'app_type' ] ?? '',
  70. 'login_type_name' => $data[ 'app_type_name' ] ?? '',
  71. ];
  72. $res = model("member")->add($data_reg);
  73. if ($res) {
  74. // 发放等级奖励
  75. if (!empty($member_level_info)) {
  76. $member_account_model = new MemberAccount();
  77. //赠送红包
  78. if ($member_level_info[ 'send_balance' ] > 0) {
  79. $balance = $member_level_info[ 'send_balance' ];
  80. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'balance', $balance, 'upgrade', '会员升级得红包' . $balance, '会员等级升级奖励');
  81. }
  82. //赠送积分
  83. if ($member_level_info[ 'send_point' ] > 0) {
  84. $send_point = $member_level_info[ 'send_point' ];
  85. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'point', $send_point, 'upgrade', '会员升级得积分' . $send_point, '会员等级升级奖励');
  86. }
  87. //给用户发放优惠券
  88. $coupon_model = new Coupon();
  89. $coupon_array = empty($member_level_info[ 'send_coupon' ]) ? [] : explode(',', $member_level_info[ 'send_coupon' ]);
  90. if (!empty($coupon_array)) {
  91. foreach ($coupon_array as $k => $v) {
  92. $coupon_model->receiveCoupon($v, $data[ 'site_id' ], $res, 3);
  93. }
  94. }
  95. }
  96. //会员注册事件
  97. event("MemberRegister", [ 'member_id' => $res, 'site_id' => $data[ 'site_id' ] ]);
  98. $data[ 'member_id' ] = $res;
  99. $this->pullHeadimg($data);
  100. //更新最后访问时间
  101. Member::modifyLastVisitTime($res);
  102. //添加统计
  103. $stat = new Stat();
  104. $stat->switchStat([ 'type' => 'add_member', 'data' => [ 'member_count' => 1, 'site_id' => $data[ 'site_id' ] ] ]);
  105. return $this->success($res);
  106. } else {
  107. return $this->error();
  108. }
  109. }
  110. /**
  111. * 手机号密码注册(必传mobile, password),之前检测重复性
  112. * @param $data
  113. * @return array|mixed
  114. */
  115. public function mobileRegister($data)
  116. {
  117. $examine_mobile_exit = $this->mobileExist($data[ 'mobile' ], $data[ 'site_id' ]);
  118. if ($examine_mobile_exit) return $this->error('', '手机号已存在');
  119. $this->cancelBind($data);
  120. $member_level = new MemberLevel();
  121. $member_level_info = $member_level->getMemberLevelInfo([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'level_type', '=', 0 ], [ 'growth', '=', 0 ] ], '*')[ 'data' ];
  122. if (isset($data[ 'source_member' ]) && !empty($data[ 'source_member' ])) {
  123. $count = model("member")->getCount([ [ 'member_id', '=', $data[ 'source_member' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  124. if (!$count) $data[ 'source_member' ] = 0;
  125. }
  126. $nickname = $data[ 'mobile' ];
  127. if (isset($data[ 'nickname' ]) && !empty($data[ 'nickname' ])) {
  128. $nickname = preg_replace_callback('/./u',
  129. function(array $match) {
  130. return strlen($match[ 0 ]) >= 4 ? '' : $match[ 0 ];
  131. },
  132. $data[ 'nickname' ]);
  133. }
  134. $data_reg = [
  135. 'site_id' => $data[ 'site_id' ],
  136. 'source_member' => isset($data[ 'source_member' ]) ? $data[ 'source_member' ] : 0,
  137. 'mobile' => $data[ 'mobile' ],
  138. 'nickname' => $nickname, //默认昵称为手机号
  139. 'password' => isset($data[ 'password' ]) && !empty($data[ 'password' ]) ? data_md5($data[ 'password' ]) : '',
  140. 'qq_openid' => isset($data[ 'qq_openid' ]) ? $data[ 'qq_openid' ] : '',
  141. 'wx_openid' => isset($data[ 'wx_openid' ]) ? $data[ 'wx_openid' ] : '',
  142. 'weapp_openid' => isset($data[ 'weapp_openid' ]) ? $data[ 'weapp_openid' ] : '',
  143. 'wx_unionid' => isset($data[ 'wx_unionid' ]) ? $data[ 'wx_unionid' ] : '',
  144. 'ali_openid' => isset($data[ 'ali_openid' ]) ? $data[ 'ali_openid' ] : '',
  145. 'baidu_openid' => isset($data[ 'baidu_openid' ]) ? $data[ 'baidu_openid' ] : '',
  146. 'toutiao_openid' => isset($data[ 'toutiao_openid' ]) ? $data[ 'toutiao_openid' ] : '',
  147. 'headimg' => isset($data[ 'headimg' ]) ? $data[ 'headimg' ] : '',
  148. 'member_level' => !empty($member_level_info) ? $member_level_info[ 'level_id' ] : 0,
  149. 'member_level_name' => !empty($member_level_info) ? $member_level_info[ 'level_name' ] : '',
  150. 'is_member' => !empty($member_level_info) ? 1 : 0,
  151. 'member_time' => !empty($member_level_info) ? time() : 0,
  152. 'reg_time' => time(),
  153. 'login_time' => time(),
  154. 'last_login_time' => time(),
  155. 'is_edit_username' => 1,
  156. 'login_type' => $data[ 'app_type' ] ?? '',
  157. 'login_type_name' => $data[ 'app_type_name' ] ?? '',
  158. 'username' => isset($data[ 'username' ]) ? $data[ 'username' ] : $this->createRandUsername($data[ 'site_id' ])
  159. ];
  160. $res = model("member")->add($data_reg);
  161. if ($res) {
  162. if (!empty($member_level_info)) {
  163. $member_account_model = new MemberAccount();
  164. //赠送红包
  165. if ($member_level_info[ 'send_balance' ] > 0) {
  166. $balance = $member_level_info[ 'send_balance' ];
  167. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'balance', $balance, 'upgrade', '会员升级得红包' . $balance, '会员等级升级奖励');
  168. }
  169. //赠送积分
  170. if ($member_level_info[ 'send_point' ] > 0) {
  171. $send_point = $member_level_info[ 'send_point' ];
  172. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'point', $send_point, 'upgrade', '会员升级得积分' . $send_point, '会员等级升级奖励');
  173. }
  174. //给用户发放优惠券
  175. $coupon_model = new Coupon();
  176. $coupon_array = empty($member_level_info[ 'send_coupon' ]) ? [] : explode(',', $member_level_info[ 'send_coupon' ]);
  177. if (!empty($coupon_array)) {
  178. foreach ($coupon_array as $k => $v) {
  179. $coupon_model->receiveCoupon($v, $data[ 'site_id' ], $res, 3);
  180. }
  181. }
  182. }
  183. //会员注册事件
  184. event("MemberRegister", [ 'member_id' => $res, 'site_id' => $data[ 'site_id' ] ]);
  185. $data[ 'member_id' ] = $res;
  186. $this->pullHeadimg($data);
  187. //更新最后访问时间
  188. Member::modifyLastVisitTime($res);
  189. //添加统计
  190. $stat = new Stat();
  191. $stat->switchStat([ 'type' => 'add_member', 'data' => [ 'member_count' => 1, 'site_id' => $data[ 'site_id' ] ] ]);
  192. return $this->success($res);
  193. } else {
  194. return $this->error();
  195. }
  196. }
  197. /**
  198. * 第三方注册
  199. * @param $data
  200. */
  201. public function authRegister($data)
  202. {
  203. $this->cancelBind($data);
  204. $member_level = new MemberLevel();
  205. $member_level_info = $member_level->getMemberLevelInfo([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'level_type', '=', 0 ], [ 'growth', '=', 0 ] ], '*')[ 'data' ];
  206. if (isset($data[ 'source_member' ]) && !empty($data[ 'source_member' ])) {
  207. $count = model("member")->getCount([ [ 'member_id', '=', $data[ 'source_member' ] ], [ 'site_id', '=', $data[ 'site_id' ] ] ]);
  208. if (!$count) $data[ 'source_member' ] = 0;
  209. }
  210. $username = $this->createRandUsername($data[ 'site_id' ]);
  211. $nickname = $username;
  212. if (isset($data[ 'nickName' ]) && !empty($data[ 'nickName' ])) {
  213. $nickname = preg_replace_callback('/./u',
  214. function(array $match) {
  215. return strlen($match[ 0 ]) >= 4 ? '' : $match[ 0 ];
  216. },
  217. $data[ 'nickName' ]);
  218. }
  219. $data_reg = [
  220. 'site_id' => $data[ 'site_id' ],
  221. 'source_member' => isset($data[ 'source_member' ]) ? $data[ 'source_member' ] : 0,
  222. 'username' => $username,
  223. 'nickname' => $nickname,
  224. 'password' => '',
  225. 'qq_openid' => isset($data[ 'qq_openid' ]) ? $data[ 'qq_openid' ] : '',
  226. 'wx_openid' => isset($data[ 'wx_openid' ]) ? $data[ 'wx_openid' ] : '',
  227. 'weapp_openid' => isset($data[ 'weapp_openid' ]) ? $data[ 'weapp_openid' ] : '',
  228. 'wx_unionid' => isset($data[ 'wx_unionid' ]) ? $data[ 'wx_unionid' ] : '',
  229. 'ali_openid' => isset($data[ 'ali_openid' ]) ? $data[ 'ali_openid' ] : '',
  230. 'baidu_openid' => isset($data[ 'baidu_openid' ]) ? $data[ 'baidu_openid' ] : '',
  231. 'toutiao_openid' => isset($data[ 'toutiao_openid' ]) ? $data[ 'toutiao_openid' ] : '',
  232. 'headimg' => isset($data[ 'avatarUrl' ]) ? $data[ 'avatarUrl' ] : '',
  233. 'member_level' => !empty($member_level_info) ? $member_level_info[ 'level_id' ] : 0,
  234. 'member_level_name' => !empty($member_level_info) ? $member_level_info[ 'level_name' ] : '',
  235. 'is_member' => !empty($member_level_info) ? 1 : 0,
  236. 'member_time' => !empty($member_level_info) ? time() : 0,
  237. 'reg_time' => time(),
  238. 'login_time' => time(),
  239. 'last_login_time' => time(),
  240. 'is_edit_username' => 1,
  241. 'login_type' => $data[ 'app_type' ] ?? '',
  242. 'login_type_name' => $data[ 'app_type_name' ] ?? '',
  243. ];
  244. $res = model("member")->add($data_reg);
  245. if ($res) {
  246. if (!empty($member_level_info)) {
  247. $member_account_model = new MemberAccount();
  248. //赠送红包
  249. if ($member_level_info[ 'send_balance' ] > 0) {
  250. $balance = $member_level_info[ 'send_balance' ];
  251. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'balance', $balance, 'upgrade', '会员升级得红包' . $balance, '会员等级升级奖励');
  252. }
  253. //赠送积分
  254. if ($member_level_info[ 'send_point' ] > 0) {
  255. $send_point = $member_level_info[ 'send_point' ];
  256. $member_account_model->addMemberAccount($data[ 'site_id' ], $res, 'point', $send_point, 'upgrade', '会员升级得积分' . $send_point, '会员等级升级奖励');
  257. }
  258. //给用户发放优惠券
  259. $coupon_model = new Coupon();
  260. $coupon_array = empty($member_level_info[ 'send_coupon' ]) ? [] : explode(',', $member_level_info[ 'send_coupon' ]);
  261. if (!empty($coupon_array)) {
  262. foreach ($coupon_array as $k => $v) {
  263. $coupon_model->receiveCoupon($v, $data[ 'site_id' ], $res, 3);
  264. }
  265. }
  266. }
  267. //会员注册事件
  268. event("MemberRegister", [ 'member_id' => $res, 'site_id' => $data[ 'site_id' ] ]);
  269. $data[ 'member_id' ] = $res;
  270. $this->pullHeadimg($data);
  271. //更新最后访问时间
  272. Member::modifyLastVisitTime($res);
  273. //添加统计
  274. $stat = new Stat();
  275. // $stat->addShopStat([ 'member_count' => 1, 'site_id' => $data[ 'site_id' ] ]);
  276. $stat->switchStat([ 'type' => 'add_member', 'data' => [ 'member_count' => 1, 'site_id' => $data[ 'site_id' ] ] ]);
  277. return $this->success($res);
  278. } else {
  279. return $this->error();
  280. }
  281. }
  282. /**
  283. * 生成随机用户名
  284. * @param $site_id
  285. */
  286. private function createRandUsername($site_id)
  287. {
  288. $usernamer = 'u_' . random_keys(10);
  289. $count = model('member')->getCount([ [ 'username', '=', $usernamer ], [ 'site_id', '=', $site_id ] ]);
  290. if ($count) {
  291. $usernamer = $this->createRandUsername($site_id);
  292. return $usernamer;
  293. } else {
  294. return $usernamer;
  295. }
  296. }
  297. /**
  298. * 清除账号绑定(用户重新进行绑定)
  299. * @param $data
  300. * @return array
  301. */
  302. public function cancelBind($data)
  303. {
  304. $data = [
  305. 'qq_openid' => isset($data[ 'qq_openid' ]) ? $data[ 'qq_openid' ] : '',
  306. 'wx_openid' => isset($data[ 'wx_openid' ]) ? $data[ 'wx_openid' ] : '',
  307. 'weapp_openid' => isset($data[ 'weapp_openid' ]) ? $data[ 'weapp_openid' ] : '',
  308. 'wx_unionid' => isset($data[ 'wx_unionid' ]) ? $data[ 'wx_unionid' ] : '',
  309. 'ali_openid' => isset($data[ 'ali_openid' ]) ? $data[ 'ali_openid' ] : '',
  310. 'baidu_openid' => isset($data[ 'baidu_openid' ]) ? $data[ 'baidu_openid' ] : '',
  311. 'toutiao_openid' => isset($data[ 'toutiao_openid' ]) ? $data[ 'toutiao_openid' ] : '',
  312. 'site_id' => $data[ 'site_id' ]
  313. ];
  314. if (!empty($data[ 'qq_openid' ])) {
  315. model("member")->update([ 'qq_openid' => '' ], [ [ 'qq_openid', '=', $data[ 'qq_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  316. }
  317. if (!empty($data[ 'wx_openid' ])) {
  318. model("member")->update([ 'wx_openid' => '' ], [ [ 'wx_openid', '=', $data[ 'wx_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  319. }
  320. if (!empty($data[ 'weapp_openid' ])) {
  321. model("member")->update([ 'weapp_openid' => '' ], [ [ 'weapp_openid', '=', $data[ 'weapp_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  322. }
  323. if (!empty($data[ 'wx_unionid' ])) {
  324. model("member")->update([ 'wx_unionid' => '' ], [ [ 'wx_unionid', '=', $data[ 'wx_unionid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  325. }
  326. if (!empty($data[ 'ali_openid' ])) {
  327. model("member")->update([ 'ali_openid' => '' ], [ [ 'ali_openid', '=', $data[ 'ali_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  328. }
  329. if (!empty($data[ 'baidu_openid' ])) {
  330. model("member")->update([ 'baidu_openid' => '' ], [ [ 'baidu_openid', '=', $data[ 'baidu_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  331. }
  332. if (!empty($data[ 'toutiao_openid' ])) {
  333. model("member")->update([ 'toutiao_openid' => '' ], [ [ 'toutiao_openid', '=', $data[ 'toutiao_openid' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  334. }
  335. return $this->success();
  336. }
  337. /**
  338. * 重置用户微信openid
  339. * @param $data
  340. * @return array
  341. */
  342. public function wxopenidBind($data)
  343. {
  344. $res = model("member")->update([ 'wx_openid' => $data[ 'wx_openid' ] ], [ [ 'member_id', '=', $data[ 'member_id' ] ], [ 'site_id', '=', $data[ 'site_id' ] ], [ 'is_delete', '=', 0 ] ]);
  345. if ($res) {
  346. return $this->success($res);
  347. } else {
  348. return $this->error();
  349. }
  350. }
  351. /**
  352. * 检测用户存在性(用户名)
  353. * @param $username
  354. * @return int
  355. */
  356. public function usernameExist($username, $site_id)
  357. {
  358. $member_info = model("member")->getInfo(
  359. [
  360. [ 'username|mobile', '=', $username ],
  361. [ 'site_id', '=', $site_id ],
  362. [ 'is_delete', '=', 0 ]
  363. ], 'member_id'
  364. );
  365. if (!empty($member_info)) {
  366. return 1;
  367. } else {
  368. return 0;
  369. }
  370. }
  371. /**
  372. * 检测用户存在性(用户名) 存在返回1
  373. * @param $mobile
  374. * @return int
  375. */
  376. public function mobileExist($mobile, $site_id)
  377. {
  378. $member_info = model("member")->getInfo([
  379. [ 'mobile', '=', $mobile ],
  380. [ 'site_id', '=', $site_id ],
  381. [ 'is_delete', '=', 0 ] ], 'member_id');
  382. if (!empty($member_info)) {
  383. return 1;
  384. } else {
  385. return 0;
  386. }
  387. }
  388. /**
  389. * 检测用户存在性(wx_openid) 存在返回1 新增2021.06.18
  390. * @param $mobile
  391. * @return int
  392. */
  393. public function openidExist($mobile, $site_id)
  394. {
  395. $member_info = model("member")->getInfo(
  396. [
  397. [ 'mobile', '=', $mobile ],
  398. [ 'site_id', '=', $site_id ],
  399. [ 'is_delete', '=', 0 ]
  400. ], 'wx_openid'
  401. );
  402. if (!empty($member_info[ 'wx_openid' ])) {
  403. return 1;
  404. } else {
  405. return 0;
  406. }
  407. }
  408. /**
  409. * 获取用户ID 新增2021.06.18
  410. * @param $mobile
  411. * @return int
  412. */
  413. public function getMemberId($mobile, $site_id)
  414. {
  415. $member_info = model("member")->getInfo(
  416. [
  417. [ 'mobile', '=', $mobile ],
  418. [ 'site_id', '=', $site_id ],
  419. [ 'is_delete', '=', 0 ]
  420. ], 'member_id'
  421. );
  422. if (!empty($member_info)) {
  423. return $member_info[ 'member_id' ];
  424. } else {
  425. return 0;
  426. }
  427. }
  428. /**
  429. * 注册发送验证码
  430. * @param $data
  431. * @return array|mixed|void
  432. */
  433. public function registerCode($data)
  434. {
  435. //发送短信
  436. $sms_model = new Sms();
  437. $var_parse = array (
  438. "code" => $data[ "code" ],//验证码
  439. );
  440. $data[ "sms_account" ] = $data[ "mobile" ] ?? '';//手机号
  441. $data[ "var_parse" ] = $var_parse;
  442. $sms_result = $sms_model->sendMessage($data);
  443. if ($sms_result[ "code" ] < 0)
  444. return $sms_result;
  445. return $this->success();
  446. }
  447. /**
  448. * 注册成功通知
  449. * @param $data
  450. * @return array|mixed|void
  451. */
  452. public function registerSuccess($data)
  453. {
  454. $member_model = new Member();
  455. $member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $data[ "member_id" ] ] ], "username,mobile,email,reg_time,wx_openid,last_login_type,nickname");
  456. $member_info = $member_info_result[ "data" ];
  457. $name = $member_info[ "nickname" ] == '' ? $member_info[ "mobile" ] : $member_info[ "nickname" ];
  458. //发送短信
  459. $var_parse = [
  460. "shopname" => replaceSpecialChar($data[ 'site_info' ][ 'site_name' ]), //商城名称
  461. "username" => replaceSpecialChar($name), //会员名称
  462. ];
  463. $data[ "sms_account" ] = $member_info[ "mobile" ] ?? '';//手机号
  464. $data[ "var_parse" ] = $var_parse;
  465. $sms_model = new Sms();
  466. $sms_result = $sms_model->sendMessage($data);
  467. // if ($sms_result["code"] < 0) return $sms_result;
  468. //发送模板消息
  469. $wechat_model = new WechatMessage();
  470. $data[ "openid" ] = $member_info[ "wx_openid" ];
  471. $data[ "template_data" ] = [
  472. 'keyword1' => $member_info[ "nickname" ],
  473. 'keyword2' => time_to_date($member_info[ "reg_time" ]),
  474. ];
  475. $data[ "page" ] = '';
  476. $wechat_model->sendMessage($data);
  477. return $this->success();
  478. }
  479. /**
  480. * 拉取用户头像
  481. * @param unknown $info
  482. */
  483. private function pullHeadimg($data)
  484. {
  485. if (!empty($data[ 'headimg' ]) && is_url($data[ 'headimg' ])) {
  486. $url = __ROOT__ . '/api/member/pullheadimg?member_id=' . $data[ 'member_id' ];
  487. http($url, 1);
  488. }
  489. }
  490. }