From dee95432010242e8961830ce92be377ed6b1f7cb Mon Sep 17 00:00:00 2001 From: evoxwht <442384644@qq.com> Date: Wed, 23 Mar 2022 19:54:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=B7=B2=E7=9F=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/wechat/MessageServices.php | 9 ++- .../app/services/order/StoreOrderServices.php | 1 + crmeb/app/services/user/LoginServices.php | 64 +++++++++++-------- .../services/wechat/WechatMessageServices.php | 4 -- .../services/wechat/WechatUserServices.php | 8 ++- 5 files changed, 51 insertions(+), 35 deletions(-) diff --git a/crmeb/app/services/message/wechat/MessageServices.php b/crmeb/app/services/message/wechat/MessageServices.php index 5df036e0d..f45b1259c 100644 --- a/crmeb/app/services/message/wechat/MessageServices.php +++ b/crmeb/app/services/message/wechat/MessageServices.php @@ -47,6 +47,7 @@ class MessageServices extends BaseServices if (strtolower($qrInfo['third_type']) == 'spread') { try { $spreadUid = $qrInfo['third_id']; + $is_new = $wechatUser->saveUser($message->FromUserName); $uid = $wechatUser->getFieldValue($message->FromUserName, 'openid', 'uid', ['user_type', '<>', 'h5']); $userInfo = $userService->get($uid); if ($spreadUid == $uid) { @@ -55,7 +56,7 @@ class MessageServices extends BaseServices $response = '用户不存在'; } else if ($userInfo['spread_uid']) { $response = '已有推荐人!'; - } else if (!$loginService->updateUserInfo(['code' => $spreadUid], $userInfo)) { + } else if (!$loginService->updateUserInfo(['code' => $spreadUid], $userInfo, $is_new)) { $response = '绑定推荐人失败!'; } } catch (\Exception $e) { @@ -65,6 +66,7 @@ class MessageServices extends BaseServices try { $spreadUid = $qrInfo['third_id']; $spreadInfo = $userService->get($spreadUid); + $is_new = $wechatUser->saveUser($message->FromUserName); $uid = $wechatUser->getFieldValue($message->FromUserName, 'openid', 'uid', ['user_type', '<>', 'h5']); $userInfo = $userService->get($uid); if ($spreadUid == $uid) { @@ -77,7 +79,7 @@ class MessageServices extends BaseServices $response = '您是事业部,不能绑定成为别人的员工'; } else if ($userInfo->is_agent) { $response = '您是代理商,不能绑定成为别人的员工'; - } else if ($loginService->updateUserInfo(['code' => $spreadUid, 'is_staff' => 1], $userInfo)) { + } else if ($loginService->updateUserInfo(['code' => $spreadUid, 'is_staff' => 1], $userInfo, $is_new)) { $response = '绑定店员成功!'; } } catch (\Exception $e) { @@ -91,6 +93,7 @@ class MessageServices extends BaseServices $qrcodeInfo = $wechatQrcodeService->qrcodeInfo($qrInfo['third_id']); $spreadUid = $qrcodeInfo['uid']; $spreadInfo = $userService->get($spreadUid); + $is_new = $wechatUser->saveUser($message->FromUserName); $uid = $wechatUser->getFieldValue($message->FromUserName, 'openid', 'uid', ['user_type', '<>', 'h5']); $userInfo = $userService->get($uid); if ($qrcodeInfo['status'] == 0 || $qrcodeInfo['is_del'] == 1 || ($qrcodeInfo['end_time'] < time() && $qrcodeInfo['end_time'] > 0)) { @@ -101,7 +104,7 @@ class MessageServices extends BaseServices $response = '用户不存在'; } else if (!$spreadInfo) { $response = '上级用户不存在'; - } else if ($loginService->updateUserInfo(['code' => $spreadUid], $userInfo)) { + } else if ($loginService->updateUserInfo(['code' => $spreadUid], $userInfo, $is_new)) { //写入扫码记录,返回内容 $response = $wechatQrcodeService->wechatQrcodeRecord($qrcodeInfo, $userInfo, $spreadInfo); } diff --git a/crmeb/app/services/order/StoreOrderServices.php b/crmeb/app/services/order/StoreOrderServices.php index 435690f41..1a061a4ca 100644 --- a/crmeb/app/services/order/StoreOrderServices.php +++ b/crmeb/app/services/order/StoreOrderServices.php @@ -1487,6 +1487,7 @@ HTML; } else { $addr = []; } + if ($shipping_type == 2) $addr = []; /** @var StoreCartServices $cartServices */ $cartServices = app()->make(StoreCartServices::class); $cartGroup = $cartServices->getUserProductCartListV1($user['uid'], $cartId, $new, $addr, $shipping_type); diff --git a/crmeb/app/services/user/LoginServices.php b/crmeb/app/services/user/LoginServices.php index aa15813df..77994c310 100644 --- a/crmeb/app/services/user/LoginServices.php +++ b/crmeb/app/services/user/LoginServices.php @@ -78,7 +78,7 @@ class LoginServices extends BaseServices * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ - public function updateUserInfo($user, $userInfo) + public function updateUserInfo($user, $userInfo, $is_new = false) { $data = []; $data['nickname'] = !isset($user['nickname']) || !$user['nickname'] ? $userInfo->nickname : $user['nickname']; @@ -86,9 +86,9 @@ class LoginServices extends BaseServices $data['phone'] = !isset($user['phone']) || !$user['phone'] ? $userInfo->phone : $user['phone']; $data['last_time'] = time(); $data['last_ip'] = app()->request->ip(); + $spreadUid = isset($user['code']) ? $user['code'] : 0; //如果扫了员工邀请码,上级,代理商,区域代理都会改动。 if (isset($user['is_staff']) && !$userInfo['is_agent'] && !$userInfo['is_division']) { - $spreadUid = isset($user['code']) ? $user['code'] : 0; $spreadInfo = $this->dao->get($spreadUid); if ($userInfo['uid'] != $spreadUid) { $data['spread_uid'] = $spreadUid; @@ -106,37 +106,47 @@ class LoginServices extends BaseServices $this->dao->update($userInfo['uid'], ['spread_uid' => $userInfo->agent_id], 'spread_uid'); } } - //永久绑定 - $store_brokergae_binding_status = sys_config('store_brokerage_binding_status', 1); - if ($userInfo->spread_uid && $store_brokergae_binding_status == 1 && !isset($user['is_staff'])) { - $data['login_type'] = $user['login_type'] ?? $userInfo->login_type; - } else { - $spreadUid = isset($user['code']) && $user['code'] && $user['code'] != $userInfo->uid ? $user['code'] : 0; - if ($spreadUid && $userInfo->uid == $this->dao->value(['uid' => $spreadUid], 'spread_uid')) { - $spreadUid = 0; - } - //绑定分销关系 = 所有用户 - if (sys_config('brokerage_bindind', 1) == 1) { - //分销绑定类型为时间段且过期 ||临时 - $store_brokerage_binding_time = sys_config('store_brokerage_binding_time', 30); - if (!$userInfo['spread_uid'] || $store_brokergae_binding_status == 3 || ($store_brokergae_binding_status == 2 && ($userInfo['spread_time'] + $store_brokerage_binding_time * 24 * 3600) < time())) { - if ($spreadUid) { - $spreadInfo = $this->dao->get($spreadUid); - $spreadUid = (int)$spreadUid; - $data['spread_uid'] = $spreadUid; - $data['spread_time'] = time(); - $data['agent_id'] = $spreadInfo->agent_id; - $data['division_id'] = $spreadInfo->division_id; - $data['staff_id'] = $spreadInfo->staff_id; - } - } - } + if ($is_new) { if ($spreadUid) { + $spreadInfo = $this->dao->get($spreadUid); + $spreadUid = (int)$spreadUid; + $data['spread_uid'] = $spreadUid; + $data['spread_time'] = time(); + $data['agent_id'] = $spreadInfo->agent_id; + $data['division_id'] = $spreadInfo->division_id; + $data['staff_id'] = $spreadInfo->staff_id; //绑定用户后置事件 event('user.register', [$spreadUid, $userInfo['user_type'], $userInfo['nickname'], $userInfo['uid'], 0]); //推送消息 event('notice.notice', [['spreadUid' => $spreadUid, 'user_type' => $userInfo['user_type'], 'nickname' => $userInfo['nickname']], 'bind_spread_uid']); } + } else { + //永久绑定 + $store_brokerage_binding_status = sys_config('store_brokerage_binding_status', 1); + if ($userInfo->spread_uid && $store_brokerage_binding_status == 1 && !isset($user['is_staff'])) { + $data['login_type'] = $user['login_type'] ?? $userInfo->login_type; + } else { + //绑定分销关系 = 所有用户 + if (sys_config('brokerage_bindind', 1) == 1) { + //分销绑定类型为时间段且过期 ||临时 + $store_brokerage_binding_time = sys_config('store_brokerage_binding_time', 30); + if (!$userInfo['spread_uid'] || $store_brokerage_binding_status == 3 || ($store_brokerage_binding_status == 2 && ($userInfo['spread_time'] + $store_brokerage_binding_time * 24 * 3600) < time())) { + if ($spreadUid && $user['code'] != $userInfo->uid && $userInfo->uid != $this->dao->value(['uid' => $spreadUid], 'spread_uid')) { + $spreadInfo = $this->dao->get($spreadUid); + $spreadUid = (int)$spreadUid; + $data['spread_uid'] = $spreadUid; + $data['spread_time'] = time(); + $data['agent_id'] = $spreadInfo->agent_id; + $data['division_id'] = $spreadInfo->division_id; + $data['staff_id'] = $spreadInfo->staff_id; + //绑定用户后置事件 + event('user.register', [$spreadUid, $userInfo['user_type'], $userInfo['nickname'], $userInfo['uid'], 0]); + //推送消息 + event('notice.notice', [['spreadUid' => $spreadUid, 'user_type' => $userInfo['user_type'], 'nickname' => $userInfo['nickname']], 'bind_spread_uid']); + } + } + } + } } if (!$this->dao->update($userInfo['uid'], $data, 'uid')) { throw new ValidateException('修改信息失败'); diff --git a/crmeb/app/services/wechat/WechatMessageServices.php b/crmeb/app/services/wechat/WechatMessageServices.php index 37b48736c..2ec746e50 100644 --- a/crmeb/app/services/wechat/WechatMessageServices.php +++ b/crmeb/app/services/wechat/WechatMessageServices.php @@ -58,10 +58,6 @@ class WechatMessageServices extends BaseServices */ public function wechatMessageBefore($message) { - /** @var WechatUserServices $wechatUser */ - $wechatUser = app()->make(WechatUserServices::class); - $wechatUser->saveUser($message->FromUserName); - $event = isset($message->Event) ? $message->MsgType . ( $message->Event == 'subscribe' && isset($message->EventKey) ? '_scan' : '' diff --git a/crmeb/app/services/wechat/WechatUserServices.php b/crmeb/app/services/wechat/WechatUserServices.php index 2296112b2..c7ca4a7c7 100644 --- a/crmeb/app/services/wechat/WechatUserServices.php +++ b/crmeb/app/services/wechat/WechatUserServices.php @@ -106,13 +106,19 @@ class WechatUserServices extends BaseServices /** * 用户存在就更新 不存在就添加 * @param $openid + * @return bool + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException */ public function saveUser($openid) { if ($this->getWechatUserInfo(['openid' => $openid])) { $this->updateUser($openid); + return false; } else { $this->setNewUser($openid); + return true; } } @@ -156,7 +162,7 @@ class WechatUserServices extends BaseServices } else { mt_srand(); $userInfo['nickname'] = 'wx' . rand(100000, 999999); - $userInfo['avatar'] = sys_config('h5_avatar'); + $userInfo['headimgurl'] = sys_config('h5_avatar'); } if (isset($userInfo['tagid_list'])) { $userInfo['tagid_list'] = implode(',', $userInfo['tagid_list']);