| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /**
- * 用户反馈控制器
- */
- declare (strict_types=1);
- namespace Modules\Api\Controllers;
- use App\Model\FeedbackModel;
- use App\Repositories\Service\CommonService;
- use App\Repositories\UserRepository;
- use App\Repositories\Utils\M3u8CacheRepository;
- use Carbon\Carbon;
- use Hyperf\Validation\Contract\ValidatorFactoryInterface;
- class FeedbackController extends BaseController
- {
- use \Hyperf\Di\Aop\ProxyTrait;
- use \Hyperf\Di\Aop\PropertyHandlerTrait;
- function __construct()
- {
- if (method_exists(parent::class, '__construct')) {
- parent::__construct(...func_get_args());
- }
- $this->__handlePropertyHandler(__CLASS__);
- }
- /**
- * 提交反馈
- * @return mixed
- */
- public function create(ValidatorFactoryInterface $validatorFactory)
- {
- $inputData = $this->getJsonData();
- $rules = ['type' => 'required|int', 'content' => 'required|string'];
- $validator = $validatorFactory->make($inputData, $rules);
- if ($validator->fails()) {
- // 如果有错误(可能是多个信息),这里只取第一个错误信息返回.
- return json_fail($validator->errors()->first());
- }
- $user_code = $this->getUserId();
- $data = ['uid' => $user_code, 'type' => $inputData['type'], 'rid' => '', 'content' => $inputData['content']];
- $create = FeedbackModel::query()->create($data);
- if ($inputData['type'] == 2) {
- $create->content = M3u8CacheRepository::getImageUrl($create->content);
- }
- $user_info = make(UserRepository::class)->getUserInfoFromCache($user_code);
- $create->avatar = $user_info['avatar'];
- Carbon::setLocale('zh');
- $create->time = Carbon::parse($create->created_at)->diffForHumans();
- unset($create->uid, $create->created_at);
- return json_success($create);
- }
- /**
- * 我的反馈列表
- * @return mixed
- */
- public function list(ValidatorFactoryInterface $validatorFactory)
- {
- $inputData = $this->getJsonData();
- $rules = ['page' => 'required|int', 'page_size' => 'required|int'];
- $validator = $validatorFactory->make($inputData, $rules);
- if ($validator->fails()) {
- return json_fail($validator->errors()->first());
- }
- $result = FeedbackModel::query()->where(['uid' => $this->getUserId()])->orderByDesc('id')->paginate((int) $inputData['page_size'], ['type', 'content', 'rid', 'created_at'], 'page', (int) $inputData['page']);
- $user_info = make(UserRepository::class)->getUserInfoFromCache($this->getUserId());
- foreach ($result as $v) {
- if ($v->type == 2) {
- $v->content = M3u8CacheRepository::getImageUrl($v->content);
- }
- if (!$v->rid) {
- $v->avatar = $user_info['avatar'];
- }
- Carbon::setLocale('zh');
- $v->time = Carbon::parse($v->created_at)->diffForHumans();
- unset($v->created_at);
- }
- return json_success($result);
- }
- }
|