| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace plugin\saiadmin\app\controller\user;
- use plugin\saiadmin\app\logic\user\UserFeedbackLogic;
- use plugin\saiadmin\app\validate\user\UserFeedbackValidate;
- use plugin\saiadmin\basic\BaseController;
- use plugin\saiadmin\service\Permission;
- use support\Request;
- use support\Response;
- /** 用户反馈管理控制器。 */
- class UserFeedbackController extends BaseController
- {
- public function __construct()
- {
- $this->logic = new UserFeedbackLogic();
- $this->validate = new UserFeedbackValidate();
- parent::__construct();
- }
- #[Permission('用户反馈列表', 'core:user:feedback:index')]
- public function index(Request $request): Response
- {
- return $this->success($this->logic->indexList($this->filters($request)));
- }
- #[Permission('用户反馈详情', 'core:user:feedback:read')]
- public function read(Request $request): Response
- {
- return $this->success($this->logic->readFeedback((int) $request->input('id', 0)));
- }
- #[Permission('更新用户反馈状态', 'core:user:feedback:update')]
- public function update(Request $request): Response
- {
- $data = $this->body($request);
- $this->validate('status', $data);
- $this->logic->updateStatus($data, (int) $this->adminId, $this->operatorName());
- return $this->success('处理状态已更新');
- }
- #[Permission('回复用户反馈', 'core:user:feedback:reply')]
- public function reply(Request $request): Response
- {
- $data = $this->body($request);
- $this->validate('reply', $data);
- return $this->success(
- $this->logic->reply($data, (int) $this->adminId, $this->operatorName()),
- '回复成功'
- );
- }
- #[Permission('导出用户反馈', 'core:user:feedback:export')]
- public function export(Request $request): Response
- {
- return $this->logic->export($this->filters($request));
- }
- private function filters(Request $request): array
- {
- return $request->more([
- ['status', ''], ['type', ''], ['device_type', ''], ['phone', ''],
- ['merchant', ''], ['device_sn', ''], ['content', ''],
- ['start_date', ''], ['end_date', ''],
- ]);
- }
- private function body(Request $request): array
- {
- $data = $request->post();
- if ($data === []) {
- $json = json_decode($request->rawBody(), true);
- return is_array($json) ? $json : [];
- }
- return $data;
- }
- private function operatorName(): string
- {
- return (string) (($this->adminInfo['realname'] ?? '') ?: ($this->adminInfo['username'] ?? $this->adminName));
- }
- }
|