建议反馈
This commit is contained in:
7
.env
Normal file
7
.env
Normal file
@@ -0,0 +1,7 @@
|
||||
[email]
|
||||
;发送建议邮件邮箱
|
||||
send_email = tmrweb@tmrjournals.com
|
||||
send_email_password = Wu999999tmrwe
|
||||
|
||||
;审核建议邮箱
|
||||
editor_email = publisher@tmrjournals.com
|
||||
@@ -1 +1,14 @@
|
||||
<?php
|
||||
|
||||
// 建议感谢
|
||||
function getUserEmail($name,$caseId){
|
||||
|
||||
$content = 'Dear '.$name.',<br><br>';
|
||||
$content .= 'Thank you for contacting TMR Publishing Group Service Center.<br><br>'.'Case ID:'.$caseId.'<br><br>';
|
||||
$content .='You will receive a response to your inquiry or suggestion shortly.<br><br>' ;
|
||||
$content .='Please use your case number: '.$caseId.' for future reference regarding this inquiry.<br><br>' ;
|
||||
$content .='Thank you for your support.<br><br>' ;
|
||||
$content .='Sincerely,<br>TMR Publishing Group Service Center<br>'.date('Y-m-d H:i:s') ;
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
300
application/api/controller/Suggest.php
Normal file
300
application/api/controller/Suggest.php
Normal file
@@ -0,0 +1,300 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\controller;
|
||||
|
||||
|
||||
use think\Controller;
|
||||
use think\Db;
|
||||
use think\Env;
|
||||
use think\Log;
|
||||
use think\Queue;
|
||||
use think\Validate;
|
||||
use think\Request;
|
||||
|
||||
/**
|
||||
* @title 建议相关
|
||||
* @description 建议相关
|
||||
*/
|
||||
|
||||
class Suggest extends Controller{
|
||||
|
||||
|
||||
protected $problem_obj = '';
|
||||
protected $suggest_obj = '';
|
||||
protected $user_obj = '';
|
||||
|
||||
|
||||
public function __construct(\think\Request $request = null) {
|
||||
|
||||
parent::__construct($request);
|
||||
$this->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([]);
|
||||
|
||||
}
|
||||
|
||||
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()
|
||||
];
|
||||
$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());
|
||||
$insert['suggest_url'] = $icon;
|
||||
}else{
|
||||
// 上传失败获取错误信息
|
||||
return json(['code'=>1,'msg'=>$file->getError()]);
|
||||
}
|
||||
}
|
||||
$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','RIGHT')
|
||||
->join('t_problem','t_problem.problem_id = t_suggest.problem_id','RIGHT')
|
||||
->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','RIGHT')
|
||||
->join('t_problem','t_problem.problem_id = t_suggest.problem_id','RIGHT')
|
||||
->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([]);
|
||||
}
|
||||
|
||||
|
||||
private function sendEmailForUser($userID,$email,$realname,$caseId,$insert){
|
||||
$sendData=[
|
||||
'sendEmail'=>Env::get('email.send_email'), // 发件人邮箱
|
||||
'sendPassword'=>Env::get('email.send_email_password'), // 发件人密码
|
||||
'user_id'=>$userID, //收件人ID
|
||||
'email'=>$email,// 收件人邮箱
|
||||
'title'=>'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'), // 发件人密码
|
||||
'user_id'=>0,
|
||||
'email'=>Env::get('email.editor_email'),// 收件人邮箱
|
||||
'title'=>'TMR', // 邮件标题
|
||||
'content'=>"Dear editor, please check the new feedback.",//邮件内容
|
||||
];
|
||||
return $editorData;
|
||||
}
|
||||
}
|
||||
54
application/api/job/domail.php
Normal file
54
application/api/job/domail.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace app\api\job;
|
||||
|
||||
use think\Db;
|
||||
use think\Log;
|
||||
use think\queue\Job;
|
||||
|
||||
class domail {
|
||||
|
||||
|
||||
public function fire(Job $job, $data) {
|
||||
$this->send($data);
|
||||
$job->delete();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发送邮件的逻辑
|
||||
* @param type $data
|
||||
*/
|
||||
public function send($data){
|
||||
$res = sendEmail($data['email'],$data['title'],$data['title'],$data['content'],$data['sendEmail'],$data['sendPassword']);
|
||||
$insert = [
|
||||
'title'=>$data['title'],
|
||||
'content'=>$data['content'],
|
||||
'recive_id'=>$data['user_id'],
|
||||
'recive_email'=>$data['email'],
|
||||
'journal_email'=>$data['sendEmail'],
|
||||
'journal_password'=>$data['sendPassword'],
|
||||
'create_time'=>time()
|
||||
];
|
||||
if(isset($data['attachment_url'])){
|
||||
$insert['is_attachment'] = 1;
|
||||
$insert['attachment_url'] = $data['attachment_url'];
|
||||
}
|
||||
if($res['status']==1){
|
||||
$info = Db::name('email')->insert($insert);
|
||||
if(!$info){
|
||||
Log::write($insert,'thanksEmailError');
|
||||
}
|
||||
return true;
|
||||
}else{
|
||||
$insert['is_success'] = 0;
|
||||
$insert['fail_reason'] = $res['data'];
|
||||
$info = Db::name('email')->insert($insert);
|
||||
if(!$info){
|
||||
Log::write($insert,'thanksEmailError');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user