repository = $repository; } /** * @return mixed * @author zfy * @day 2020/6/22 */ public function spread_image() { $type = $this->request->param('type'); $res = $type == 'routine' ? $this->repository->routineSpreadImage($this->request->userInfo()) : $this->repository->wxSpreadImage($this->request->userInfo()); return app('json')->success($res); } public function spread_image_v2() { $type = $this->request->param('type'); $user = $this->request->userInfo(); $siteName = systemConfig('site_name'); $qrcode = $type == 'routine' ? $this->repository->mpQrcode($user) : $this->repository->wxQrcode($user); $poster = systemGroupData('spread_banner'); $nickname = $user['nickname']; $mark = '邀请您加入' . $siteName; return app('json')->success(compact('qrcode', 'poster', 'nickname', 'mark')); } public function spread_info() { $user = $this->request->userInfo(); $make = app()->make(UserBrokerageRepository::class); $user->append(['one_level_count', 'lock_brokerage', 'two_level_count', 'spread_total', 'yesterday_brokerage', 'total_extract', 'total_brokerage', 'total_brokerage_price']); $show_brokerage = (bool)$make->search([])->count(); $data = [ 'total_brokerage_price' => $user->total_brokerage_price, 'lock_brokerage' => $user->lock_brokerage, 'one_level_count' => $user->one_level_count, 'two_level_count' => $user->two_level_count, 'spread_total' => $user->spread_total, 'yesterday_brokerage' => $user->yesterday_brokerage, 'total_extract' => $user->total_extract, 'total_brokerage' => $user->total_brokerage, 'brokerage_price' => $user->brokerage_price, 'show_brokerage' => $show_brokerage, 'brokerage' => $show_brokerage ? ($user->brokerage ?: ['brokerage_level' => 0, 'brokerage_name' => '普通分销员']) : null, 'now_money' => $user->now_money, 'broken_day' => (int)systemConfig('lock_brokerage_timer'), 'user_extract_min' => (int)systemConfig('user_extract_min'), ]; return app('json')->success($data); } public function brokerage_all() { return app('json')->success(app()->make(UserBrokerageRepository::class)->all()); } public function brokerage_info() { $make = app()->make(UserBrokerageRepository::class); $user = $this->request->userInfo(); $brokerage = $user->brokerage; $next_brokerage = $make->getNextLevel($user->brokerage_level) ?: $brokerage; $brokerage_rate = null; if ($next_brokerage || $brokerage) { $brokerage_rate = $make->getLevelRate($user, $next_brokerage); } $down_brokerage = null; if ($next_brokerage) { $down_brokerage = $make->getNextLevel($next_brokerage->brokerage_level); } $brokerage = $brokerage ?: ['brokerage_level' => 0, 'brokerage_name' => '普通分销员']; return app('json')->success(compact('brokerage', 'next_brokerage', 'brokerage_rate', 'down_brokerage')); } public function brokerage_notice() { $user = $this->request->userInfo(); if (!$user->brokerage_level) { return app('json')->fail('无需通知'); } $make = app()->make(CacheRepository::class); $key = 'notice_' . $user->uid . '_' . $user->brokerage_level; if ($make->getResult($key)) { return app('json')->fail('已通知'); } $make->create(['key' => $key, 'result' => 1, 'expire_time' => 0]); $userBrokerageRepository = app()->make(UserBrokerageRepository::class); return app('json')->success(['type' => $userBrokerageRepository->getNextLevel($user->brokerage_level) ? 'level' : 'top']); } /** * @param UserBillRepository $billRepository * @return mixed * @author zfy * @day 2020/6/22 */ public function bill(UserBillRepository $billRepository) { [$page, $limit] = $this->getPage(); return app('json')->success($billRepository->userList([ 'now_money' => $this->request->param('type', 0), 'status' => 1, ], $this->request->uid(), $page, $limit)); } /** * @param UserBillRepository $billRepository * @return mixed * @author zfy * @day 2020/6/22 */ public function brokerage_list(UserBillRepository $billRepository) { [$page, $limit] = $this->getPage(); return app('json')->success($billRepository->userList([ 'category' => 'brokerage', ], $this->request->uid(), $page, $limit)); } /** * @return mixed * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author zfy * @day 2020/6/22 */ public function spread_order() { [$page, $limit] = $this->getPage(); return app('json')->success($this->repository->subOrder($this->request->uid(), $page, $limit)); } /** * TODO * @return mixed * @author Qinii * @day 2020-06-18 */ public function binding() { $data = $this->request->params(['phone', 'sms_code']); if (!$data['sms_code'] || !(YunxinSmsService::create())->checkSmsCode($data['phone'], $data['sms_code'],'binding')) return app('json')->fail('验证码不正确'); $user = $this->repository->accountByUser($data['phone']); if ($user) { $data = ['phone' => $data['phone']]; } else { $data = ['account' => $data['phone'], 'phone' => $data['phone']]; } $this->repository->update($this->request->uid(), $data); return app('json')->success('绑定成功'); } /** * @return mixed * @throws DataNotFoundException * @throws DbException * @throws ModelNotFoundException * @author zfy * @day 2020/6/22 */ public function spread_list() { [$level, $sort, $nickname] = $this->request->params(['level', 'sort', 'keyword'], true); $uid = $this->request->uid(); [$page, $limit] = $this->getPage(); return app('json')->success($level == 2 ? $this->repository->getTwoLevelList($uid, $nickname, $sort, $page, $limit) : $this->repository->getOneLevelList($uid, $nickname, $sort, $page, $limit)); } /** * @return mixed * @author zfy * @day 2020/6/22 */ public function spread_top() { [$page, $limit] = $this->getPage(); $type = $this->request->param('type', 0); return app('json')->success($type == 1 ? $this->repository->spreadMonthTop($page, $limit) : $this->repository->spreadWeekTop($page, $limit)); } /** * @return mixed * @author zfy * @day 2020/6/22 */ public function brokerage_top() { [$page, $limit] = $this->getPage(); $type = $this->request->param('type', 'week'); $uid = $this->request->uid(); return app('json')->success($type == 'month' ? $this->repository->brokerageMonthTop($uid, $page, $limit) : $this->repository->brokerageWeekTop($uid, $page, $limit)); } public function history(UserVisitRepository $repository) { $uid = $this->request->uid(); [$page, $limit] = $this->getPage(); return app('json')->success($repository->getHistory($uid, $page, $limit)); } public function deleteHistory($id, UserVisitRepository $repository) { $uid = $this->request->uid(); if (!$repository->getWhereCount(['user_visit_id' => $id, 'uid' => $uid])) return app('json')->fail('数据不存在'); $repository->delete($id); return app('json')->success('删除成功'); } public function deleteHistoryBatch(UserVisitRepository $repository) { $uid = $this->request->uid(); $data = $this->request->param('ids'); if(!empty($data) && is_array($data)){ foreach ($data as $id){ if (!$repository->getWhereCount(['user_visit_id' => $id, 'uid' => $uid])) return app('json')->fail('数据不存在'); } $repository->batchDelete($data,null); } if($data == 1) $repository->batchDelete(null,$uid); return app('json')->success('删除成功'); } public function account() { $user = $this->request->userInfo(); if (!$user->phone) return app('json')->fail('请绑定手机号'); return app('json')->success($this->repository->selfUserList($user->phone)); } public function switchUser() { $uid = (int)$this->request->param('uid'); if (!$uid) return app('json')->fail('用户不存在'); $userInfo = $this->request->userInfo(); if (!$userInfo->phone) return app('json')->fail('请绑定手机号'); $user = $this->repository->switchUser($userInfo, $uid); $tokenInfo = $this->repository->createToken($user); $this->repository->loginAfter($user); return app('json')->success($this->repository->returnToken($user, $tokenInfo)); } public function edit() { $data = $this->request->params(['avatar','nickname']); $uid = (int)$this->request->param('uid'); if (!$uid) return app('json')->fail('用户不存在'); if(empty($data['avatar'])) unset($data['avatar']); if(empty($data['nickname'])) unset($data['nickname']); if(empty($data)) return app('json')->fail('参数丢失'); $this->repository->update($this->request->uid(),$data); return app('json')->success('修改成功'); } public function chagePassword() { $data = $this->request->params(['password', 'sms_code']); if (!$data['sms_code'] || !(YunxinSmsService::create())->checkSmsCode($data['phone'], $data['sms_code'],'binding')) return app('json')->fail('验证码不正确'); $user = $this->repository->accountByUser($data['phone']); if ($user) { $data = ['phone' => $data['phone']]; } else { $data = ['account' => $data['phone'], 'phone' => $data['phone']]; } $this->repository->update($this->request->uid(), $data); return app('json')->success('绑定成功'); } public function getAgree($key) { $make = app()->make(CacheRepository::class); $data = $make->getResult($key); return app('json')->success($data); } public function integralInfo(UserBillRepository $make) { if (!systemConfig('integral_status')) { return app('json')->fail('积分功能未开启'); } $user = $this->request->userInfo(); $integral = $user->integral; $lockIntegral = $make->lockIntegral($user->uid); $deductionIntegral = $make->deductionIntegral($user->uid); $totalGainIntegral = $make->totalGainIntegral($user->uid); $make1 = app()->make(IntegralRepository::class); $nextClearDay = $make1->getTimeoutDay(); $status = $nextClearDay < strtotime('+20 day'); $invalidDay = $make1->getInvalidDay(); if ($status && $integral > 0 && $invalidDay) { $validIntegral = $make->validIntegral($user->uid, date('Y-m-d H:i:s', $invalidDay), date('Y-m-d H:i:s', $nextClearDay)); if ($integral > $validIntegral) { $nextClearIntegral = (int)bcsub($integral, $validIntegral, 0); } else { $nextClearIntegral = 0; } } else { $nextClearIntegral = 0; } $nextClearDay = date('m月d日', $nextClearDay); $clear = compact('nextClearDay', 'status', 'nextClearIntegral'); return app('json')->success(compact('integral', 'lockIntegral', 'deductionIntegral', 'totalGainIntegral', 'clear')); } public function integralList(UserBillRepository $repository) { if (!systemConfig('integral_status')) { return app('json')->fail('积分功能未开启'); } [$page, $limit] = $this->getPage(); $data = $repository->userList(['category' => 'integral'], $this->request->userInfo()->uid, $page, $limit); return app('json')->success($data); } public function services() { $uid = $this->request->userInfo()->uid; $where = $this->request->params(['is_verify', 'customer']); return app('json')->success(app()->make(StoreServiceRepository::class)->getServices($uid, $where)); } }