From 0ecd9d5e207fc62a86abc387b668e86b2636b257 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 16 Jul 2025 15:01:03 +0800 Subject: [PATCH] =?UTF-8?q?Aio=E8=AE=BE=E5=A4=87=E4=B8=8B=E5=8D=95?= =?UTF-8?q?=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extern/AioDeviceController.java | 31 ++++++++++++++++ .../aio/req/AioDeviceCreateOrderReq.java | 18 ++++++++++ .../aio/resp/AioDeviceCreateOrderResp.java | 9 +++++ .../basic/service/aio/AioDeviceService.java | 9 +++++ .../aio/impl/AioDeviceServiceImpl.java | 35 +++++++++++++++++++ 5 files changed, 102 insertions(+) create mode 100644 src/main/java/com/ycwl/basic/model/aio/req/AioDeviceCreateOrderReq.java create mode 100644 src/main/java/com/ycwl/basic/model/aio/resp/AioDeviceCreateOrderResp.java create mode 100644 src/main/java/com/ycwl/basic/service/aio/AioDeviceService.java create mode 100644 src/main/java/com/ycwl/basic/service/aio/impl/AioDeviceServiceImpl.java diff --git a/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java b/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java index 33d32ce..60bad7a 100644 --- a/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java +++ b/src/main/java/com/ycwl/basic/controller/extern/AioDeviceController.java @@ -6,6 +6,8 @@ import com.ycwl.basic.mapper.MemberMapper; import com.ycwl.basic.model.aio.entity.AioDeviceBannerEntity; import com.ycwl.basic.model.aio.entity.AioDeviceEntity; import com.ycwl.basic.model.aio.entity.AioDevicePriceConfigEntity; +import com.ycwl.basic.model.aio.req.AioDeviceCreateOrderReq; +import com.ycwl.basic.model.aio.resp.AioDeviceCreateOrderResp; import com.ycwl.basic.model.aio.resp.AioDeviceInfoResp; import com.ycwl.basic.model.jwt.JwtInfo; import com.ycwl.basic.model.mobile.face.FaceRecognizeResp; @@ -14,8 +16,11 @@ import com.ycwl.basic.model.mobile.goods.GoodsReqQuery; import com.ycwl.basic.model.pc.face.resp.FaceRespVO; import com.ycwl.basic.model.pc.member.entity.MemberEntity; import com.ycwl.basic.model.pc.member.resp.MemberRespVO; +import com.ycwl.basic.pay.entity.PayResponse; +import com.ycwl.basic.service.aio.AioDeviceService; import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.pc.FaceService; +import com.ycwl.basic.service.pc.OrderService; import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.SnowFlakeUtil; @@ -27,6 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -48,6 +54,10 @@ public class AioDeviceController { private MemberMapper memberMapper; @Autowired private AioDeviceMapper aioDeviceMapper; + @Autowired + private AioDeviceService aioDeviceService; + @Autowired + private OrderService orderService; @GetMapping("/info") public ApiResponse getDeviceInfo(HttpServletRequest request) { @@ -114,4 +124,25 @@ public class AioDeviceController { return ApiResponse.success(goodsDetailVOS); } + @ApiOperation("创建订单") + @PostMapping("/order") + public ApiResponse createOrder(HttpServletRequest request, @RequestBody AioDeviceCreateOrderReq req) { + String deviceId = request.getHeader("X-DeviceId"); + AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId); + if (aioDevice == null) { + return ApiResponse.fail("设备不存在"); + } + return ApiResponse.success(aioDeviceService.createOrder(aioDevice, req)); + } + + @ApiOperation("查询订单") + @GetMapping("/order/{orderId}") + public ApiResponse queryOrder(HttpServletRequest request, @PathVariable("orderId") Long orderId) { + String deviceId = request.getHeader("X-DeviceId"); + AioDeviceEntity aioDevice = aioDeviceMapper.getByKey(deviceId); + if (aioDevice == null) { + return ApiResponse.fail("设备不存在"); + } + return ApiResponse.success(orderService.queryOrder(orderId)); + } } diff --git a/src/main/java/com/ycwl/basic/model/aio/req/AioDeviceCreateOrderReq.java b/src/main/java/com/ycwl/basic/model/aio/req/AioDeviceCreateOrderReq.java new file mode 100644 index 0000000..238c682 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/aio/req/AioDeviceCreateOrderReq.java @@ -0,0 +1,18 @@ +package com.ycwl.basic.model.aio.req; + +import lombok.Data; + +import java.util.List; + +@Data +public class AioDeviceCreateOrderReq { + private Long faceId; + private String payType; + private List items; + + @Data + public static class AioDeviceOrderItem { + private Long goodsId; + private Integer count; + } +} diff --git a/src/main/java/com/ycwl/basic/model/aio/resp/AioDeviceCreateOrderResp.java b/src/main/java/com/ycwl/basic/model/aio/resp/AioDeviceCreateOrderResp.java new file mode 100644 index 0000000..b1d8c89 --- /dev/null +++ b/src/main/java/com/ycwl/basic/model/aio/resp/AioDeviceCreateOrderResp.java @@ -0,0 +1,9 @@ +package com.ycwl.basic.model.aio.resp; + +import lombok.Data; + +@Data +public class AioDeviceCreateOrderResp { + private Long orderId; + private String payCode; +} diff --git a/src/main/java/com/ycwl/basic/service/aio/AioDeviceService.java b/src/main/java/com/ycwl/basic/service/aio/AioDeviceService.java new file mode 100644 index 0000000..c1f448b --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/aio/AioDeviceService.java @@ -0,0 +1,9 @@ +package com.ycwl.basic.service.aio; + +import com.ycwl.basic.model.aio.entity.AioDeviceEntity; +import com.ycwl.basic.model.aio.req.AioDeviceCreateOrderReq; +import com.ycwl.basic.model.aio.resp.AioDeviceCreateOrderResp; + +public interface AioDeviceService { + AioDeviceCreateOrderResp createOrder(AioDeviceEntity aioDevice, AioDeviceCreateOrderReq req); +} diff --git a/src/main/java/com/ycwl/basic/service/aio/impl/AioDeviceServiceImpl.java b/src/main/java/com/ycwl/basic/service/aio/impl/AioDeviceServiceImpl.java new file mode 100644 index 0000000..5abc786 --- /dev/null +++ b/src/main/java/com/ycwl/basic/service/aio/impl/AioDeviceServiceImpl.java @@ -0,0 +1,35 @@ +package com.ycwl.basic.service.aio.impl; + +import com.ycwl.basic.exception.BaseException; +import com.ycwl.basic.mapper.AioDeviceMapper; +import com.ycwl.basic.model.aio.entity.AioDeviceEntity; +import com.ycwl.basic.model.aio.entity.AioDevicePriceConfigEntity; +import com.ycwl.basic.model.aio.req.AioDeviceCreateOrderReq; +import com.ycwl.basic.model.aio.resp.AioDeviceCreateOrderResp; +import com.ycwl.basic.service.aio.AioDeviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; + +@Service +public class AioDeviceServiceImpl implements AioDeviceService { + @Autowired + private AioDeviceMapper aioDeviceMapper; + + @Override + public AioDeviceCreateOrderResp createOrder(AioDeviceEntity aioDevice, AioDeviceCreateOrderReq req) { + // 询价 + AioDevicePriceConfigEntity config = aioDeviceMapper.getPriceConfigByDeviceId(aioDevice.getId()); + if (config == null) { + throw new BaseException("询价失败"); + } + if (req.getItems() == null || req.getItems().isEmpty()) { + throw new BaseException("请选择商品"); + } + int sum = req.getItems().stream().mapToInt(AioDeviceCreateOrderReq.AioDeviceOrderItem::getCount).sum(); + BigDecimal totalPrice = config.getEachPrice().multiply(new BigDecimal(sum)); + // 支付 + return null; + } +}