problem_obj = Db::name('problem'); $this->suggest_obj = Db::name('suggest'); $this->user_obj = Db::name('user'); } /** * @title 获取问题列表 * @description 获取问题列表 * @author wangzhaocui * @url /api/Suggest/getProblem * @method POST * * * @return problem_id:问题ID# * @return problem_title:问题title# * */ public function getProblem(){ if (!Request::instance()->isPost()){ return json(['code'=>1,'msg'=>"Request method error"]); } $res = $this->problem_obj->where('problem_title_state',0)->field('problem_id,problem_title')->select(); return jsonSuccess($res); } /** * @title 新增问题列表选项 * @description 新增问题列表选项 * @author wangzhaocui * @url /api/Suggest/addProblem * @method POST * * @param name:problem_title type:string require:1 desc:标题 * @param name:problem_press type:string require:1 desc:出版集团 * @param name:problem_type type:string require:1 desc:类型 * * @return problem_id:问题ID# * @return problem_title:问题title# * */ public function addProblem(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'problem_title'=>'require', 'problem_press'=>'require', 'problem_type'=>'require' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } $insert=[ 'problem_title'=>$data['problem_title'], 'problem_press'=>$data['problem_press'], 'problem_type'=>$data['problem_type'], 'problem_ctime'=>time(), ]; $this->problem_obj->insert($insert); return jsonSuccess([]); } /** * @title 修改问题列表 * @description 修改问题列表 * @author wangzhaocui * @url /api/Suggest/updateProblem * @method POST * * @param name:problem_id type:int require:1 desc:ID * @param name:problem_title type:string require:1 desc:标题 * @param name:problem_press type:string require:1 desc:出版集团 * @param name:problem_type type:string require:1 desc:类型 * @param name:problem_title_state type:int require:1 desc:状态0正常1删除 * */ public function updateProblem(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'problem_id'=>'require|number', 'problem_title'=>'require', 'problem_press'=>'require', 'problem_type'=>'require', 'problem_title_state'=>'require|number' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } $this->problem_obj->where('problem_id',$data['problem_id'])->update($data); return jsonSuccess([]); } /** * @title 提交建议 * @description 提交建议 * @author wangzhaocui * @url /api/Suggest/addSuggest * @method POST * * @param name:user_id type:int require:1 desc:用户id * @param name:problem_id type:int require:1 desc:问题id * @param name:suggest_desc type:string require:1 desc:问题描述 * @param name:img type:file require:0 desc:问题图片 */ public function addSuggest(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'user_id'=>'require|number', 'problem_id'=>'require|number', 'suggest_desc'=>'require' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } $insert=[ 'user_id'=>$data['user_id'], 'problem_id'=>$data['problem_id'], 'suggest_desc'=>$data['suggest_desc'], 'suggest_ctime'=>time(), 'suggest_url'=>$data['suggest_url'] ]; $userEmail = $this->user_obj->where('user_id',$data['user_id'])->field('email,realname')->find(); $problemInfo = $this->problem_obj->where(['problem_id'=>$data['problem_id'],'problem_title_state'=>0])->find(); //建议写入数据表 $id = $this->suggest_obj->insertGetId($insert); $caseId = $problemInfo['problem_press'].'-'.$problemInfo['problem_type'].'-'.date('Ymd').'-'.sprintf("%03d", $id); // 给用户发送感谢邮件 $sendUser = self::sendEmailForUser($data['user_id'],$userEmail['email'],$userEmail['realname'],$caseId,$insert); // 给编辑发送邮件 $sendEditor = self::sendEmailForEditor(); $isUserPushed = Queue::push('app\api\job\domail@fire',$sendUser,'domail'); $isEditorPushed = Queue::push('app\api\job\domail@fire',$sendEditor,'domail'); return jsonSuccess([]); } /** * @title 获取建议列表和搜索 * @description 获取建议列表和搜索 * @author wangzhaocui * @url /api/Suggest/getSuggestList * @method POST * * @param name:pageIndex type:int require:1 desc:页数 * @param name:pageSize type:int require:1 desc:条数 * @param name:problem_id type:int require:0 desc:问题id * @param name:suggest_state type:int require:0 desc:状态 * * @return data:建议# * @return total:总数# * */ public function getSuggestList(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'pageIndex'=>'require|number', 'pageSize'=>'require|number' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } $where=[]; if(isset($data['problem_id']) && $data['problem_id']>0){ $where['t_suggest.problem_id'] = $data['problem_id']; } if(isset($data['suggest_state']) && $data['suggest_state']>=0){ $where['t_suggest.suggest_state'] = $data['suggest_state']; } $res['data'] = $this->suggest_obj->field('t_suggest.*,t_user.realname,t_problem.problem_title') ->join('t_user','t_user.user_id = t_suggest.user_id','LEFT') ->join('t_problem','t_problem.problem_id = t_suggest.problem_id','LEFT') ->where($where) ->page($data['pageIndex'],$data['pageSize']) ->select(); $res['total'] = $this->suggest_obj->where($where)->count(); return jsonSuccess($res); } /** * @title 查看建议详情 * @description 查看建议详情 * @author wangzhaocui * @url /api/Suggest/getSuggestDetail * @method POST * * @param name:suggest_id type:int require:1 desc:建议id * */ public function getSuggestDetail(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'suggest_id'=>'require|number' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } $res = $this->suggest_obj->field('t_suggest.*,t_user.realname,t_problem.problem_title') ->join('t_user','t_user.user_id = t_suggest.user_id','LEFT') ->join('t_problem','t_problem.problem_id = t_suggest.problem_id','LEFT') ->where(['t_suggest.suggest_id'=>$data['suggest_id']]) ->find(); return jsonSuccess($res); } /** * @title 审核建议 * @description 审核建议 * @author wangzhaocui * @url /api/Suggest/updateSuggest * @method POST * * @param name:suggest_id type:int require:1 desc:建议id * */ public function updateSuggest(){ $data = $this->request->post(); // 验证规则 $rule = new Validate([ 'suggest_id'=>'require|number' ]); if(!$rule->check($data)){ return json(['code' => 1,'msg'=>$rule->getError()]); } // 先查看这条建议是否被审核 $state = $this->suggest_obj->where('suggest_id',$data['suggest_id'])->find(); if($state['suggest_state']==1 ){ return json(['code' => 1,'msg'=>'please do not review again']); } $res = $this->suggest_obj->where('suggest_id',$data['suggest_id'])->update(['suggest_state'=>1]); return jsonSuccess([]); } /** * @title 上传反馈图片 * @description 上传反馈图片 * @author wangzhaocui * @url /api/Suggest/upImg * @method POST * @param name:img type:file require:1 desc:图片 * */ // 上传反馈图片 public function upImg(){ $file = request()->file('img'); if($file){ $info = $file->move(ROOT_PATH . 'public' . DS . 'suggest'); if($info){ // 输出 suggest/20160820/42a79759f284b767dfcb2a0197904287.jpg $icon = 'suggest/'.str_replace("\\", "/", $info->getSaveName()); return jsonSuccess(['icon'=>$icon]); }else{ // 上传失败获取错误信息 return json(['code'=>1,'msg'=>$file->getError()]); } } } private function sendEmailForUser($userID,$email,$realname,$caseId,$insert){ $sendData=[ 'sendEmail'=>Env::get('email.send_email'), // 发件人邮箱 'sendPassword'=>Env::get('email.send_email_password'), // 发件人密码 'journal_id'=>0, 'user_id'=>$userID, //收件人ID 'email'=>$email,// 收件人邮箱 'title'=>'Dear ' . $realname, // 邮件标题 'from_name'=>'TMR', 'content'=>getUserEmail($realname,$caseId),//邮件内容 ]; if(isset($insert['suggest_url'])){ $sendData['is_attachment'] = 1; $sendData['attachment_url'] = $insert['suggest_url']; } return $sendData; } private function sendEmailForEditor(){ $editorData=[ 'sendEmail'=>Env::get('email.send_email'), // 发件人邮箱 'sendPassword'=>Env::get('email.send_email_password'), // 发件人密码 'journal_id'=>0, 'user_id'=>0, 'email'=>Env::get('email.editor_email'),// 收件人邮箱 'title'=>'Dear editor', // 邮件标题 'from_name'=>'TMR', 'content'=>"Dear editor, please check the new feedback.",//邮件内容 ]; return $editorData; } }