mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-30 06:20:50 +00:00
修复已知问题
This commit is contained in:
parent
97eab6c25a
commit
dee9543201
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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('修改信息失败');
|
||||
|
||||
@ -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' : ''
|
||||
|
||||
@ -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']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user