header('x-package', ''); $data = $this->user_info; if (!$data->head_img) { $data->head_img = 'https://yueduyun.oss-cn-hangzhou.aliyuncs.com/xiaochengxu/img/defaulthead.png'; } $home_page = 'index'; if(!empty($package)){ $home_page = QappPackage::where('package',$package)->value('home_page'); } //快应用首页默认展示 $data['home_page'] = empty($home_page) ? 'index' : $home_page; $data['is_vip'] = 0; $data['vip_days'] = 0; $data['book_sex'] = 1; $data['phone'] = $this->phone; $year_record = YearOrderService::getRecord($this->uid); if ($year_record) { $data['is_vip'] = 1; $time = strtotime($year_record['end_time']) - time(); if ($time >= 86400) { $data['vip_days'] = floor($time / 86400) . '天'; } elseif ($time > 3600) { $data['vip_days'] = floor($time / 3600) . '小时'; } elseif ($time > 60) { $data['vip_days'] = floor($time / 60) . '分钟'; } else { $data['vip_days'] = $time . '秒'; } } $data['pay_mode_default'] = 'weixin'; $data['is_check'] = $data->distribution_channel_id == 9487 ? true : false; $user = (new QappUserService())->getQAppUserByUid($data['id']); if(!$user || $user->status == 0){ \Log::info('user_log_off_user_info:uid:'.$user->uid); $data['balance'] = 0; $data['charge_balance'] = 0; $data['reward_balance'] = 0; $data['is_vip'] = 0; $data['vip_days'] = 0; }else{ $send_order_id = !empty($this->send_order_id) ? $this->send_order_id : !empty($user->send_order_id) ? $user->send_order_id : 0; if($send_order_id){ $send_order = SendOrder::find($send_order_id); $book = Book::leftjoin('book_categories','book_categories.id','books.category_id') ->where('books.id',$send_order->book_id) ->select('book_categories.pid') ->first(); $data['book_sex'] = (isset($book->pid) && $book->pid == 2) ? 0 : 1; } } // $data['is_check'] = !$this->phone; \Log::info('user_info:'.$this->uid.' data:'.json_encode($data)); return response()->success($data); } /** * @apiVersion 1.0.0 * @apiDescription 用户签到 * @api {GET} sign 用户签到 * @apiHeader {String} [Authorization] token * @apiGroup User * @apiName sign * @apiSuccess {Double} fee 签到奖励 * @apiSuccess {Number} days 签到天数 * @apiSuccess {Array} day_list 签到列表 * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": { * "fee": 30, * "days": 1 * "day_list": [] * } * } */ public function sign() { $result = UserSignService::sign($this->uid, date('Y-m-d')); if ($result) { return response()->success($result); } return response()->error('QAPP_SYS_ERROR'); } /** * @apiVersion 1.0.0 * @apiDescription 发送验证码 * @api {POST} user/sendCode 发送验证码 * @apiHeader {String} [Authorization] token * @apiGroup User * @apiName sendCode * @apiParam {String} phone 手机号 * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": {} * } */ public function sendCode(Request $request) { $phone = $request->post('phone'); if ($phone) { $code = random_int(1000, 9999); Redis::setex('quser_code:' . $phone, 120, $code); AliSMS::send($phone, 'quickapp_user_bind_phone', ['code' => $code]); return response()->success(); } else { return response()->error('WAP_BIND_PHONE_EXIST'); } } /** * @apiVersion 1.0.0 * @apiDescription 绑定手机号 * @api {POST} user/bindPhone 绑定手机号 * @apiHeader {String} [Authorization] token * @apiGroup User * @apiName bindPhone * @apiParam {String} phone 手机号 * @apiParam {String} code 验证码 * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": {} * } */ public function bindPhone(Request $request) { $code = $request->post('code'); $phone = $request->post('phone'); $version = $request->post('version', '1.0'); $old = Redis::get('quser_code:' . $phone); if ($old && $old == $code) { Redis::del('quser_code:' . $phone); if (!$this->phone) { $result = (new QappUserService)->bindPhone($this->uid, $phone, $version); if ($result) { return response()->success(); } else { return response()->error('WAP_BIND_PHONE_EXIST'); } } else { return response()->success(); } } else { return response()->error('WAP_SEND_CODE_ERROR'); } } /** * @apiVersion 1.0.0 * @apiDescription 用户签到记录 * @api {GET} user/sign_record 用户签到记录 * @apiGroup User * @apiName signRecord * @apiParam {String} date 查询日期每个月一号 * @apiSuccess {int} code 状态码 * @apiSuccess {String} msg 信息 * @apiSuccess {object} data 结果集 * @apiSuccess {sign_status} data.sign_status . * @apiSuccess {sign_result} data.sign_result . * @apiSuccess {sign_today} data.sign_today . * @apiParam {page} page * @apiSuccessExample {json} Success-Response: * * { * code: 0, * msg: "", * data: { * "sign_status": true, * "sign_result": { * "list": [ * { * "reward": 30, * "sign_time": "2019-11-01 14:20:30" * } * ], * "meta": { * "total": 1, * "per_page": 15, * "current_page": 1, * "last_page": 1, * "next_page_url": "", * "prev_page_url": "" * } * }, * "sign_today": { * "uid": 162261523, * "price": 50, * "day": "2019-11-01", * "sign_time": "2019-11-01 09:04:43", * "created_at": "2019-11-01 09:04:43", * "updated_at": "2019-11-01 09:04:43", * "reward": 50 * } * } */ public function signRecord(Request $request) { $month = $request->get('date', date('Y-m-01')); $page_size = $request->get('page_size', 15); $sign_result = paginationTransform(new SignRecordTransformer(), UserSignService::getUserSignRecord($this->uid, $month, $page_size)); $sign_status = UserSignService::isSign($this->uid); $sign_today = []; if ($sign_status) { $sign_today = ReadRecordService::getByField($this->uid, 'sign_info'); if ($sign_today) $sign_today = json_decode($sign_today, 1); isset($sign_today['sign_time']) && $sign_today['sign_time'] = date('Y-m-d H:i:s', $sign_today['sign_time']); isset($sign_today['sign_at']) && $sign_today['sign_time'] = $sign_today['sign_at']; isset($sign_today['price']) && $sign_today['reward'] = $sign_today['price']; } $result = [ 'sign_status' => $sign_status, 'sign_result' => $sign_result, 'sign_today' => $sign_today ]; return response()->success($result); } /** * @apiVersion 1.0.0 * @apiDescription 催更 * @api {POST} user/urgeUpdate 催更 * @apiHeader {String} [Authorization] token * @apiGroup User * @apiName urgeUpdate * @apiParam {String} bid 书号 * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": {} * } */ public function urgeUpdate(Request $request) { $bid = $request->input('bid'); if (empty($bid)) { return response()->error('PARAM_ERROR'); } $bid = BookService::decodeBidStatic($bid); $result = BookUrgeUpdateService::UrgeRecord($this->uid, $bid); if ($result && !$result->id) { BookUrgeUpdateService::UrgeUpdate($this->uid, $bid, $result->updated_at); } return response()->success(); } /** * @apiVersion 1.0.0 * @apiDescription 更新派单ID * @api {GET} user/setSendOrder 更新派单ID * @apiHeader {String} [Authorization] token * @apiGroup User * @apiName setSendOrder * @apiParam {Int} send_order_id 派单ID * @apiSuccessExample {json} Success-Response: * * { * "code": 0, * "msg": "", * "data": {} */ public function setSendOrder(Request $request) { $send_order_id = $request->get('send_order_id', 0); if ($send_order_id) { UserService::setUserSendOrder($this->uid, $send_order_id); } return response()->success(); } /** * 加桌 */ public function addDesktop(Request $request) { $status = $request->get('status'); if (is_numeric($status)) { UserService::qappAddDesktop($this->uid, $status); } } /** * 获取任务奖励 */ public function getUserTaskReward(int $id) { $service = new UserTaskService($this->uid); $result = $service->getTaskReward($id); if ($result == 1) { return response()->success(['is_sign' => true]); } else if ($result == -1) { return response()->error('REWARD_GOTTEN_ERROR'); } else if ($result == 0) { return response()->error('NO_REWARD'); } } /** * 任务中心 */ public function taskList() { $service = new UserTaskService($this->uid); $new_user_tasks = $service->findNewUserTaskList(); $date_tasks = $service->findDateUserTaskList(); return response()->success(compact('new_user_tasks', 'date_tasks')); } /** * 注销用户 * @return mixed */ public function logOff() { $service = new QappUserService(); $res = $service->getLogOff($this->uid); \Log::info('user_log_off:uid:'.$this->uid.' res:'.$res); if($res){ return response()->success(); } return response()->error('QAPP_SYS_ERROR'); } /** * 新版签到信息 */ public function findSignInfo() { $service = new SignService($this->uid); return response()->success($service->getSignInfo()); } /** * 新版签到 */ public function newSign() { $service = new SignService($this->uid); $service->sign(); return response()->success(); } }