Goods.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\controller\admin;
  3. use app\extra\basic\Base;
  4. use app\middleware\AuthMiddleware;
  5. use app\model\saas\SaasGoods;
  6. use app\model\saas\SaasGoodsSku;
  7. use app\model\saas\SaasStore;
  8. use app\service\saas\GoodsService;
  9. use DI\Attribute\Inject;
  10. use LinFly\Annotation\Attributes\Route\Controller;
  11. use LinFly\Annotation\Attributes\Route\GetMapping;
  12. use LinFly\Annotation\Attributes\Route\Middleware;
  13. use support\Request;
  14. use support\Response;
  15. #[Controller("/api/goods"),Middleware(AuthMiddleware::class)]
  16. class Goods extends Base
  17. {
  18. #[Inject]
  19. protected GoodsService $service;
  20. #[Inject]
  21. protected SaasGoods $model;
  22. #[Inject]
  23. protected SaasGoodsSku $skuModel;
  24. #[Inject]
  25. protected SaasStore $store;
  26. #[GetMapping('list')]
  27. public function getDataList(Request $request): Response
  28. {
  29. try {
  30. $param = $request->all();
  31. if (!empty($param['status'])) $param['status'] = intval($param['status']+1);
  32. $productType = $this->service->productType();
  33. $data = $this->service->setModel()->getList($param,['poi' => function($query){
  34. $query->field("poi_id,poi_name,poi_address,nick_name");
  35. }],true,['types'],['types' => function($query,$resp) use($productType){
  36. $productTypeArr = [];
  37. foreach ($productType as $val) {
  38. $productTypeArr[$val['key']] = $val['name'];
  39. }
  40. return $productTypeArr[$resp['product_type']]??'';
  41. }]);
  42. return successTrans(100010,pageFormat($data),200);
  43. } catch (\Throwable $th) {
  44. return error($th->getMessage());
  45. }
  46. }
  47. /**
  48. * 商品详情
  49. * @param Request $request
  50. * @return Response
  51. */
  52. #[GetMapping('detail')]
  53. public function getGoodDetail(Request $request): Response
  54. {
  55. try {
  56. $param = $this->_valid([
  57. "id.require" => trans("empty.require"),
  58. "product_id.require" => trans("empty.require"),
  59. ],$request->method());
  60. if (!is_array($param)) return error($param);
  61. $detail = $this->model->where("id",$param["id"])->with(['skuSpecs'])->findOrEmpty();
  62. if ($detail->isEmpty()) return errorTrans("empty.data");
  63. if ($detail['poi_id'] <> $request->user['store_id']) return errorTrans("error.param");
  64. $detail['sold_start_times'] = [(string)$detail['sold_start_time'],(string)$detail['sold_end_time']];
  65. $detail['use_times'] = [(string)$detail['use_time_start'],(string)$detail['use_time_end']];
  66. return successTrans('success.data',$detail->toArray());
  67. } catch (\Throwable $throwable) {
  68. return error($throwable->getMessage());
  69. }
  70. }
  71. }