| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- <?php
- namespace app\controller\api;
- use app\extra\basic\Base;
- use app\extra\tools\CodeExtend;
- use app\middleware\AuthMiddleware;
- use app\model\saas\SaasGoods;
- use app\model\saas\SaasGoodsSku;
- use app\model\saas\SaasOrder;
- use DI\Attribute\Inject;
- use LinFly\Annotation\Attributes\Route\Controller;
- use LinFly\Annotation\Attributes\Route\GetMapping;
- use LinFly\Annotation\Attributes\Route\Middleware;
- use LinFly\Annotation\Attributes\Route\PostMapping;
- use support\Request;
- use support\Response;
- #[Controller("/dy/goods"),Middleware(AuthMiddleware::class)]
- class Goods extends Base
- {
- #[Inject]
- protected SaasGoods $model;
- protected array $noNeedLogin = ["getGoodsData"];
- #[GetMapping("data")]
- public function getGoodsData(Request $request): Response
- {
- try {
- $param = $this->_valid([
- "goods.require" => trans("empty.require"),
- "spm.require" => trans("empty.require"),
- ],$request->method());
- if (!is_array($param)) return error($param);
- $data = $this->model->where("id",$param['spm'])->with(['poi' => function ($query) {
- $query->field("poi_id,poi_name,poi_address,longitude,latitude,poi_id");
- },'skuSpecs'])->findOrEmpty();
- if ($data->isEmpty()) return errorTrans("empty.data");
- return $this->encode("success",$data->toArray());
- } catch (\Throwable $th) {
- return error($th->getMessage());
- }
- }
- #[PostMapping("add_order")]
- public function addOrder(Request $request): Response
- {
- try {
- $param = $request->all();
- if (!empty($param['spm'])) $param['goods_id'] = $param['spm'];
- $goods = (new SaasGoods)->where([ "product_id" => $param['product_id'], "id" => $param['goods_id'] ])->findOrEmpty();
- $sku = (new SaasGoodsSku)->where([ "product_id" => $param['product_id'], "sku_id" => $param['sku_id'] ])->findOrEmpty();
- $priceData = empty($sku['price']) ? $goods['price'] * 100 : $sku['price'] * 100;
- $param['line_price'] = empty($sku['line_price']) ? $goods['price'] * 100 : $sku['line_price'] * 100;
- $param['price'] = $priceData * $param['number'];
- $param['order_sn'] = "AL".CodeExtend::uniqidDate(18).rand(100,999);
- $param['openid'] = $request->user['openid'];
- $param['sku_name'] = $param['name'];
- $param['poi_id'] = $goods['poi_id'];
- $param['goods_id'] = $goods['id'];
- $param['life_goods_id'] = $sku['goods_id']?$sku['goods_id']:$goods['goods_id'];
- $state = (new SaasOrder)->setAutoData($param);
- if (!$state) return error("提交订单失败");
- return success("提交成功",['order' => $param['order_sn']]);
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- }
|