|
@@ -29,7 +29,9 @@ use app\common\{logic\BaseLogic,
|
|
|
enum\AccountLogEnum,
|
|
enum\AccountLogEnum,
|
|
|
model\UserLabelIndex,
|
|
model\UserLabelIndex,
|
|
|
logic\AccountLogLogic,
|
|
logic\AccountLogLogic,
|
|
|
- enum\UserTerminalEnum};
|
|
|
|
|
|
|
+ enum\UserTerminalEnum,
|
|
|
|
|
+ service\ConfigService};
|
|
|
|
|
+use think\facade\Config;
|
|
|
use think\facade\Db;
|
|
use think\facade\Db;
|
|
|
use think\Model;
|
|
use think\Model;
|
|
|
|
|
|
|
@@ -43,139 +45,228 @@ class UserLogic extends BaseLogic
|
|
|
{
|
|
{
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * @notes 用户概况页面
|
|
|
|
|
- * @return array
|
|
|
|
|
|
|
+ * @notes 用户详情
|
|
|
|
|
+ * @param int $userId
|
|
|
|
|
+ * @return mixed
|
|
|
|
|
+ * @throws \think\db\exception\DataNotFoundException
|
|
|
|
|
+ * @throws \think\db\exception\DbException
|
|
|
|
|
+ * @throws \think\db\exception\ModelNotFoundException
|
|
|
* @author cjhao
|
|
* @author cjhao
|
|
|
- * @date 2021/8/17 14:58
|
|
|
|
|
|
|
+ * @date 2021/8/18 15:52
|
|
|
*/
|
|
*/
|
|
|
- public function index():array
|
|
|
|
|
|
|
+ public function detail($mobile)
|
|
|
{
|
|
{
|
|
|
- $today = strtotime(date('Y-m-d'));
|
|
|
|
|
- //用户数
|
|
|
|
|
- $userCount = User::count();
|
|
|
|
|
- //今日新增用户数
|
|
|
|
|
- $userNewCount = User::where('create_time','>=',$today)->count();
|
|
|
|
|
- //成交用户数
|
|
|
|
|
- $repetitionCount = Order::where(['pay_status'=>PayEnum::ISPAID])->count();
|
|
|
|
|
- //复购用户数
|
|
|
|
|
- $purchaseCount = Order::where(['pay_status'=>PayEnum::ISPAID])
|
|
|
|
|
- ->group('user_id')
|
|
|
|
|
- ->having('count(user_id) >= 2')
|
|
|
|
|
- ->count();
|
|
|
|
|
-
|
|
|
|
|
- $dayList = day_time(14,true);
|
|
|
|
|
- $dayList = array_reverse($dayList);
|
|
|
|
|
- $echarts_data = [];
|
|
|
|
|
- //图表数据
|
|
|
|
|
- foreach ($dayList as $dayKey => $dayVal){
|
|
|
|
|
- $newUserCount = User::whereTime('create_time','between',[$dayVal,$dayVal+86399])->count();
|
|
|
|
|
- $echarts_data[] = [
|
|
|
|
|
- 'day' => date('m-d',$dayVal),
|
|
|
|
|
- 'user_new_count' => $newUserCount,
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ $user = User::field('id,nickname,avatar,sex,mobile,birthday,level,create_time,user_money,user_earnings,user_money+user_earnings as total_user_money,user_integral,disable,user_delete')
|
|
|
|
|
+ ->with('user_level')
|
|
|
|
|
+ ->where(['mobile'=>$mobile])->find()->toArray();
|
|
|
|
|
+ if($user){
|
|
|
|
|
+ $user['user_level_name'] = $user['name'];
|
|
|
|
|
+ unset($user['name']);
|
|
|
|
|
+ unset($user['rank']);
|
|
|
|
|
+ unset($user['discount']);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- $data = [
|
|
|
|
|
- 'user_count' => $userCount,
|
|
|
|
|
- 'user_new_count' => $userNewCount,
|
|
|
|
|
- 'repetition_count' => $repetitionCount,
|
|
|
|
|
- 'purchase_count' => $purchaseCount,
|
|
|
|
|
- 'echarts_data' => $echarts_data,
|
|
|
|
|
- ];
|
|
|
|
|
- return $data;
|
|
|
|
|
|
|
+ return $user;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
|
+ * 新增会员信息
|
|
|
|
|
+ * */
|
|
|
|
|
+ public function addUserInfo(array $params):bool{
|
|
|
|
|
+ try {
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 用户搜索条件列表
|
|
|
|
|
- * @return array
|
|
|
|
|
- * @throws \think\db\exception\DataNotFoundException
|
|
|
|
|
- * @throws \think\db\exception\DbException
|
|
|
|
|
- * @throws \think\db\exception\ModelNotFoundException
|
|
|
|
|
- * @author cjhao
|
|
|
|
|
- * @date 2021/8/10 16:58
|
|
|
|
|
- */
|
|
|
|
|
- public function otherLists(): array
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ $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;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- $userLevel = UserLevel::order('rank', 'asc')->field('id,name')->select();
|
|
|
|
|
- $userLabel = UserLabel::field('id,name')->select();
|
|
|
|
|
- $sourceList = UserTerminalEnum::getTermInalDesc();
|
|
|
|
|
- return [
|
|
|
|
|
- 'user_level_list' => $userLevel,
|
|
|
|
|
- 'user_label_list' => $userLabel,
|
|
|
|
|
- 'source_list' => $sourceList,
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ self::setError('线上商城已存在该会员信息');
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }catch(\Exception $e) {
|
|
|
|
|
+ Db::rollback();
|
|
|
|
|
+ self::setError($e->getMessage());
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public function updateUserInfo(array $params):bool{
|
|
|
|
|
+ try {
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 设置用户标签
|
|
|
|
|
- * @param array $param
|
|
|
|
|
- * @return bool
|
|
|
|
|
- * @throws \Exception
|
|
|
|
|
- * @author cjhao
|
|
|
|
|
- * @date 2021/8/17 11:43
|
|
|
|
|
- */
|
|
|
|
|
- public function setLabel(array $param): bool
|
|
|
|
|
- {
|
|
|
|
|
- $userIds = $param['user_ids'] ?? [];
|
|
|
|
|
- $labelIds = $param['label_ids'] ?? [];
|
|
|
|
|
- $labelIds = UserLabel::where(['id' => $labelIds])->column('id');
|
|
|
|
|
- //当前用户已绑定的标签
|
|
|
|
|
- $userLabelIndexList = UserLabelIndex::where(['user_id' => $userIds])
|
|
|
|
|
- ->group('user_id')
|
|
|
|
|
- ->column('group_concat(label_id Separator \',\') as user_label_id', 'user_id');
|
|
|
|
|
-
|
|
|
|
|
- $addData = [];
|
|
|
|
|
- foreach ($userIds as $userId) {
|
|
|
|
|
- $userLabelIndex = $userLabelIndexList[$userId]['user_label_id'] ?? '';
|
|
|
|
|
- $userLabelIds = explode(',', $userLabelIndex);
|
|
|
|
|
-
|
|
|
|
|
- foreach ($labelIds as $labelId) {
|
|
|
|
|
- //该用户已有该标签,跳过
|
|
|
|
|
- if (in_array($labelId, $userLabelIds)) {
|
|
|
|
|
- continue;
|
|
|
|
|
|
|
+ $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;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- $addData[] = [
|
|
|
|
|
- 'user_id' => $userId,
|
|
|
|
|
- 'label_id' => $labelId,
|
|
|
|
|
- ];
|
|
|
|
|
|
|
+ }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'];
|
|
|
}
|
|
}
|
|
|
- //写入数据
|
|
|
|
|
- if ($addData) {
|
|
|
|
|
|
|
|
|
|
- (new UserLabelIndex)->saveAll($addData);
|
|
|
|
|
|
|
+ $user_integral = 0;
|
|
|
|
|
+ if(isset($params['user_integral'])){
|
|
|
|
|
+ $user_integral = $params['user_integral'];
|
|
|
}
|
|
}
|
|
|
- return true;
|
|
|
|
|
|
|
|
|
|
|
|
+ $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){
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 用户详情
|
|
|
|
|
- * @param int $userId
|
|
|
|
|
- * @return mixed
|
|
|
|
|
- * @throws \think\db\exception\DataNotFoundException
|
|
|
|
|
- * @throws \think\db\exception\DbException
|
|
|
|
|
- * @throws \think\db\exception\ModelNotFoundException
|
|
|
|
|
- * @author cjhao
|
|
|
|
|
- * @date 2021/8/18 15:52
|
|
|
|
|
- */
|
|
|
|
|
- public function detail($mobile)
|
|
|
|
|
- {
|
|
|
|
|
- $user = User::field('id,nickname,avatar,sex,mobile,birthday,level,create_time,user_money,user_earnings,user_money+user_earnings as total_user_money,user_integral,disable,user_delete')
|
|
|
|
|
- ->with('user_level')
|
|
|
|
|
- ->where(['mobile'=>$mobile])->find()->toArray();
|
|
|
|
|
- if($user){
|
|
|
|
|
- $user['user_level_name'] = $user['name'];
|
|
|
|
|
- unset($user['name']);
|
|
|
|
|
- unset($user['rank']);
|
|
|
|
|
- unset($user['discount']);
|
|
|
|
|
|
|
+ $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'])){
|
|
|
|
|
+ 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;
|
|
|
}
|
|
}
|
|
|
- return $user;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -192,30 +283,7 @@ class UserLogic extends BaseLogic
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 设置用户标签
|
|
|
|
|
- * @param array $params
|
|
|
|
|
- * @return bool
|
|
|
|
|
- * @throws \Exception
|
|
|
|
|
- * @author cjhao
|
|
|
|
|
- * @date 2021/8/19 11:31
|
|
|
|
|
- */
|
|
|
|
|
- public function setUserLabel(array $params):bool {
|
|
|
|
|
- //先删除用户标签,在重新设置用户标签
|
|
|
|
|
- UserLabelIndex::where(['user_id'=>$params['user_id']])->delete();
|
|
|
|
|
- $addData = [];
|
|
|
|
|
- foreach ($params['label_ids'] as $labelId){
|
|
|
|
|
- $addData[] = [
|
|
|
|
|
- 'user_id' => $params['user_id'],
|
|
|
|
|
- 'label_id' => $labelId,
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
- if($addData){
|
|
|
|
|
- (new UserLabelIndex)->saveAll($addData);
|
|
|
|
|
- }
|
|
|
|
|
- return true;
|
|
|
|
|
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @notes 调整用户余额
|
|
* @notes 调整用户余额
|
|
@@ -298,57 +366,7 @@ class UserLogic extends BaseLogic
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 用户信息
|
|
|
|
|
- * @author Tab
|
|
|
|
|
- * @date 2021/9/13 19:33
|
|
|
|
|
- */
|
|
|
|
|
- public static function info($params)
|
|
|
|
|
- {
|
|
|
|
|
- $info = User::findOrEmpty($params['user_id'])->toArray();
|
|
|
|
|
- if (empty($info)) {
|
|
|
|
|
- $info = '';
|
|
|
|
|
- } else {
|
|
|
|
|
- $info = $info['sn'] . '(' . $info['nickname'] . ')';
|
|
|
|
|
- }
|
|
|
|
|
- $count = User::where('inviter_id', $params['user_id'])->count();
|
|
|
|
|
- return [
|
|
|
|
|
- 'name' => $info,
|
|
|
|
|
- 'count' => $count
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 上级分销商调整信息
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return array
|
|
|
|
|
- * @author Tab
|
|
|
|
|
- * @date 2021/9/14 10:50
|
|
|
|
|
- */
|
|
|
|
|
- public static function adjustFirstLeaderInfo($params)
|
|
|
|
|
- {
|
|
|
|
|
- $userField = [
|
|
|
|
|
- 'id',
|
|
|
|
|
- 'sn',
|
|
|
|
|
- 'nickname',
|
|
|
|
|
- 'first_leader'
|
|
|
|
|
- ];
|
|
|
|
|
- $user = User::field($userField)->findOrEmpty($params['user_id'])->toArray();
|
|
|
|
|
- if(empty($user['first_leader'])) {
|
|
|
|
|
- $firstLeader = '系统';
|
|
|
|
|
- } else {
|
|
|
|
|
- $firstLeaderField = [
|
|
|
|
|
- 'id',
|
|
|
|
|
- 'sn',
|
|
|
|
|
- 'nickname',
|
|
|
|
|
- ];
|
|
|
|
|
- $firstLeader = User::field($firstLeaderField)->findOrEmpty($user['first_leader'])->toArray();
|
|
|
|
|
- }
|
|
|
|
|
- return [
|
|
|
|
|
- 'user' => $user,
|
|
|
|
|
- 'first_leader' => $firstLeader
|
|
|
|
|
- ];
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @notes
|
|
* @notes
|
|
@@ -424,71 +442,5 @@ class UserLogic extends BaseLogic
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 指定上级分销商
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return array
|
|
|
|
|
- * @throws \think\Exception
|
|
|
|
|
- * @author Tab
|
|
|
|
|
- * @date 2021/9/14 11:44
|
|
|
|
|
- */
|
|
|
|
|
- public static function assignFirstLeader($params)
|
|
|
|
|
- {
|
|
|
|
|
- if (empty($params['first_id'])) {
|
|
|
|
|
- throw new \think\Exception('请选择上级分销商');
|
|
|
|
|
- }
|
|
|
|
|
- if ($params['first_id'] == $params['user_id']) {
|
|
|
|
|
- throw new \think\Exception('上级分销商不可以选择自己');
|
|
|
|
|
- }
|
|
|
|
|
- $firstLeader = User::field(['id', 'first_leader', 'second_leader', 'third_leader', 'ancestor_relation'])
|
|
|
|
|
- ->where('id', $params['first_id'])
|
|
|
|
|
- ->findOrEmpty()
|
|
|
|
|
- ->toArray();
|
|
|
|
|
- if(empty($firstLeader)) {
|
|
|
|
|
- throw new \think\Exception('分销商不存在');
|
|
|
|
|
- }
|
|
|
|
|
- $ancestorRelation =explode(',', $firstLeader['ancestor_relation']);
|
|
|
|
|
- if(!empty($ancestorRelation) && in_array($params['user_id'], $ancestorRelation)) {
|
|
|
|
|
- throw new \think\Exception('不允许填写自己任一下级的邀请码');
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- // 上级
|
|
|
|
|
- $first_leader_id = $firstLeader['id'];
|
|
|
|
|
- // 上上级
|
|
|
|
|
- $second_leader_id = $firstLeader['first_leader'];
|
|
|
|
|
- // 上上上级
|
|
|
|
|
- $third_leader_id = $firstLeader['second_leader'];
|
|
|
|
|
- // 拼接关系链
|
|
|
|
|
- $firstLeader['ancestor_relation'] = $firstLeader['ancestor_relation'] ?: ''; // 清空null值及0
|
|
|
|
|
- $my_ancestor_relation = $first_leader_id. ',' . $firstLeader['ancestor_relation'];
|
|
|
|
|
- // 去除两端逗号
|
|
|
|
|
- $my_ancestor_relation = trim($my_ancestor_relation, ',');
|
|
|
|
|
- $data = [
|
|
|
|
|
- 'first_leader' => $first_leader_id,
|
|
|
|
|
- 'second_leader' => $second_leader_id,
|
|
|
|
|
- 'third_leader' => $third_leader_id,
|
|
|
|
|
- 'ancestor_relation' => $my_ancestor_relation,
|
|
|
|
|
- 'admin_update_leader' => 1,
|
|
|
|
|
- ];
|
|
|
|
|
- return $data;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * @notes 清空上级
|
|
|
|
|
- * @param $params
|
|
|
|
|
- * @return array
|
|
|
|
|
- * @author Tab
|
|
|
|
|
- * @date 2021/9/14 11:46
|
|
|
|
|
- */
|
|
|
|
|
- public static function clearFirstLeader($params)
|
|
|
|
|
- {
|
|
|
|
|
- $data = [
|
|
|
|
|
- 'first_leader' => 0,
|
|
|
|
|
- 'second_leader' => 0,
|
|
|
|
|
- 'third_leader' => 0,
|
|
|
|
|
- 'ancestor_relation' => '',
|
|
|
|
|
- 'admin_update_leader' => 1,
|
|
|
|
|
- ];
|
|
|
|
|
- return $data;
|
|
|
|
|
- }
|
|
|
|
|
}
|
|
}
|