service = $services; } /** * 用户注册 * @param Request $request * @return \think\Response */ public function register(Request $request) { $params = $request->post(); try { validate(UserValidate::class)->scene('register')->check($params); if (!vertifyPass(AESjiemi($params['password']))){ throw new Exception('密码必须包含字母和数字,长度大于8位'); } if (!vertifyUserName($params['user_name'])){ throw new Exception('用户名必须包含字母和数字,长度大于6位小于15位'); } $params['password'] = AESjiemi($params['password']); if($uid = $this->service->userRegister($params)){ return api_succ_return(['msg'=>'注册成功', 'data'=> ['uid'=>$uid]]); }else{ return api_error_return('注册失败'); } }catch (ValidateException $e){ return api_error_return($e->getMessage()); }catch (Exception $e){ return api_error_return($e->getMessage()); } } /** * 注册获取上级信息 * @param Request $request * @param UserModel $model * @return \think\Response */ public function registerUpUser(Request $request, UserModel $model){ Db::startTrans(); try { $scanCode = $request->post('scan_code'); if (empty($scanCode) || !$scanCode){ return api_error_return('参数错误'); } $params = getUrlParams($scanCode); $is_px = false; $upuser = $model->where('code', $params['code']) ->field('nickname,mobile,px_code,code,avatar') ->withAttr('avatar', function($val, $data){ return __HTTPIMG($val); })->find(); if (!$upuser){ $upuser = $model->where('px_code', $params['code']) ->field('nickname,px_code,code,avatar,mobile') ->withAttr('avatar', function($val, $data){ return __HTTPIMG($val); })->find(); $is_px = true; } if (!$upuser){ return api_error_return('查询失败,暂无用户'); } $upuser['mobile'] = substr($upuser['mobile'], 0, 3).'****'.substr($upuser['mobile'], 7); $upuser['share_way'] = $is_px?2:1; Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'成功', 'data'=>['user'=>$upuser]]); } /** * 退出登录 * @param Request $request * @return \think\Response */ public function logout(Request $request){ CacheServices::delete('auth:'.md5('yjbuy:' . $request->uid)); return api_succ_return('成功'); } /** * 登录 * @param Request $request * @return \think\Response */ public function login(Request $request) { $curandroid = env('app.CUR_ANDROID_VERSION', ''); $curios = env('app.CUR_IOS_VERSION', '');; $curAndroidVersion = str_replace('.', '', $curandroid); $curAndroidVersion = dispRepair($curAndroidVersion, 4, '0', '0'); $curIosVersion = str_replace('.', '', $curios); $curIosVersion = dispRepair($curIosVersion, 4, '0', '0'); $app_sources = $request->param('app_sources'); $app_version = $request->param('app_version'); $app_version = str_replace('.', '', $app_version); $app_version = dispRepair($app_version, 4, '0', '0'); $param = $request->param(); Db::startTrans(); try { validate(UserValidate::class)->scene('login')->check($param); $data = $this->service->userLogin($param); Db::commit(); return api_succ_return($data); }catch (ValidateException $e){ Db::rollback(); return api_error_return($e->getMessage()); }catch (Exception $e){ Db::rollback(); return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]); } } /** * 编辑用户信息 * @param Request $request * @return \think\Response */ public function editUserInfo(Request $request){ $param = $request->param(); try { return api_succ_return($this->service->setUserInfo($request->uid, $param)); }catch (Exception $e){ return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]); } } /** * 编辑用户信息 * @param Request $request * @return \think\Response */ public function setSellerPayWay(Request $request){ $param = $request->param(); try { return api_succ_return($this->service->setSellerPayWay($request->uid, $param)); }catch (Exception $e){ return api_error_return(['msg'=>$e->getMessage(), 'code'=>$e->getCode()]); } } /** * 用户信息 * @param Request $request * @param UserModel $model * @return \think\Response */ public function userInfo(Request $request, UserModel $model) { Db::startTrans(); try { $user = $model->getUserDetailByUid($request->uid); unset($user['password']); unset($user['status']); unset($user['login_count']); unset($user['login_ip']); unset($user['login_time']); Db::commit(); return api_succ_return(['msg'=>'个人信息获取成功', 'data'=>$user]); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } } /** * 修改登录密码 * @param Request $request * @param UserModel $model * @return \think\Response */ public function editLoginPass(Request $request, UserModel $model) { try { return $model->editLoginPass($request); }catch (\Exception $e){ return api_error_return($e->getMessage()); } } /** * 修改安全密码 * @param Request $request * @param UserModel $model * @return \think\Response */ public function editSecurityPass(Request $request, UserModel $model) { try { return $model->editSecurityPass($request); }catch (\Exception $e){ return api_error_return($e->getMessage()); } } /** * 余额记录 * @param Request $request * @param MoneyLogModel $model * @return \think\Response */ public function moneyLog(Request $request, MoneyLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 绿色积分记录 * @param Request $request * @param GreenScoreLogModel $model * @return \think\Response */ public function greenScoreLog (Request $request, GreenScoreLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 利润结算记录 * @param Request $request * @return \think\Response */ public function incomeMoneyLog(Request $request,MoneyLogModel $model){ try { $pageSize = $request->post('limit', 10); $post = $request->post(); $post['uid'] = $request->uid; // return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]); return api_succ_return(['msg'=>'成功', 'data'=>UserUnmoneyService::make()->getList($post, $pageSize)]); } catch (\Exception $e) { return api_error_return('失败'.$e->getMessage()); } } /** * 积分记录 * @param Request $request * @param ScoreLogModel $model * @return \think\Response */ public function scoreLog (Request $request, ScoreLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * jh记录 * @param Request $request * @param TzLogModel $model * @return \think\Response */ public function jhLog (Request $request, TzLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 福利积分记录 * @param Request $request * @param ScoreAwayLogModel $model * @return \think\Response */ public function scoreAwayLog (Request $request, ScoreAwayLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 锁存积分记录 * @param Request $request * @param ScoreLock1LogModel $model * @return \think\Response */ public function scoreLockLog (Request $request, ScoreLock1LogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 团队数据 * @param Request $request * @param UserModel $model * @return \think\Response */ public function teamData(Request $request, UserModel $model){ try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansData($request->uid)]); } catch (\Exception $e) { return api_error_return($e->getMessage()); } } /** * 团队列表 * @param Request $request * @param UserModel $model * @return \think\Response */ public function teamList(Request $request, UserModel $model){ try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getFansList($request->uid, $request->post('limit'), $request->post('type'), $request->post('keyword'))]); } catch (\Exception $e) { return api_error_return($e->getMessage()); } } /** * 团队信息 * @param Request $request * @return \think\Response * @throws \think\db\exception\DbException */ public function teamInfo(Request $request){ $uid = $request->uid; $display_ids = env('app.NOT_OPEN_GOODS_ID'); $has_display = false; if (strpos($display_ids, strval($uid)) !== false){ $has_display = true; } $data = [ 'zt_valid'=> UserModel::where('pid', $uid)->where('has_fd', 1)->count('id'), 'zt_total'=> UserModel::where('pid', $uid)->count('id'), 'zt_teamtotal'=> UserModel::whereFindInSet('path', $uid)->count('id'), 'zt_teamvalid'=> UserModel::whereFindInSet('path', $uid)->where('has_fd', 1)->count('id'), 'display_str' => $has_display?('团队总充值:'.$request->user_info['total_team_income'].',团队总提现:'.$request->user_info['total_team_withdraw']):'' ]; return api_succ_return(['msg'=>'成功', 'data'=>$data]); } /** * 直推列表 * @param Request $request * @param UserModel $model * @return \think\Response */ public function directListData(Request $request, UserModel $model){ try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getDirectDataList($request->uid, $request->post('is_auth'), $request->post('limit'), $request->post('keyworld'))]); }catch (Exception $e){ return api_error_return($e->getMessage()); } } /** * 活跃点明细 * @param Request $request * @param ActiveLogModel $model * @return \think\Response */ public function activeLog(Request $request, ActiveLogModel $model){ try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); }catch (Exception $e){ return api_error_return($e->getMessage()); } } /** * 反馈建议 * @param Request $request * @param SuggestModel $model * @return \think\Response */ public function suggestSubmit(Request $request, SuggestModel $model){ $post = $request->post(); Db::startTrans(); try { $model->insert([ 'type'=>2, 'uid'=>$request->uid, 'created_time'=>sr_getcurtime(time()), 'content'=>$post['content'] ]); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return('失败'.$e->getMessage()); } return api_succ_return('成功'); } /** * 用户升星 * @param Request $request * @param UserServices $services * @return \think\Response */ public function upgradeLevel (Request $request, UserServices $services) { try { if($result = UserService::make()->upgradeLevel($request->uid, $request->post('type', 2))){ return api_succ_return($result); } } catch (Exception $e) { return api_succ_return(['code'=>$e->getCode(), 'msg'=>$e->getMessage()]); } } /** * 余额兑换成积分 * @param Request $request * @param UserModel $model * @return \think\Response */ public function moneyExchangeScore(Request $request, UserModel $model){ Db::startTrans(); try { $model->moneyExchangescore($request->uid, $request->post('money')); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('兑换成功'); } /** * 今日播放视频数据 * @param Request $request * @return \think\Response */ public function openAdTodayData(Request $request){ $type = $request->post('type'); if (!in_array($type, [1,2])){ return api_error_return('参数错误'); } return api_succ_return(['msg'=>'成功', 'data'=>['total'=>env('AD.ONE_DAY_TASK_NUM'),'today_count'=>env('AD.ONE_DAY_TASK_NUM')]]); } /** * 提现记录 * @param Request $request * @param WithDrawLogModel $model * @return \think\Response */ public function withdrawLog (Request $request, WithDrawLogModel $model) { try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request)]); } catch (\Exception $e) { return api_error_return($e->getMessage()); } } // 绑定提现账号 public function bangWithdrawInfo(Request $request, UserServices $service) { Db::startTrans(); try { $service->bangWithdrawInfo($request->uid, $request->post('type'), $request->post('number'), $request->post('name')); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('绑定成功'); } // 解绑提现账号 public function unBangWithdrawInfo(Request $request, UserServices $service) { Db::startTrans(); try { $service->unbangWithdrawInfo($request->uid, $request->post('type')); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('解绑成功'); } // 用户转赠提交 public function exchargeSubmit(Request $request, UserServices $service){ return api_error_return("星钻转赠以下线"); $post = $request->post(); if ($request->user['mobile'] == $post['mobile']){ return api_error_return('不能给自己转赠'); } Db::startTrans(); try { $info = $service->exchargeSubmit($request->uid, $post['xz_num'], $post['mobile']); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'请求成功', 'data'=>$info]); } // 用户转赠确认 public function exchargeDone(Request $request, UserServices $service){ $post = $request->post(); Db::startTrans(); try { getActionSecury($request->uid, $request->post('security_pass', '')); $info = $service->exchargeDone($request->uid, $post['xz_num'], $post['mobile']); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'请求成功', 'data'=>$info]); } // 用户转赠提交 public function exchargeMedalSubmit(Request $request, UserServices $service){ $post = $request->post(); if ($request->user['mobile'] == $post['mobile']){ return api_error_return('不能给自己转赠'); } Db::startTrans(); try { $info = $service->exchargeMedalSubmit($request->uid, $post['medal_num'], $post['mobile']); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'请求成功', 'data'=>$info]); } // 用户转赠确认 public function exchargeMedalDone(Request $request, UserServices $service){ $post = $request->post(); Db::startTrans(); try { getActionSecury($request->uid, $request->post('security_pass', '')); $info = $service->exchargeMedalDone($request->uid, $post['medal_num'], $post['mobile']); Db::commit(); }catch (Exception $e){ Db::rollback(); // if ($e->getCode() == 399){ // return api_error_return(['msg'=>'请设置安全密码', 'code'=>399]); // } return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'请求成功', 'data'=>$info]); } // 用户播放视频报错 public function watchAdError(Request $request, UserServices $service){ $code = $request->post('error', ''); $message = $request->post('error1', ''); Db::startTrans(); try { $error_codes = explode(',', env('APP.AD_ERROR_CODE')); $error_msgs = explode(',', env('APP.AD_ERROR_MESSAGE')); if (!(in_array($code, $error_codes) && in_array($message, $error_msgs))){ if (!Db::name('ad_error_records')->where('uid', $request->uid)->where('error_code', $code)->where('status', 1)->find()){ Db::name('ad_error_records')->insert([ 'uid'=>$request->uid, 'error_code'=>$code, 'error_msg'=>$message, 'create_time'=>sr_getcurtime(time()) ]); } }else{ throw new Exception('请求失败'); } Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'加载广告失败,请直接领取任务包奖励', 'code'=>200]); } // 首页必读公告获取 public function getHomeMsg(Request $request){ $list = Db::name('system_article')->where('type', 9)->order('create_time desc')->select(); $user = Db::name('user')->where('id', $request->uid)->find(); foreach ($list as $key=>$val){ if (!Db::name('article_get')->where('uid', $request->uid)->where('article_id', $val['id'])->find()){ if ($user['reg_time'] < $val['create_time']){ return api_succ_return(['msg'=>'成功','data'=> [$val]]); } } } return api_succ_return('成功'); } // 用户消息已读 public function getMsgDown(Request $request){ $article_id = $request->post('article_id'); if (Db::name('system_article')->where('id', $article_id)->where('type', 9)->find()){ Db::name('article_get')->insert([ 'uid'=>$request->uid, 'article_id'=>$article_id, 'create_time'=>sr_getcurtime(time()) ]); } return api_succ_return('成功'); } // 用户通知信息列表 public function messageList(Request $request){ $page = $request->post('page', 1); $limit = $request->post('limit', 10); return api_succ_return(['msg'=>'成功', 'data'=>Db::name('user_message')->where('uid', $request->uid)->page($page, $limit)->field('title,type,banner_desc,create_time,uid')->select()->toArray()]); } // 用户余额转赠提交 public function moneyExchargeSubmit(Request $request, UserServices $service){ $post = $request->post(); if ($request->user['mobile'] == $post['mobile']){ return api_error_return('不能给自己转赠'); } Db::startTrans(); try { $info = $service->exchargeMoneySubmit($request->uid, $post['money'], $post['mobile']); Db::commit(); }catch (Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return(['msg'=>'请求成功', 'data'=>$info]); } /** * 取消收藏商品 * @param Request $request * @return \think\Response */ public function cancelAttension(Request $request){ $goodsId = $request->post('goods_id'); if(ShopGoodsService::make()->cancelAttension($request->uid, $goodsId)){ return api_succ_return('成功'); }else{ return api_error_return('失败'); } } /** * 商品收藏列表 * @param Request $request * @return \think\Response * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function goodsAttList(Request $request){ $post = $request->post(); $list = GoodsAttensionModel::alias('a') ->where('a.uid', '=', $request->uid) ->leftJoin('shop_goods g', 'g.goods_id = a.goods_id') ->withAttr('goods_img', function ($value) { return getPreviewUrl($value); }) ->field('a.id,a.goods_id, g.goods_img, g.goods_name,g.goods_sn, g.attension_count,g.price, g.rebate_score') ->page($post['page'], $post['limit']) ->select()->toArray(); return api_succ_return(['msg'=>'成功', 'data'=>$list]); } /** * 用户注销 * @param Request $request * @return \think\Response */ public function denyOff(Request $request){ return api_succ_return('功能暂未开放'); } /** * 回收卡信息 * @param Request $request * @return \think\Response * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function recycleCardInfo(Request $request){ $data = []; $user_info = Db::name('user')->where('id', $request->uid)->field('today_money,todayaward_money,store_type')->find(); $data['every_day_recycle_count'] = $user_info['store_type'] == 1?120:20; $zt_numcount = Db::name('user')->where('pid', $request->uid)->where('has_fd', 1)->count(); $data['zt_count'] = $zt_numcount * env('boxsetting.ONE_DIRECT_RECYCLE_COUNT'); $has_get = Db::name('recyclecard_log')->where('type', 1)->where('uid', $request->uid)->whereDay('create_at', 'today')->find(); $has_ztget = Db::name('recyclecard_log')->where('type', 2)->where('uid', $request->uid)->whereDay('create_at', 'today')->find(); $data['has_today_get'] = $has_get?1:0; $data['has_today_ztget'] = $has_ztget?1:0; $data['todayaward_money'] = $user_info['todayaward_money']; $data['today_money']=$user_info['today_money']; $data['services_store_price']=env('boxsetting.SERVICES_STORE_OPEN_PRICE'); return api_succ_return(['msg'=>'成功', 'data'=>$data]); } /** * 领取回收卡 * @param Request $request * @return \think\Response */ public function getRecycleCard(Request $request){ $type = $request->post('type'); $model = new UserModel(); Db::startTrans(); try { $model->getRecycleCard($request->uid, $type, $request->user); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('领取成功'); } /** * 领取每日奖金 * @param Request $request * @return \think\Response */ public function getUserTeamMoney(Request $request){ $model = new UserModel(); return api_error_return('奖金已在每天21后自动领取'); Db::startTrans(); try { $model->getUserTeamMoney($request->uid); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('领取成功'); } /** * 今日奖金记录 * @param Request $request * @return \think\Response */ public function todayTeamMoneyLog(Request $request){ $model = new MoneyLogModel(); try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getTeamMoneyLog($request)]); } catch (\Exception $e) { return api_error_return('失败'); } } /** * 利润结算到余额 * @param Request $request * @return \think\Response */ public function getUserIncomeTeam(Request $request){ $model = new UserModel(); Db::startTrans(); try { $cacheKey = "caches:profits:settles:{$request->uid}"; if(RedisCache::get($cacheKey)){ return api_error_return('请不要频繁提交'); } RedisCache::setnx($cacheKey, 1, rand(2,3)); UserService::make()->switchProfitToMoney($request->uid); Db::commit(); }catch (\Exception $e){ Db::rollback(); RedisCache::clear($cacheKey); return api_error_return('结算失败'.$e->getMessage()); } return api_succ_return('结算成功'); } /** * 消费记录 * @param Request $request * @return \think\Response */ public function consumeLog(Request $request){ $model = new PaymentModel(); try { return api_succ_return(['msg'=>'成功', 'data'=>$model->getLog($request, 8)]); } catch (\Exception $e) { return api_error_return('失败'.$e->getMessage()); } } /** * 商务合作申请 * @param Request $request * @return \think\Response */ public function bussinessApply(Request $request){ $model = new UserModel(); Db::startTrans(); try { $model->bussinessApply($request->uid, $request->post()); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('申请成功'); } /** * 用户利润信息用户利润信息 * @param Request $request * @return \think\Response * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function userProfitInfo(Request $request){ $user_info = Db::name('user')->where('id', $request->uid)->find(); return api_succ_return(['msg'=>'成功', 'data'=>[ 'total'=>$user_info['total_profit_money'], 'cur_profit'=>$user_info['profit_money'], 'desc'=>'按照100的倍数结算到余额' ]]); } /** * 邀请好友 绑定上级好友 * @param Request $request * @return \think\Response */ public function bangUpFriend(Request $request){ $model = new UserModel(); Db::startTrans(); try { $model->bangUpFriend($request->uid, $request->post()); Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return($e->getMessage()); } return api_succ_return('绑定成功'); } /** * 获得直推上级信息 * @param Request $request * @return \think\Response * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getUpUserInfo(Request $request){ $user_info = $request->user_info; if ($user_info['pid'] > 0){ $pid_info = Db::name('user')->where('id', $user_info['pid'])->field('nickname,mobile,id')->find(); $pid_info['mobile'] = substr($pid_info['mobile'], 0, 3).'****'.substr($pid_info['mobile'], 7); return api_succ_return(['msg'=>'成功', 'data'=>$pid_info]); }else{ return api_succ_return(['msg'=>'成功', 'data'=>[]]); } } /** * 获取用户订单状态 处理 * @param Request $request * @return \think\Response */ public function orderUnreadInfo(Request $request){ $data = []; Db::startTrans(); try { $count1 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 0)->count(); $count2 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 1)->count(); $count3 = Db::name('shop_order')->where('user_id', $request->uid)->where('status', 2)->count(); $data = [$count1, $count2, $count3, 0]; Db::commit(); }catch (\Exception $e){ Db::rollback(); return api_error_return('接口请求失败'); } return api_succ_return(['msg'=>'成功', 'data'=>$data]); } }