getUserPhoneNumber($params['code']); $phoneNumber = $response['phone_info']['purePhoneNumber'] ?? ''; if (empty($phoneNumber)) { throw new \Exception('获取手机号码失败'); } $user = User::where([ ['mobile', '=', $phoneNumber], ['id', '<>', $params['user_id']] ])->findOrEmpty(); if (!$user->isEmpty()) { //切换被绑定账号删除该账号并且以新的账号登录 UserAuth::where('user_id',$params['user_id'])->update([ 'user_id'=>$user['id'] ]); User::destroy($params['user_id']); return $user['id']; // throw new \Exception('手机号已被其他账号绑定'); } // 绑定手机号 User::update([ 'id' => $params['user_id'], 'mobile' => $phoneNumber ]); return true; } catch (\Exception $e) { self::setError($e->getMessage()); return false; } } public static function info($uid) { $data = User::with(['userShip'])->where('id',$uid) ->field('id,avatar,real_name,nickname,account,mobile,sex,login_ip,now_money,total_recharge_amount,user_ship ,purchase_funds,integral,pay_password,label_id,store_id') ->find(); //判断是不是员工 if($data){ $GetNumber = $data['integral']; $data = $data->toArray(); $all =UserShip::field('id,title,limit')->select()->toArray(); $new = self::getNextArrayByID($all,$data['user_ship']); $data['next_level'] = ''; $data['next_limit'] = 0; if($new){ $data['next_level'] = $new['title']; $data['next_limit'] = $new['limit'] - $data['total_recharge_amount']; } $data['is_staff'] = 0; if(isset($data['mobile']) && $data['mobile']){ $check = DeliveryService::where('phone',$data['mobile'])->find()??[]; if ($check){ $data['is_staff'] = 1; } } $data['label_name']=UserLabel::where('label_id',$data['label_id'])->value('label_name'); $data['return_money'] = Db::name('vip_flow')-> where(['user_id'=>$uid,'status'=>0]) ->sum('number'); $data['return_money'] = bcadd($data['return_money'],0,2); //小程序 未核销的订单 $data['no_writeoff'] = StoreOrder::where([ 'is_writeoff'=>0,'uid'=>$uid ])->whereIn('shipping_type',[1,2])->count(); $data['openid'] = UserAuth::where(['user_id'=>$uid,'terminal'=>1])->value('openid'); // $number=UserSign::where('uid',$uid)->where('status',0)->sum('number'); // $data['integral']=bcadd($data['integral'],$number,2); $number = UserSign::where('uid',$uid)->where(['status'=>0])->sum('number'); $data['number'] =bcadd($number,0,2); $data['GetNumber'] =bcadd($GetNumber,0,2); if($data['store_id']){ $share_name=SystemStore::where('id',$data['store_id'])->value('abbreviation'); }else{ $share_name=SystemStore::where('id',4)->value('abbreviation'); } $data['share_name']= $share_name.'No.'.preg_replace('/4/','*', $data['id']); }else{ $data = []; } return $data; } public static function recharge($param) { $param['order_id'] = getNewOrderId('rc'); $param['recharge_type'] = 'wechat'; return UserRecharge::create($param); } public static function getNextArrayByID($arr, $id) { foreach ($arr as $key => $value) { if ($value['id'] == $id) { if ($key + 1 < count($arr)) { return $arr[$key + 1]; } return null; } } return null; } public static function capital_list($uid,$params) { $query = CapitalFlow::where('uid',$uid); $count = $query->count(); $data = $query ->page($params['page_no'], $params['page_size']) ->select()->toArray(); foreach ($data as &$value){ if($value['link_type'] == 'order'){ $value['order_sn'] = StoreOrder::where('id',$value['link_id']) ->value('order_id'); } } return [ 'count'=>$count, 'data'=>$data, ]; } public static function capital_count($uid) { $query = CapitalFlow::where('uid',$uid); $recharge = $query->where('link_type','user_recharge') ->sum('amount')??0; $query1 = CapitalFlow::where('uid',$uid); $orderConsumption = $query1->where('link_type','<>','user_recharge') ->sum('amount')??0; return [ 'recharge'=>$recharge, 'order'=>$orderConsumption, ]; } public static function rechange_level() { return DictData::where(['type_value'=>'recharge','status'=>1]) ->select()->toArray(); } public function dealSendSms($uid) { $code = generateRandomCode(); $phone = User::where('id',$uid)->value('mobile'); if(empty($phone)){ throw new \Exception('用户未设置手机号'); } $template = getenv('SMS_TEMPLATE'); $check =(new SmsService())->client($phone,$template,$code); if($check){ $remark = $uid.'_payPassword'; Cache::set($remark,$code,5*60); return true; }else{ return false; } } public function dealLoginSms($phone) { $code = generateRandomCode(); $template = getenv('SMS_LOGIN_TEMPLATE'); $check =(new SmsService())->client($phone,$template,$code); if($check){ $remark = $phone.'_login'; Cache::set($remark,$code,5*60); return true; }else{ return false; } } public function dealReportingSms($phone,$string = '_reporting') { $code = generateRandomCode(); $template = getenv('SMS_LOGIN_TEMPLATE'); $check =(new SmsService())->client($phone,$template,$code); if($check){ $remark = $phone.$string; Cache::set($remark,$code,5*60); return true; }else{ return false; } } public static function dealPayPassword($params,$uid) { $password = payPassword($params['password']); return User::where('id',$uid) ->update(['pay_password'=>$password]); } public static function dealDetails($params,$uid) { switch ($params['type']){ case 1: //采购款明细 $categories = ['user_balance_recharge', 'user_order_purchase_pay','system_purchase_add','user_balance_recharge_refund']; $query = CapitalFlow::where('uid', $uid) ->whereIn('category', $categories); if(isset($params['mark'])&&$params['mark'] == 1){ $query->where('type','in'); } if(isset($params['mark'])&&$params['mark'] == 2){ $query->where('type','out'); } $count = $query->count(); $data = $query ->page($params['page_no'],$params['page_size']) ->order('id','desc') ->select()->toArray(); foreach ($data as &$value){ if($value['category'] == 'user_order_purchase_pay' || $value['category'] == 'system_purchase_add' ){ $value['order_sn'] = StoreOrder::where('id',$value['link_id'])->value('order_id'); }elseif($value['category'] == 'user_balance_recharge'){ $value['order_sn'] = UserRecharge::where('id',$value['link_id'])->value('order_id'); } } break; case 2: //余额明细 $category = ['system_balance_add','user_order_balance_pay']; $query = CapitalFlow::where('uid', $uid) ->whereIn('category', $category); if($params['mark'] == 1){ $query->where('type','in'); } if($params['mark'] == 2){ $query->where('type','out'); } $count = $query->count(); $data = $query ->page($params['page_no'],$params['page_size']) ->order('id','desc') ->select()->toArray(); foreach ($data as &$value){ $value['order_sn'] = StoreOrder::where('id',$value['link_id'])->value('order_id'); } break; case 3: //礼品券明细 $query = UserSign::where(['uid'=>$uid]); if($params['mark'] == 1){ $query->where('financial_pm',1);//获得 } if($params['mark'] == 2){ $query->where('financial_pm',0); } $count = $query->count(); //todo 有就拿有得 没得就去获取对应得文本内容 $data =$query ->page($params['page_no'],$params['page_size']) ->order('id','desc') ->select()->toArray(); break; case 4: //返还金明细 -todo back $query = VipFlow::with('store')->where(['user_id'=>$uid]); if($params['mark'] == 1){ $query->where('status',0); } if($params['mark'] == 2){ $query->where('status',1); } $count = $query->count(); $data = $query ->page($params['page_no'],$params['page_size']) ->order('id','desc') ->select()->toArray(); foreach ($data as &$value){ if($value['status'] == 0){ $value['title'] = "购买商品".$value['all']."元获得".$value['number']."元返还金"; }else{ //退回到余额、微信、采购款 $back = self::dealTitleCate($value['pay_type']); $value['title'] = "返还金解冻".$value['number']."元退回到".$back; } } break; default: $data = []; $count = 0; } return [ 'lists' => $data, 'count' => $count ]; } public static function dealTitleCate($pay_type) { switch ($pay_type){ case 18: $title = "采购款"; break; case 17: $title = "现金"; break; case 3: $title ="余额"; break; case 7: case 9: $title ="微信"; break; case 13: $title ="支付宝"; break; default: $title ="默认"; } return $title; } }