From 56e9a321b72b759e83aa11e187ad1b88c83a25b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E5=AE=87=E5=A5=87?= Date: Thu, 3 Apr 2025 14:35:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=A2=E5=8D=95=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/xkt/StoreOrderController.java | 46 +++++++ .../xkt/vo/order/StoreOrderAddReqVO.java | 92 +++++++++++++ .../xkt/vo/order/StoreOrderAddRespVO.java | 14 ++ .../xkt/dto/order/StoreOrderAddResultDTO.java | 23 ++++ .../mapper/StoreProductColorPriceMapper.java | 2 + .../mapper/StoreProductColorSizeMapper.java | 2 + .../ruoyi/xkt/mapper/StoreProductMapper.java | 2 + .../ruoyi/xkt/service/IExpressService.java | 28 ++++ .../ruoyi/xkt/service/IStoreOrderService.java | 3 +- .../xkt/service/impl/ExpressServiceImpl.java | 70 ++++++++++ .../service/impl/StoreOrderServiceImpl.java | 129 ++++++------------ 11 files changed, 324 insertions(+), 87 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddRespVO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/dto/order/StoreOrderAddResultDTO.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/IExpressService.java create mode 100644 xkt/src/main/java/com/ruoyi/xkt/service/impl/ExpressServiceImpl.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java new file mode 100644 index 000000000..a1eb588e2 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/StoreOrderController.java @@ -0,0 +1,46 @@ +package com.ruoyi.web.controller.xkt; + +import cn.hutool.core.bean.BeanUtil; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.XktBaseController; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.web.controller.xkt.vo.order.StoreOrderAddReqVO; +import com.ruoyi.web.controller.xkt.vo.order.StoreOrderAddRespVO; +import com.ruoyi.xkt.dto.order.StoreOrderAddDTO; +import com.ruoyi.xkt.dto.order.StoreOrderAddResultDTO; +import com.ruoyi.xkt.service.IStoreOrderService; +import io.swagger.annotations.Api; +import org.springframework.beans.factory.annotation.Autowired; +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.RestController; + +/** + * @author liangyq + * @date 2025-04-03 14:18 + */ +@Api(tags = "订单") +@RestController +@RequestMapping("/rest/v1/order") +public class StoreOrderController extends XktBaseController { + + @Autowired + private IStoreOrderService storeOrderService; + + /** + * 创建订单 + */ +// @PreAuthorize("@ss.hasPermi('system:order:add')") + @Log(title = "订单", businessType = BusinessType.INSERT) + @PostMapping + public R create(@RequestBody StoreOrderAddReqVO vo) { + StoreOrderAddDTO dto = BeanUtil.toBean(vo, StoreOrderAddDTO.class); + dto.setOrderUserId(SecurityUtils.getUserId()); + StoreOrderAddResultDTO resultDTO = storeOrderService.createOrder(dto); + //TODO + return success(); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java new file mode 100644 index 000000000..07036a162 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddReqVO.java @@ -0,0 +1,92 @@ +package com.ruoyi.web.controller.xkt.vo.order; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author liangyq + * @date 2025-04-02 22:31 + */ +@ApiModel +@Data +public class StoreOrderAddReqVO { + /** + * 档口ID + */ + @ApiModelProperty("档口ID") + private Long storeId; +// /** +// * 下单用户ID +// */ +// private Long orderUserId; + /** + * 订单备注 + */ + @ApiModelProperty("订单备注") + private String orderRemark; + /** + * 物流ID + */ + @ApiModelProperty("物流ID") + private Long expressId; + /** + * 收货人-名称 + */ + @ApiModelProperty("收货人-名称") + private String destinationContactName; + /** + * 收货人-电话 + */ + @ApiModelProperty("收货人-电话") + private String destinationContactPhoneNumber; + /** + * 收货人-省编码 + */ + @ApiModelProperty("收货人-省编码") + private String destinationProvinceCode; + /** + * 收货人-市编码 + */ + @ApiModelProperty("收货人-市编码") + private String destinationCityCode; + /** + * 收货人-区县编码 + */ + @ApiModelProperty("收货人-区县编码") + private String destinationCountyCode; + /** + * 收货人-详细地址 + */ + @ApiModelProperty("收货人-详细地址") + private String destinationDetailAddress; + /** + * 发货方式[1:货其再发 2:有货先发] + */ + @ApiModelProperty("发货方式[1:货其再发 2:有货先发]") + private Integer deliveryType; + /** + * 最晚发货时间 + */ + @ApiModelProperty("最晚发货时间") + private Date deliveryEndTime; + /** + * 明细列表 + */ + @ApiModelProperty("明细列表") + private List detailList; + + @ApiModel + @Data + public static class Detail { + + @ApiModelProperty("商品颜色尺码ID") + private Long storeProdColorSizeId; + + @ApiModelProperty("商品数量") + private Integer goodsQuantity; + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddRespVO.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddRespVO.java new file mode 100644 index 000000000..a098a34ae --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/xkt/vo/order/StoreOrderAddRespVO.java @@ -0,0 +1,14 @@ +package com.ruoyi.web.controller.xkt.vo.order; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +/** + * @author liangyq + * @date 2025-04-02 22:31 + */ +@ApiModel +@Data +public class StoreOrderAddRespVO { + +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/dto/order/StoreOrderAddResultDTO.java b/xkt/src/main/java/com/ruoyi/xkt/dto/order/StoreOrderAddResultDTO.java new file mode 100644 index 000000000..50b7d0309 --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/dto/order/StoreOrderAddResultDTO.java @@ -0,0 +1,23 @@ +package com.ruoyi.xkt.dto.order; + +import com.ruoyi.xkt.domain.StoreOrder; +import com.ruoyi.xkt.domain.StoreOrderDetail; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * @author liangyq + * @date 2025-04-03 13:46 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class StoreOrderAddResultDTO { + + private StoreOrder order; + + private List orderDetails; +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorPriceMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorPriceMapper.java index 3530ddfd6..f5cf0b020 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorPriceMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorPriceMapper.java @@ -3,6 +3,7 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductColorPrice; import com.ruoyi.xkt.dto.storeProdColorPrice.StoreProdColorPriceDTO; +import org.springframework.stereotype.Repository; import java.util.List; @@ -12,6 +13,7 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ +@Repository public interface StoreProductColorPriceMapper extends BaseMapper { /** * 查询档口商品颜色定价 diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java index a585c803a..e90164bb5 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductColorSizeMapper.java @@ -2,6 +2,7 @@ package com.ruoyi.xkt.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProductColorSize; +import org.springframework.stereotype.Repository; import java.util.List; @@ -11,6 +12,7 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ +@Repository public interface StoreProductColorSizeMapper extends BaseMapper { /** * 查询档口商品颜色的尺码 diff --git a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductMapper.java b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductMapper.java index 80edcd33e..c5a0ecaee 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductMapper.java +++ b/xkt/src/main/java/com/ruoyi/xkt/mapper/StoreProductMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.xkt.domain.StoreProduct; import com.ruoyi.xkt.dto.storeProduct.StoreProdFuzzyResDTO; import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; import java.util.List; @@ -13,6 +14,7 @@ import java.util.List; * @author ruoyi * @date 2025-03-26 */ +@Repository public interface StoreProductMapper extends BaseMapper { /** * 查询档口商品 diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IExpressService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IExpressService.java new file mode 100644 index 000000000..1a439ea2b --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IExpressService.java @@ -0,0 +1,28 @@ +package com.ruoyi.xkt.service; + +import com.ruoyi.xkt.domain.ExpressFeeConfig; + +/** + * @author liangyq + * @date 2025-04-03 13:35 + */ +public interface IExpressService { + + /** + * 检查快递是否可用 + * + * @param expressId + */ + void checkExpress(Long expressId); + + /** + * 获取快递费配置 + * + * @param expressId + * @param provinceCode + * @param cityCode + * @param countyCode + * @return + */ + ExpressFeeConfig getExpressFeeConfig(Long expressId, String provinceCode, String cityCode, String countyCode); +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java index 4a0f4f86a..87c27d418 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/IStoreOrderService.java @@ -1,6 +1,7 @@ package com.ruoyi.xkt.service; import com.ruoyi.xkt.dto.order.StoreOrderAddDTO; +import com.ruoyi.xkt.dto.order.StoreOrderAddResultDTO; import com.ruoyi.xkt.dto.order.StoreOrderInfoDTO; /** @@ -14,5 +15,5 @@ public interface IStoreOrderService { * @param storeOrderAddDTO * @return */ - StoreOrderInfoDTO createOrder(StoreOrderAddDTO storeOrderAddDTO); + StoreOrderAddResultDTO createOrder(StoreOrderAddDTO storeOrderAddDTO); } diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/ExpressServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ExpressServiceImpl.java new file mode 100644 index 000000000..1c4eee85e --- /dev/null +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/ExpressServiceImpl.java @@ -0,0 +1,70 @@ +package com.ruoyi.xkt.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.bean.BeanValidators; +import com.ruoyi.xkt.domain.Express; +import com.ruoyi.xkt.domain.ExpressFeeConfig; +import com.ruoyi.xkt.mapper.ExpressFeeConfigMapper; +import com.ruoyi.xkt.mapper.ExpressMapper; +import com.ruoyi.xkt.service.IExpressService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author liangyq + * @date 2025-04-03 13:37 + */ +@Service +public class ExpressServiceImpl implements IExpressService { + + @Autowired + private ExpressMapper expressMapper; + @Autowired + private ExpressFeeConfigMapper expressFeeConfigMapper; + + @Override + public void checkExpress(Long expressId) { + Assert.notNull(expressId); + Express express = expressMapper.selectById(expressId); + Assert.isTrue(BeanValidators.exists(express), "快递不存在"); + Assert.isTrue(express.getSystemDeliverAccess(), "快递不可用"); + } + + @Override + public ExpressFeeConfig getExpressFeeConfig(Long expressId, String provinceCode, String cityCode, + String countyCode) { + Assert.notNull(expressId); + Assert.notEmpty(provinceCode); + Assert.notEmpty(cityCode); + Assert.notEmpty(countyCode); + Map map = expressFeeConfigMapper.selectList(Wrappers.lambdaQuery(ExpressFeeConfig.class) + .eq(ExpressFeeConfig::getExpressId, expressId) + .in(ExpressFeeConfig::getRegionCode, Arrays.asList(provinceCode, cityCode, countyCode))) + .stream() + //过滤掉已被删除的配置 + .filter(BeanValidators::exists) + .collect(Collectors.toMap(o -> o.getRegionCode(), o -> o, (n, o) -> n)); + ExpressFeeConfig expressFeeConfig = null; + if (CollUtil.isNotEmpty(map)) { + if (map.size() == 1) { + expressFeeConfig = CollUtil.getFirst(map.values()); + } else { + expressFeeConfig = map.get(countyCode); + //按区市省从小到大去匹配 + if (expressFeeConfig == null) { + expressFeeConfig = map.get(cityCode); + if (expressFeeConfig == null) { + expressFeeConfig = map.get(provinceCode); + } + } + } + } + return expressFeeConfig; + } +} diff --git a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java index 02776c4cd..77ed7a794 100644 --- a/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java +++ b/xkt/src/main/java/com/ruoyi/xkt/service/impl/StoreOrderServiceImpl.java @@ -1,20 +1,19 @@ package com.ruoyi.xkt.service.impl; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.XktBaseEntity; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.bean.BeanValidators; import com.ruoyi.xkt.domain.*; import com.ruoyi.xkt.dto.order.StoreOrderAddDTO; -import com.ruoyi.xkt.dto.order.StoreOrderDetailInfoDTO; -import com.ruoyi.xkt.dto.order.StoreOrderInfoDTO; +import com.ruoyi.xkt.dto.order.StoreOrderAddResultDTO; import com.ruoyi.xkt.enums.*; import com.ruoyi.xkt.mapper.*; +import com.ruoyi.xkt.service.IExpressService; import com.ruoyi.xkt.service.IStoreOrderService; import com.ruoyi.xkt.service.IVoucherSequenceService; import org.springframework.beans.factory.annotation.Autowired; @@ -40,47 +39,47 @@ public class StoreOrderServiceImpl implements IStoreOrderService { @Autowired private StoreOrderExpressTrackMapper storeOrderExpressTrackMapper; @Autowired - private ExpressMapper expressMapper; - @Autowired - private ExpressFeeConfigMapper expressFeeConfigMapper; + private IExpressService expressService; @Autowired private StoreProductMapper storeProductMapper; @Autowired private StoreProductColorSizeMapper storeProductColorSizeMapper; @Autowired + private StoreProductColorPriceMapper storeProductColorPriceMapper; + @Autowired private IVoucherSequenceService voucherSequenceService; @Transactional @Override - public StoreOrderInfoDTO createOrder(StoreOrderAddDTO storeOrderAddDTO) { + public StoreOrderAddResultDTO createOrder(StoreOrderAddDTO storeOrderAddDTO) { Long orderUserId = storeOrderAddDTO.getOrderUserId(); Long storeId = storeOrderAddDTO.getStoreId(); Long expressId = storeOrderAddDTO.getExpressId(); //校验 - checkExpress(expressId); - checkDelivery(storeOrderAddDTO.getDeliveryType(), - storeOrderAddDTO.getDeliveryEndTime()); + expressService.checkExpress(expressId); + checkDelivery(storeOrderAddDTO.getDeliveryType(), storeOrderAddDTO.getDeliveryEndTime()); Map spcsMap = checkOrderDetailThenRtnSpcsMap(storeId, storeOrderAddDTO.getDetailList()); //快递费配置 - ExpressFeeConfig expressFeeConfig = getExpressFeeConfig(expressId, + ExpressFeeConfig expressFeeConfig = expressService.getExpressFeeConfig(expressId, storeOrderAddDTO.getDestinationProvinceCode(), storeOrderAddDTO.getDestinationCityCode(), storeOrderAddDTO.getDestinationCountyCode()); + Assert.isTrue(BeanValidators.exists(expressFeeConfig), "无快递费用配置"); boolean isFirstExpressItem = true; //生成订单明细 - List storeOrderDetailList = new ArrayList<>(storeOrderAddDTO.getDetailList().size()); + List orderDetailList = new ArrayList<>(storeOrderAddDTO.getDetailList().size()); int orderGoodsQuantity = 0; BigDecimal orderGoodsAmount = BigDecimal.ZERO; BigDecimal orderExpressFee = BigDecimal.ZERO; for (StoreOrderAddDTO.Detail detail : storeOrderAddDTO.getDetailList()) { StoreProductColorSize spcs = spcsMap.get(detail.getStoreProdColorSizeId()); - StoreOrderDetail storeOrderDetail = new StoreOrderDetail(); - storeOrderDetailList.add(storeOrderDetail); - storeOrderDetail.setStoreProdColorSizeId(spcs.getId()); - storeOrderDetail.setStoreProdId(spcs.getStoreProdId()); - storeOrderDetail.setDetailStatus(EOrderStatus.PENDING_PAYMENT.getValue()); - storeOrderDetail.setPayStatus(EPayStatus.INIT.getValue()); - storeOrderDetail.setExpressStatus(EExpressStatus.INIT.getValue()); + StoreOrderDetail orderDetail = new StoreOrderDetail(); + orderDetailList.add(orderDetail); + orderDetail.setStoreProdColorSizeId(spcs.getId()); + orderDetail.setStoreProdId(spcs.getStoreProdId()); + orderDetail.setDetailStatus(EOrderStatus.PENDING_PAYMENT.getValue()); + orderDetail.setPayStatus(EPayStatus.INIT.getValue()); + orderDetail.setExpressStatus(EExpressStatus.INIT.getValue()); //计算明细费用 BigDecimal goodsPrice = calcPrice(orderUserId, spcs); Integer goodsQuantity = detail.getGoodsQuantity(); @@ -99,13 +98,13 @@ public class StoreOrderServiceImpl implements IStoreOrderService { expressFee = NumberUtil.mul(expressFeeConfig.getNextItemAmount(), BigDecimal.valueOf(goodsQuantity)); } BigDecimal totalAmount = NumberUtil.add(goodsAmount, expressFee); - storeOrderDetail.setGoodsPrice(goodsPrice); - storeOrderDetail.setGoodsQuantity(goodsQuantity); - storeOrderDetail.setGoodsAmount(goodsAmount); - storeOrderDetail.setExpressFee(expressFee); - storeOrderDetail.setTotalAmount(totalAmount); - storeOrderDetail.setDelFlag(Constants.UNDELETED); - storeOrderDetail.setVersion(0L); + orderDetail.setGoodsPrice(goodsPrice); + orderDetail.setGoodsQuantity(goodsQuantity); + orderDetail.setGoodsAmount(goodsAmount); + orderDetail.setExpressFee(expressFee); + orderDetail.setTotalAmount(totalAmount); + orderDetail.setDelFlag(Constants.UNDELETED); + orderDetail.setVersion(0L); //计算订单费用 orderGoodsQuantity = orderGoodsQuantity + goodsQuantity; orderGoodsAmount = NumberUtil.add(orderGoodsAmount, goodsAmount); @@ -146,18 +145,15 @@ public class StoreOrderServiceImpl implements IStoreOrderService { //落库 storeOrderMapper.insert(order); Long orderId = order.getId(); - List orderDetailIdList = new ArrayList<>(storeOrderDetailList.size()); - storeOrderDetailList.forEach(storeOrderDetail -> { + List orderDetailIdList = new ArrayList<>(orderDetailList.size()); + orderDetailList.forEach(storeOrderDetail -> { storeOrderDetail.setStoreOrderId(orderId); storeOrderDetailMapper.insert(storeOrderDetail); orderDetailIdList.add(storeOrderDetail.getId()); }); //操作记录 //TODO - //返回 - StoreOrderInfoDTO infoDTO = BeanUtil.toBean(order, StoreOrderInfoDTO.class); - infoDTO.setDetailList(BeanUtil.copyToList(storeOrderDetailList, StoreOrderDetailInfoDTO.class)); - return infoDTO; + return new StoreOrderAddResultDTO(order, orderDetailList); } /** @@ -168,49 +164,22 @@ public class StoreOrderServiceImpl implements IStoreOrderService { * @return */ private BigDecimal calcPrice(Long orderUserId, StoreProductColorSize storeProductColorSize) { - //TODO - return BigDecimal.ONE; - } - /** - * 获取快递费配置 - * - * @param expressId - * @param provinceCode - * @param cityCode - * @param countyCode - * @return - */ - private ExpressFeeConfig getExpressFeeConfig(Long expressId, String provinceCode, String cityCode, - String countyCode) { - Assert.notNull(expressId); - Assert.notEmpty(provinceCode); - Assert.notEmpty(cityCode); - Assert.notEmpty(countyCode); - Map map = expressFeeConfigMapper.selectList(Wrappers.lambdaQuery(ExpressFeeConfig.class) - .eq(ExpressFeeConfig::getExpressId, expressId) - .in(ExpressFeeConfig::getRegionCode, Arrays.asList(provinceCode, cityCode, countyCode))) - .stream() - //过滤掉已被删除的配置 - .filter(BeanValidators::exists) - .collect(Collectors.toMap(o -> o.getRegionCode(), o -> o, (n, o) -> n)); - ExpressFeeConfig expressFeeConfig = null; - if (CollUtil.isNotEmpty(map)) { - if (map.size() == 1) { - expressFeeConfig = CollUtil.getFirst(map.values()); - } else { - expressFeeConfig = map.get(countyCode); - //按区市省从小到大去匹配 - if (expressFeeConfig == null) { - expressFeeConfig = map.get(cityCode); - if (expressFeeConfig == null) { - expressFeeConfig = map.get(provinceCode); - } - } - } + StoreProductColorPrice productColorPrice = storeProductColorPriceMapper.selectOne(Wrappers + .lambdaQuery(StoreProductColorPrice.class) + .eq(StoreProductColorPrice::getStoreProdId, storeProductColorSize.getStoreProdId()) + .eq(StoreProductColorPrice::getStoreColorId, storeProductColorSize.getStoreColorId()) + .eq(XktBaseEntity::getDelFlag, Constants.UNDELETED)); + Assert.notNull(productColorPrice, "无法获取商品定价"); + BigDecimal price = productColorPrice.getPrice(); + if ("0".equals(storeProductColorSize.getStandard())) { + //非标准尺码 + StoreProduct product = storeProductMapper.selectById(storeProductColorSize.getStoreProdId()); + BigDecimal addPrice = BigDecimal.valueOf(NumberUtil.nullToZero(product.getOverPrice())); + price = NumberUtil.add(price, addPrice); } - Assert.isTrue(BeanValidators.exists(expressFeeConfig), "快递费用配置不存在"); - return expressFeeConfig; + //TODO 客户优惠 + return price; } /** @@ -228,18 +197,6 @@ public class StoreOrderServiceImpl implements IStoreOrderService { } } - /** - * 检查快递 - * - * @param expressId - */ - private void checkExpress(Long expressId) { - Assert.notNull(expressId); - Express express = expressMapper.selectById(expressId); - Assert.isTrue(BeanValidators.exists(express), "快递不存在"); - Assert.isTrue(express.getSystemDeliverAccess(), "快递不可用"); - } - /** * 检查订单明细 *