with('user_level') ->where(['mobile'=>$mobile])->findOrEmpty(); if(!$user->isEmpty()){ $user['user_level_name'] = $user['name']; unset($user['name']); unset($user['rank']); unset($user['discount']); }else{ $user=[]; } return $user; } /* * 新增会员信息 * */ public function addUserInfo(array $params):bool{ try { $mobile = $params['mobile']; $where['mobile'] = $mobile; $user_info = User::where($where)->findOrEmpty(); $offline_user_id = 0; if(isset($params['offline_user_id'])){ $offline_user_id = $params['offline_user_id']; } if($user_info->isEmpty()){ $result = self::createUserData($params); if($result){ return true; }else{ outFileLog($params,'insert_member_error_log','saveData'); self::setError('插入会员数据失败'); return false; } } self::setError('线上商城已存在该会员信息'); return false; }catch(\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public function updateUserInfo(array $params):bool{ try { $mobile = $params['mobile']; $where['mobile'] = $mobile; $user_info = User::where($where)->findOrEmpty(); if($user_info->isEmpty()){ $result = self::createUserData($params); if($result){ return true; }else{ outFileLog($params,'insert_member_error_log','saveData'); self::setError('插入会员数据失败'); return false; } }else{ $result = self::updateUserData($params); if($result){ return true; }else{ outFileLog($params,'update_member_error_log','updateData'); self::setError('更新会员数据失败'); return false; } } self::setError('更新失败,请稍后再试'); return false; }catch(\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } public function createUserData($params){ $avatar = ConfigService::get('config', 'default_avatar', ''); $mobile = $params['mobile']; $offline_user_id = 0; if(isset($params['offline_user_id'])){ $offline_user_id = $params['offline_user_id']; } $user_integral = 0; if(isset($params['user_integral'])){ $user_integral = $params['user_integral']; } $user_money = 0; if(isset($params['user_money'])){ $user_money = $params['user_money']; } if(isset($params['nickname'])){ $nickname = $params['nickname']; if(empty($nickname)){ $nickname = $params['mobile']; } }else{ $nickname = $params['mobile']; } $passwordSalt = Config::get('project.unique_identification'); $password = create_password('123456', $passwordSalt); //todo 后续补充用户资料 $saveData['nickname'] = $nickname; $saveData['mobile'] = $mobile; $saveData['sn'] = create_user_sn(); $saveData['avatar'] = $avatar; $saveData['password'] = $password; $saveData['user_money'] = $user_money; $saveData['user_integral'] = $user_integral; $saveData['password'] = $password; $saveData['code'] = generate_code(); $saveData['register_source'] = 8; $saveData['is_new_user'] = 1; $saveData['is_register_award'] = 0; $saveData['offline_user_id'] = $offline_user_id; $result = User::create($saveData); return $result; } public function updateUserData($params){ $mobile = $params['mobile']; $offline_user_id = 0; if(isset($params['offline_user_id'])){ $offline_user_id = $params['offline_user_id']; } if(isset($params['nickname'])){ $nickname = $params['nickname']; if(!empty($nickname)){ $updateData['nickname'] = $nickname; } } if(isset($params['user_money'])){ $updateData['user_money'] = $params['user_money']; } if(isset($params['user_integral'])){ $updateData['user_integral'] = $params['user_integral']; } if(isset($params['user_level'])){ $updateData['level'] = $params['user_level']; $updateData['offline_user_level'] = $params['user_level']; } if(isset($params['offline_user_id'])){ $offline_user_id = $params['offline_user_id']; if($offline_user_id<>0){ $updateData['offline_user_id'] = $offline_user_id; } } $result = User::where(['mobile'=>$params['mobile']])->update($updateData); return $result; } /* * 用户充值方法 * */ public function userRecharge(array $params):bool{ try { $mobile = $params['mobile']; $where['mobile'] = $mobile; $user_info = User::where($where)->findOrEmpty(); if($user_info->isEmpty()) { outFileLog($params, 'userRecharge', 'saveData'); self::setError('会员信息查询失败'); return false; }else{ $online_user_money= round($user_info->user_money + $params['change_money'],2); if(isset($params['user_money']) && !empty($params['user_money'])){ if($online_user_money <> $params['user_money']){ outFileLog($user_info,'userRecharge','数据不同-$user_info'); outFileLog($params,'userRecharge','数据不同-$params'); $online_user_money = $params['user_money']; } } $user_info->user_money = $online_user_money; $result = $user_info->save(); if($result){ //记录用户余额变动记录 //记录日志 AccountLogLogic::add($user_info->id, AccountLogEnum::OFFLINE_INC_MONEY, AccountLogEnum::INC, $params['change_money'], '', '线下收银台充值同步增加用户余额'); return true; }else{ outFileLog($params,'userRecharge','updateData'); self::setError('更新会员数据失败'); return false; } } self::setError('同步失败,请稍后再试'); return false; }catch(\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 更新用户信息 * @param array $params * @return bool * @author cjhao * @date 2021/8/18 17:21 */ public function setUserInfo(array $params):bool { User::where(['id'=>$params['user_id']])->update([$params['field']=>$params['value']]); return true; } /** * @notes 调整用户余额 * @param array $params * @return string * @author cjhao * @date 2021/9/10 18:15 */ public function adjustUserWallet(array $params) { Db::startTrans(); try { $user = User::find($params['user_id']); switch ($params['type']){ case 1: //增加 if(1 == $params['action']){ //调整可用余额 $user->user_money = $user->user_money + $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::BNW_INC_ADMIN, AccountLogEnum::INC, $params['num'], '', $params['remark'] ?? ''); }else{ $user->user_money = $user->user_money - $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::BNW_DEC_ADMIN,AccountLogEnum::DEC, $params['num'], '', $params['remark'] ?? ''); } break; case 2: //增加 if(1 == $params['action']){ //调整可用余额 $user->user_earnings = $user->user_earnings + $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::BW_INC_ADMIN, AccountLogEnum::INC, $params['num'], '', $params['remark'] ?? ''); }else{ $user->user_earnings = $user->user_earnings - $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::BW_DEC_ADMIN,AccountLogEnum::DEC, $params['num'], '', $params['remark'] ?? ''); } break; case 3: //增加 if(1 == $params['action']){ //调整可用余额 $user->user_integral = $user->user_integral + $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::INTEGRAL_INC_ADMIN, AccountLogEnum::INC, $params['num'], '', $params['remark'] ?? ''); }else{ $user->user_integral = $user->user_integral - $params['num']; $user->save(); //记录日志 AccountLogLogic::add($user->id, AccountLogEnum::INTEGRAL_DEC_ADMIN,AccountLogEnum::DEC, $params['num'], '', $params['remark'] ?? ''); } break; } Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); return $e->getMessage(); } } /** * @notes * @param $params * @return bool * @author Tab * @date 2021/9/14 11:42 */ public static function adjustFirstLeader($params) { Db::startTrans(); try { switch($params['type']) { // 指定推荐人 case 'assign': $formatData = self::assignFirstLeader($params); break; // 设置推荐人为系统,即清空上级 case 'system': $formatData = self::clearFirstLeader($params); break; } $user = User::findOrEmpty($params['user_id']); // 旧关系链 if (!empty($user->ancestor_relation)) { $old_ancestor_relation = $user->id . ',' .$user->ancestor_relation; } else { $old_ancestor_relation = $user->id; } // 更新当前用户的分销关系 User::where(['id' => $params['user_id']])->update($formatData); //更新当前用户下级的分销关系 $data = [ 'second_leader' => $formatData['first_leader'], 'third_leader' => $formatData['second_leader'], 'update_time' => time(), ]; User::where(['first_leader' => $params['user_id']])->update($data); //更新当前用户下下级的分销关系 $data = [ 'third_leader' => $formatData['first_leader'], 'update_time' => time() ]; User::where(['second_leader' => $params['user_id']])->update($data); //更新当前用户所有后代的关系链 $posterityArr = User::field('id,ancestor_relation') ->whereFindInSet('ancestor_relation', $params['user_id']) ->select() ->toArray(); $updateData = []; $replace_ancestor_relation = $params['user_id'] . ','. $formatData['ancestor_relation']; foreach($posterityArr as $item) { $replace = substr($item['ancestor_relation'], strpos($item['ancestor_relation'], $params['user_id'])); $updateData[] = [ 'id' => $item['id'], 'ancestor_relation' => trim(str_replace($old_ancestor_relation, $replace_ancestor_relation, $item['ancestor_relation']), ',') ]; } // 批量更新 (new User())->saveAll($updateData); Db::commit(); return true; } catch(\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } }