You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

185 lines
5.1 KiB

<?php
namespace app\feedback\logic;
use app\feedback\model\FeedbackCategory;
use app\feedback\model\FeedbackConfig;
use app\feedback\model\FeedbackReply;
class Feedback extends Base
{
/**
* 获取意见反馈类别
* @date 2022-12-20
*/
public function listCategory()
{
$category_model = new FeedbackCategory();
$category_list = $category_model->getAllData([
['uid', '=', $this->mid]
], 'id,name');
return sendSuccessArray([
'category_list' => $category_list
]);
}
/**
* 提交意见反馈
* @param int $category_id 分类ID
* @param string $content 内容
* @param array $image_path 图片
* @param string $mobile_phone 手机号
* @param string $linkman 联系人
* @date 2022-12-20
*/
public function insertFeedback($category_id, $content, $image_path, $mobile_phone, $linkman)
{
$category_model = new FeedbackCategory();
$feedback_model = new \app\feedback\model\Feedback();
$category = $category_model->getOneData([
['id', '=', $category_id]
], 'id,name');
if (!$category) {
return sendErrorArray(3001, '反馈类型不存在');
}
$feedback_data = [
'uid' => $this->mid,
'user_id' => $this->userId,
'category_id' => $category['id'],
'category_name' => $category['name'],
'linkman' => $linkman,
'mobile_phone' => $mobile_phone,
'content' => $content,
'image_path' => $image_path,
'status' => 1
];
$res = $feedback_model->dataUpdate($feedback_data);
if (!$res) {
return sendErrorArray(3002, '反馈失败');
}
return sendSuccessArray([], '反馈成功');
}
/**
* 反馈记录列表
* @param int $page 第X页
* @date 2022-12-20
*/
public function listFeedback($page)
{
$feedback_model = new \app\feedback\model\Feedback();
$where = [
['user_id', '=', $this->userId],
['is_user_delete', '=', 0]
];
$field = 'id,content,status,category_name,linkman,mobile_phone,create_time';
$list = $feedback_model->listFeedbackWithPage($where, $page, $field);
return sendSuccessArray([
'list' => $list
]);
}
/**
* 反馈记录删除
* @param int $feedback_id 意见反馈ID
* @date 2022-12-20
*/
public function deleteFeedback($feedback_id)
{
$feedback_model = new \app\feedback\model\Feedback();
$feedback = $feedback_model->getOneData([
['id', '=', $feedback_id],
['is_user_delete', '=', 0]
]);
if (!$feedback) {
return sendErrorArray(3001, '反馈意见不存在');
}
$update_data = [
'id' => $feedback_id,
'is_user_delete' => 1,
'user_delete_time' => time()
];
$res = $feedback_model->dataUpdate($update_data);
if (!$res) {
return sendErrorArray(3002, '删除失败');
}
return sendSuccessArray([], '删除成功');
}
/**
* 反馈意见详情
* @param int $feedback_id 意见反馈ID
* @date 2022-12-20
*/
public function getFeedback($feedback_id)
{
$feedback_model = new \app\feedback\model\Feedback();
$feedback_reply_model = new FeedbackReply();
// 查找详情
$field = 'id,category_name,linkman,mobile_phone,content,image_path,is_reply,create_time,status';
$detail = $feedback_model->getOneData([
['id', '=', $feedback_id],
['is_user_delete', '=', 0]
], $field);
if (empty($detail)) {
return sendErrorArray(3001, '反馈意见不存在');
}
// 图片展示格式转化为前端组件可展示样式
if ($detail['image_path']) {
$image_path = [];
foreach ($detail['image_path'] as $v) {
$image_path[] = [
'type' => 1,
'image_url' => $v
];
}
$detail['image_path'] = $image_path;
}
$detail['show_create_time'] = date('Y.m.d H:i', strtotime($detail['create_time']));
$detail['status_text'] = $detail->status_text;
unset($detail['create_time']);
// 全部回复
$where = [
['feedback_id', '=', $feedback_id]
];
$field = 'id,content,img_url,create_time';
$reply_list = $feedback_reply_model->listFeedbackReply($where, $field);
$reply_list = empty($reply_list) ? [] : $reply_list;
foreach ($reply_list as $k=>$v){
$img = [];
foreach ($v['img_url'] as $v) {
$img[] = [
'type' => 1,
'image_url' => $v
];
}
$reply_list[$k]['img_url'] = $img;
}
return sendSuccessArray([
// 数据
'feedback' => $detail,
// 回复列表
'reply_list' => $reply_list
]);
}
}