Преглед изворни кода

add 订单上传图片&加急费用

tea пре 1 месец
родитељ
комит
831bf24a40
15 измењених фајлова са 120 додато и 154 уклоњено
  1. 0 3
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/KxAppOrderController.java
  2. 1 10
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/KxAppOrderScreenshotController.java
  3. 58 52
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderConcreteBuilder.java
  4. 7 6
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderDirector.java
  5. 3 14
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/IKxOrderScreenshotService.java
  6. 4 4
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxAppOrderService.java
  7. 11 43
      kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxOrderScreenshotServiceImpl.java
  8. 5 1
      kxmall-common/src/main/java/com/kxmall/common/core/domain/R.java
  9. 2 2
      kxmall-framework/src/main/java/com/kxmall/framework/web/exception/GlobalExceptionHandler.java
  10. 6 5
      kxmall-system/src/main/java/com/kxmall/order/domain/KxOrderScreenshot.java
  11. 4 0
      kxmall-system/src/main/java/com/kxmall/order/domain/KxStoreOrder.java
  12. 14 3
      kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderPriceBo.java
  13. 0 3
      kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderRequestBo.java
  14. 0 4
      kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderRequestProductBo.java
  15. 5 4
      kxmall-system/src/main/java/com/kxmall/order/domain/vo/KxOrderScreenshotVo.java

+ 0 - 3
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/KxAppOrderController.java

@@ -164,9 +164,6 @@ public class KxAppOrderController extends BaseAppController {
 
     /**
      * 计算订单总价(含商品、优惠券、运费、加急费用)
-     *
-     * @param orderRequestBo
-     * @return
      */
     @PostMapping("/calculateOrderPrice")
     public R<OrderPriceBo> calculateOrderPrice(@RequestBody OrderRequestBo orderRequestBo) {

+ 1 - 10
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/KxAppOrderScreenshotController.java

@@ -28,7 +28,7 @@ public class KxAppOrderScreenshotController extends BaseAppController {
      * 根据订单号查询照片列表
      */
     @GetMapping("/list/{orderId}")
-    public R<List<KxOrderScreenshotVo>> list(@PathVariable String orderId, 
+    public R<List<KxOrderScreenshotVo>> list(@PathVariable String orderId,
                                              @RequestParam(required = false) Integer screenshotType) {
         List<KxOrderScreenshotVo> list = orderScreenshotService.queryByOrderId(orderId, screenshotType);
         return R.ok(list);
@@ -45,14 +45,5 @@ public class KxAppOrderScreenshotController extends BaseAppController {
         return R.ok(list);
     }
 
-    /**
-     * 删除订单照片
-     */
-    @DeleteMapping("/{id}")
-    public R<Void> remove(@PathVariable Long id) {
-        Long userId = getAppLoginUser().getUserId();
-        Boolean result = orderScreenshotService.deleteById(id, userId);
-        return result ? R.ok() : R.fail("删除失败");
-    }
 
 }

+ 58 - 52
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderConcreteBuilder.java

@@ -137,7 +137,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
      */
     @Override
     public void buildOrderCheckHandlePart(OrderRequestBo orderRequest, Long userId) throws ServiceException {
-        //参数强校验 START
+        // 参数强校验 START
         List<OrderRequestProductBo> skuList = orderRequest.getProductList();
         if (CollectionUtils.isEmpty(skuList) || orderRequest.getTotalPrice() == null) {
             throw new ServiceException("参数校验失败");
@@ -160,7 +160,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
         Long groupShopId = orderRequest.getGroupShopId();
         BigDecimal groupShopPrice = null;
         if (groupShopId != null) {
-            //校验团购参数
+            // 校验团购参数
             if (skuList.size() > 1) {
                 throw new ServiceException("团购订单只允许单品结算");
             }
@@ -171,7 +171,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
             List<KxGroupShopProduct> groupShopSkuList = groupShopDTO.getGroupShopSkuList();
             for (KxGroupShopProduct groupShopSkuDO : groupShopSkuList) {
                 if (groupShopSkuDO.getProductAttrId().equals(groupShopSkuList.get(0).getProductAttrId())) {
-                    //若找到交集
+                    // 若找到交集
                     groupShopPrice = groupShopSkuDO.getProductGroupShopPrice();
                 }
             }
@@ -179,7 +179,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
         Long seckillId = orderRequest.getSeckillId();
         BigDecimal seckillIdPrice = null;
         if (seckillId != null) {
-            //校验团购参数
+            // 校验团购参数
             if (skuList.size() > 1) {
                 throw new ServiceException("秒杀订单只允许单品结算");
             }
@@ -189,16 +189,17 @@ public class OrderConcreteBuilder extends OrderBuilder {
             }
             seckillIdPrice = storeSeckillVo.getPrice();
         }
-        //商品价格
+
+        // 商品价格
         BigDecimal productPrice = BigDecimal.ZERO;
         BigDecimal productOriginalPrice = BigDecimal.ZERO;
-        //稍后用于优惠券作用范围校验
+        // 稍后用于优惠券作用范围校验
         Map<Long, BigDecimal> categoryPriceMap = new HashMap<>();
-        //稍后用于插入KxStoreProductVo
+        // 稍后用于插入KxStoreProductVo
         KxStoreProductVo product;
         Map<Long, KxStoreProductVo> productIdDTOMap = new HashMap<>();
         for (OrderRequestProductBo orderRequestKxStoreProduct : skuList) {
-            //每个地方仓库的价格不一样,所以需要查询各自商户设置的价格
+            // 每个地方仓库的价格不一样,所以需要查询各自商户设置的价格
             product = productMapper.getProductByIdAndStorageId(orderRequestKxStoreProduct.getProductId(), orderRequest.getStorageId());
             if (product == null) {
                 throw new ServiceException("商品并不存在");
@@ -230,9 +231,9 @@ public class OrderConcreteBuilder extends OrderBuilder {
                 categoryPriceMap.put(cid, price);
             }
         }
-        //优惠券折扣价格
+        // 优惠券折扣价格
         BigDecimal couponPrice = BigDecimal.ZERO;
-        //优惠券校验
+        // 优惠券校验
         KxStoreCouponUser userCouponFromFront = orderRequest.getCoupon();
         if (userCouponFromFront != null) {
             if (userCouponFromFront.getId() == null || userCouponFromFront.getCouponPrice() == null) {
@@ -248,7 +249,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
             if (!userCouponFromDB.getCouponPrice().equals(userCouponFromFront.getCouponPrice())) {
                 throw new ServiceException("订单优惠券金额校验失败");
             }
-            //校验优惠券策略是否满足
+            // 校验优惠券策略是否满足
             Long categoryId = userCouponFromDB.getCategoryId();
             if (categoryId != null && categoryId != 0L) {
                 BigDecimal p = categoryPriceMap.get(categoryId);
@@ -262,18 +263,21 @@ public class OrderConcreteBuilder extends OrderBuilder {
             }
             couponPrice = userCouponFromDB.getCouponPrice();
         }
+
         BigDecimal freightPrice = BigDecimal.ZERO;
-        //骑手配置
-        if (orderRequest.getShippingType() == 1) {
-            freightPrice = appOrderService.getFreightMoney(orderRequest).getTotalPrice();
-        }
-        //参数强校验 END
-        //???是否校验actualPrice??强迫校验?
-        BigDecimal actualPrice = productPrice.subtract(couponPrice).add(freightPrice);
+        // 骑手配置
+        // if (orderRequest.getShippingType() == 1) {
+        //     freightPrice = appOrderService.getFreightMoney(orderRequest).getTotalPrice();
+        // }
+
+        // 参数强校验 END
+        BigDecimal actualPrice = productPrice.subtract(couponPrice).add(freightPrice).add(orderRequest.getUrgentFee());
+
         OrderPriceBo orderPriceBo = new OrderPriceBo();
         orderPriceBo.setGroupShopId(groupShopId);
         orderPriceBo.setActualPrice(actualPrice);
-        //秒杀
+        orderPriceBo.setUrgentFee(orderRequest.getUrgentFee());
+        // 秒杀
         orderPriceBo.setSeckillId(seckillId);
         orderPriceBo.setFreightPrice(freightPrice);
         orderPriceBo.setProductTotalPrice(productPrice);
@@ -298,11 +302,14 @@ public class OrderConcreteBuilder extends OrderBuilder {
         orderDO.setPayPrice(orderPriceDTO.getActualPrice());
         orderDO.setCombinationId(orderPriceDTO.getGroupShopId());
         orderDO.setSeckillId(orderPriceDTO.getSeckillId());
+        orderDO.setUrgentFee(orderPriceDTO.getUrgentFee());
+
         KxStoreCouponUser coupon = orderRequest.getCoupon();
         if (coupon != null && coupon.getCouponPrice().compareTo(BigDecimal.ZERO) != 0) {
             orderDO.setCouponId(coupon.getId());
             orderDO.setCouponPrice(coupon.getCouponPrice());
         }
+
         Date now = new Date();
         orderDO.setRemark(orderRequest.getMono());
         orderDO.setFreightPrice(orderPriceDTO.getFreightPrice());
@@ -316,17 +323,17 @@ public class OrderConcreteBuilder extends OrderBuilder {
         orderDO.setShippingType(orderRequest.getShippingType());
 
         Boolean isIntegral = false;
-        //计算奖励积分
-        BigDecimal gainIntegral = this.calculateBonusPoints(orderPriceDTO,orderRequest.getProductList());
+        // 计算奖励积分
+        BigDecimal gainIntegral = this.calculateBonusPoints(orderPriceDTO, orderRequest.getProductList());
         if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
             gainIntegral = BigDecimal.ZERO;
             isIntegral = true;
         }
         orderDO.setGainIntegral(gainIntegral);
 
-        //自提
+        // 自提
         if (orderRequest.getStorageId() != null && orderRequest.getShippingType() == 2) {
-            //生成核销码
+            // 生成核销码
             // 2. 生成6位英文数字组合的核销码
             String verificationCode = generateVerificationCode(userId);
             orderDO.setVerifyCode(verificationCode);
@@ -339,7 +346,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
             orderDO.setCity(storage.getCity() + "");
             orderDO.setCounty(storage.getCounty() + "");
             orderDO.setUserAddress(storage.getAddress());
-            //添加预计送达时间
+            // 添加预计送达时间
             orderDO.setPredictTime(orderRequest.getPredictTime());
             orderDO.setStoreId(orderRequest.getStorageId());
         }
@@ -355,14 +362,14 @@ public class OrderConcreteBuilder extends OrderBuilder {
             orderDO.setCity(address.getCity());
             orderDO.setCounty(address.getCounty());
             orderDO.setUserAddress(address.getAddress());
-            //添加预计送达时间
+            // 添加预计送达时间
             orderDO.setPredictTime(orderRequest.getPredictTime());
             orderDO.setStoreId(orderRequest.getStorageId());
             orderDO.setLatitude(address.getLatitude());
             orderDO.setLongitude(address.getLongitude());
         }
 
-        //余额结算额外逻辑
+        // 余额结算额外逻辑
         if (PayChannelType.BALANCE.getCode().equals(orderRequest.getPayType())) {
             KxUser kxUser = userMapper.selectById(userId);
             if (orderPriceDTO.getActualPrice().compareTo(kxUser.getNowMoney()) > 0) {
@@ -376,15 +383,15 @@ public class OrderConcreteBuilder extends OrderBuilder {
             } else {
                 orderDO.setStatus(OrderStatusType.WAIT_PREPARE_GOODS.getCode());
             }
-        }else if(PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())){
+        } else if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
             orderDO.setUseIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
             orderDO.setPayIntegral(BigDecimal.valueOf(orderRequest.getIntegral()));
-            //配送费默认0payPrice
+            // 配送费默认0payPrice
             orderDO.setFreightPrice(BigDecimal.ZERO);
-            //实付金额为0
+            // 实付金额为0
             orderDO.setPayPrice(BigDecimal.ZERO);
             KxUser kxUser = userMapper.selectById(userId);
-            if (orderRequest.getIntegral()>kxUser.getIntegral().longValue()) {
+            if (orderRequest.getIntegral() > kxUser.getIntegral().longValue()) {
                 throw new ServiceException("积分不足!");
             }
             orderDO.setPayId("0");
@@ -397,8 +404,9 @@ public class OrderConcreteBuilder extends OrderBuilder {
 
     /**
      * 生成6位英文数字组合的核销码
+     *
      * @param orderId 订单ID
-     * @param userId 用户ID
+     * @param userId  用户ID
      * @return 6位核销码
      */
     private String generateVerificationCode(Long userId) {
@@ -428,7 +436,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
         return code.toString();
     }
 
-    private BigDecimal calculateBonusPoints(OrderPriceBo orderPriceBo,List<OrderRequestProductBo> productList) {
+    private BigDecimal calculateBonusPoints(OrderPriceBo orderPriceBo, List<OrderRequestProductBo> productList) {
         BigDecimal gainIntegral = BigDecimal.ZERO;
         for (OrderRequestProductBo requestProductBo : productList) {
             if (ObjectUtils.isEmpty(orderPriceBo.getGroupShopId())) {
@@ -460,7 +468,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
      */
     @Override
     public void buildCoupontHandlePart(KxStoreOrder orderDO) throws ServiceException {
-        //扣除用户优惠券
+        // 扣除用户优惠券
         if (orderDO.getCouponId() != null) {
             KxStoreCouponUser updateUserCouponDO = new KxStoreCouponUser();
             updateUserCouponDO.setId(orderDO.getCouponId());
@@ -491,7 +499,7 @@ public class OrderConcreteBuilder extends OrderBuilder {
             storeOrderProduct.setImg(productVo.getImage() == null ? productVo.getSliderImage() : productVo.getImage());
             storeOrderProduct.setNum(orderRequestKxStoreProduct.getCartNum());
             storeOrderProduct.setOtPrice(productVo.getOtPrice());
-            storeOrderProduct.setPrice(ObjectUtils.isEmpty(orderRequestKxStoreProduct.getVipPrice())?orderRequestKxStoreProduct.getPrice():orderRequestKxStoreProduct.getVipPrice());
+            storeOrderProduct.setPrice(ObjectUtils.isEmpty(orderRequestKxStoreProduct.getVipPrice()) ? orderRequestKxStoreProduct.getPrice() : orderRequestKxStoreProduct.getVipPrice());
             storeOrderProduct.setProductAttrId(productVo.getId());
             storeOrderProduct.setProductId(productVo.getId());
             storeOrderProduct.setOrderNo(orderDO.getOrderId());
@@ -499,22 +507,22 @@ public class OrderConcreteBuilder extends OrderBuilder {
             storeOrderProduct.setCreateTime(now);
             storeOrderProduct.setUpdateTime(now);
             orderSkuDOList.add(storeOrderProduct);
-            //团购
+            // 团购
             Long combinationId = orderDO.getCombinationId();
             if (combinationId != null && combinationId > 0) {
                 storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
             }
-            //扣除库存
+            // 扣除库存
             Long seckillId = orderDO.getSeckillId();
             if (seckillId != null && seckillId > 0) {
                 storeOrderProduct.setPrice(orderRequestKxStoreProduct.getPrice());
-                //秒杀库存扣减
+                // 秒杀库存扣减
                 Integer integer = productMapper.decSeckillStock(orderRequestKxStoreProduct.getProductId(), seckillId, orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
                 if (integer == 0) {
                     throw new ServiceException("秒杀商品库存不足");
                 }
             }
-            //秒杀的都出后,仍需扣除仓库的库存
+            // 秒杀的都出后,仍需扣除仓库的库存
             productMapper.decSkuStock(orderRequestKxStoreProduct.getProductId(), orderRequestKxStoreProduct.getCartNum(), orderDO.getStoreId());
         }
         orderProductMapper.insertBatch(orderSkuDOList);
@@ -532,11 +540,11 @@ public class OrderConcreteBuilder extends OrderBuilder {
         if (!StringUtils.isEmpty(orderRequest.getTakeWay())) {
             String takeWay = orderRequest.getTakeWay();
             if ("cart".equals(takeWay)) {
-                //扣除购物车
+                // 扣除购物车
                 List<Long> productIds = skuList.stream().map(item -> item.getProductId()).collect(Collectors.toList());
                 cartMapper.delete(new QueryWrapper<KxStoreCart>().in("product_id", productIds).eq("uid", userId));
             }
-            //直接购买传值为 "buy"
+            // 直接购买传值为 "buy"
         }
     }
 
@@ -564,13 +572,13 @@ public class OrderConcreteBuilder extends OrderBuilder {
         KxStoreOrderVo order = KxStoreOrderList.get(0);
 
         KxUser kxUser = userMapper.selectById(orderDO.getUid());
-        //扣款
+        // 扣款
         KxUser userUpdate = new KxUser();
         userUpdate.setNowMoney(kxUser.getNowMoney().subtract(orderDO.getPayPrice()));
         userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getNowMoney, kxUser.getNowMoney())
                 .eq(KxUser::getUid, kxUser.getUid()));
 
-        //扣款记录
+        // 扣款记录
         String mark = "系统扣除了" + order.getPayPrice().toString() + "余额";
         Double newMoney = NumberUtil.sub(kxUser.getNowMoney(), order.getPayPrice()).doubleValue();
         if (newMoney < 0) {
@@ -594,15 +602,15 @@ public class OrderConcreteBuilder extends OrderBuilder {
         List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
         order.setProductList(orderProducts);
         orderProducts.forEach(item -> {
-            //增加销量
+            // 增加销量
             storeProductMapper.incSales(item.getProductId(), item.getNum());
             if (order.getCombinationId() != null) {
-                //增加团购人数, 若想算商品数这里就获取orderSku的数量,若想算人数,这里就写1
+                // 增加团购人数, 若想算商品数这里就获取orderSku的数量,若想算人数,这里就写1
                 groupShopMapper.incCurrentNum(order.getCombinationId(), item.getNum());
             }
         });
 
-        //通知管理员发货
+        // 通知管理员发货
         GlobalExecutor.execute(() -> {
             adminNotifyBizService.newOrder(order);
             adminNotifyBizService.newOrder(order);
@@ -623,13 +631,13 @@ public class OrderConcreteBuilder extends OrderBuilder {
         KxStoreOrderVo order = KxStoreOrderList.get(0);
 
         KxUser kxUser = userMapper.selectById(orderDO.getUid());
-        //扣款
+        // 扣款
         KxUser userUpdate = new KxUser();
         userUpdate.setIntegral(kxUser.getIntegral().subtract(orderDO.getUseIntegral()));
         userMapper.update(userUpdate, new LambdaQueryWrapper<KxUser>().eq(KxUser::getIntegral, kxUser.getIntegral())
                 .eq(KxUser::getUid, kxUser.getUid()));
 
-        //扣款记录
+        // 扣款记录
         String mark = "系统扣除了" + order.getUseIntegral().toString() + "积分";
         Double newIntegral = NumberUtil.sub(kxUser.getIntegral(), order.getUseIntegral()).doubleValue();
         if (newIntegral < 0) {
@@ -653,11 +661,11 @@ public class OrderConcreteBuilder extends OrderBuilder {
         List<KxStoreOrderProductVo> orderProducts = orderProductMapper.selectVoList(new QueryWrapper<KxStoreOrderProduct>().eq("order_id", order.getId()));
         order.setProductList(orderProducts);
         orderProducts.forEach(item -> {
-            //增加销量
+            // 增加销量
             storeProductMapper.incSales(item.getProductId(), item.getNum());
         });
 
-        //通知管理员发货
+        // 通知管理员发货
         GlobalExecutor.execute(() -> {
             adminNotifyBizService.newOrder(order);
             adminPrintBizService.newOrderPrint(order);
@@ -671,12 +679,10 @@ public class OrderConcreteBuilder extends OrderBuilder {
     public void buildOrderPhotosHandlePart(KxStoreOrder orderDO, OrderRequestBo orderRequest, Long userId) {
         try {
             if (orderRequest.getPhotos() != null && !orderRequest.getPhotos().isEmpty()) {
-                orderScreenshotService.saveOrderCreatePhotos(orderDO.getOrderId(), orderRequest.getPhotos(), userId);
-                logger.info("订单 {} 保存 {} 张照片成功", orderDO.getOrderId(), orderRequest.getPhotos().size());
+                orderScreenshotService.saveOrderCreatePhotos(orderDO.getId().toString(), orderRequest.getPhotos(), userId);
             }
         } catch (Exception e) {
             logger.error("保存订单照片失败, orderId: {}, error: {}", orderDO.getOrderId(), e.getMessage(), e);
-            // 照片保存失败不影响订单创建,只记录日志
         }
     }
 }

+ 7 - 6
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/builder/OrderDirector.java

@@ -1,11 +1,9 @@
 package com.kxmall.web.controller.order.builder;
 
 import com.kxmall.common.enums.PayChannelType;
-import com.kxmall.common.exception.ServiceException;
 import com.kxmall.order.domain.KxStoreOrder;
 import com.kxmall.order.domain.bo.OrderPriceBo;
 import com.kxmall.order.domain.bo.OrderRequestBo;
-import com.kxmall.user.domain.KxUser;
 
 /**
  * @description: 指挥者
@@ -14,27 +12,30 @@ import com.kxmall.user.domain.KxUser;
  **/
 public class OrderDirector {
 
-    private OrderBuilder builder;
+    private final OrderBuilder builder;
 
     public OrderDirector(OrderBuilder builder) {
         this.builder = builder;
     }
 
-    //构建与组装方法
     public void constructOrder(KxStoreOrder orderDO, final OrderRequestBo orderRequest, String channel, Long userId) {
+
+        // 参数校验
         builder.buildOrderCheckHandlePart(orderRequest, userId);
         OrderPriceBo orderPriceBo = builder.buildOrderPriceHandlePart(orderDO, orderRequest, userId);
+        // 构建订单
         builder.buildOrderHandlePart(orderDO, orderPriceBo, orderRequest, channel, userId);
         builder.buildCoupontHandlePart(orderDO);
         builder.buildOrderSkuHandlePart(orderDO, orderPriceBo, orderRequest);
         builder.buildCartHandlePart(orderRequest, userId);
         builder.buildOrderPhotosHandlePart(orderDO, orderRequest, userId);
         builder.buildNotifyHandlePart(orderDO);
-        //余额回调
+
+        // 余额回调
         if (PayChannelType.BALANCE.getCode().equals(orderRequest.getPayType())) {
             builder.buildCallBackHandlePart(orderDO);
         }
-        //积分回调
+        // 积分回调
         if (PayChannelType.INTEGRAL.getCode().equals(orderRequest.getPayType())) {
             builder.buildCallBackHandlePointsPart(orderDO);
         }

+ 3 - 14
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/IKxOrderScreenshotService.java

@@ -1,6 +1,5 @@
 package com.kxmall.web.controller.order.service;
 
-import com.kxmall.order.domain.KxOrderScreenshot;
 import com.kxmall.order.domain.vo.KxOrderScreenshotVo;
 
 import java.util.List;
@@ -16,12 +15,11 @@ public interface IKxOrderScreenshotService {
     /**
      * 批量保存订单创建时的照片
      *
-     * @param orderId 订单号
+     * @param orderId   订单号
      * @param photoUrls 照片URL列表
-     * @param userId 用户ID
-     * @return 是否成功
+     * @param userId    用户ID
      */
-    Boolean saveOrderCreatePhotos(String orderId, List<String> photoUrls, Long userId);
+    void saveOrderCreatePhotos(String orderId, List<String> photoUrls, Long userId);
 
     /**
      * 根据订单号查询照片列表
@@ -42,13 +40,4 @@ public interface IKxOrderScreenshotService {
      */
     List<KxOrderScreenshotVo> queryByOrderIdAndType(String orderId, Integer screenshotType, Integer userType);
 
-    /**
-     * 删除订单照片
-     *
-     * @param id 照片ID
-     * @param userId 用户ID
-     * @return 是否成功
-     */
-    Boolean deleteById(Long id, Long userId);
-
 }

+ 4 - 4
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxAppOrderService.java

@@ -340,10 +340,10 @@ public class KxAppOrderService implements IKxAppOrderService {
         
         // 2. 计算配送费
         BigDecimal freightPrice = BigDecimal.ZERO;
-        if (orderRequestBo.getShippingType() == 1) {
-            DeliveryRequestBo deliveryResult = getFreightMoney(orderRequestBo);
-            freightPrice = deliveryResult.getTotalPrice().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : deliveryResult.getTotalPrice();
-        }
+        // if (orderRequestBo.getShippingType() == 1) {
+        //     DeliveryRequestBo deliveryResult = getFreightMoney(orderRequestBo);
+        //     freightPrice = deliveryResult.getTotalPrice().compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : deliveryResult.getTotalPrice();
+        // }
         
         // 3. 获取加急费用
         BigDecimal urgentFee = orderRequestBo.getUrgentFee() != null ? orderRequestBo.getUrgentFee() : BigDecimal.ZERO;

+ 11 - 43
kxmall-app-api/src/main/java/com/kxmall/web/controller/order/service/impl/KxOrderScreenshotServiceImpl.java

@@ -31,16 +31,15 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
     /**
      * 批量保存订单创建时的照片
      *
-     * @param orderId 订单号
+     * @param orderId   订单号
      * @param photoUrls 照片URL列表
-     * @param userId 用户ID
-     * @return 是否成功
+     * @param userId    用户ID
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean saveOrderCreatePhotos(String orderId, List<String> photoUrls, Long userId) {
+    public void saveOrderCreatePhotos(String orderId, List<String> photoUrls, Long userId) {
         if (StringUtils.isEmpty(orderId) || photoUrls == null || photoUrls.isEmpty()) {
-            return true; // 没有照片不算错误
+            return;
         }
 
         try {
@@ -52,15 +51,14 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
                 if (StringUtils.isNotEmpty(photoUrl)) {
                     KxOrderScreenshot screenshot = new KxOrderScreenshot();
                     screenshot.setOrderId(orderId);
-                    screenshot.setScreenshotType(true); // 1:创建订单
+                    screenshot.setScreenshotType((byte) 1); // 1:创建订单
                     screenshot.setImageUrl(photoUrl);
-                    screenshot.setUserType(true); // 1:用户
+                    screenshot.setUserType(1); // 1:用户
                     screenshot.setUploadBy(userId);
                     screenshot.setSortOrder(i + 1);
                     screenshot.setUploadTime(now);
                     screenshot.setCreateTime(now);
-                    screenshot.setIsDeleted(false);
-                    
+                    screenshot.setIsDeleted(0);
                     screenshots.add(screenshot);
                 }
             }
@@ -69,10 +67,8 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
                 for (KxOrderScreenshot screenshot : screenshots) {
                     baseMapper.insert(screenshot);
                 }
-                log.info("成功保存订单 {} 的 {} 张创建照片", orderId, screenshots.size());
             }
-            
-            return true;
+
         } catch (Exception e) {
             log.error("保存订单创建照片失败, orderId: {}, error: {}", orderId, e.getMessage(), e);
             throw e;
@@ -91,7 +87,7 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
         LambdaQueryWrapper<KxOrderScreenshot> lqw = new LambdaQueryWrapper<>();
         lqw.eq(KxOrderScreenshot::getOrderId, orderId);
         if (screenshotType != null) {
-            lqw.eq(KxOrderScreenshot::getScreenshotType, screenshotType == 1);
+            lqw.eq(KxOrderScreenshot::getScreenshotType, screenshotType);
         }
         lqw.eq(KxOrderScreenshot::getIsDeleted, false);
         lqw.orderByAsc(KxOrderScreenshot::getSortOrder);
@@ -115,12 +111,12 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
         
         if (screenshotType != null) {
             // Boolean字段映射: 1->true, 其他->false
-            lqw.eq(KxOrderScreenshot::getScreenshotType, screenshotType == 1);
+            lqw.eq(KxOrderScreenshot::getScreenshotType, screenshotType);
         }
         
         if (userType != null) {
             // Boolean字段映射: 1->true, 其他->false
-            lqw.eq(KxOrderScreenshot::getUserType, userType == 1);
+            lqw.eq(KxOrderScreenshot::getUserType, userType);
         }
         
         lqw.eq(KxOrderScreenshot::getIsDeleted, false);
@@ -130,32 +126,4 @@ public class KxOrderScreenshotServiceImpl implements IKxOrderScreenshotService {
         return baseMapper.selectVoList(lqw);
     }
 
-    /**
-     * 删除订单照片
-     *
-     * @param id 照片ID
-     * @param userId 用户ID
-     * @return 是否成功
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Boolean deleteById(Long id, Long userId) {
-        try {
-            // 逻辑删除
-            KxOrderScreenshot screenshot = new KxOrderScreenshot();
-            screenshot.setId(id);
-            screenshot.setIsDeleted(true);
-            
-            int result = baseMapper.updateById(screenshot);
-            if (result > 0) {
-                log.info("用户 {} 删除订单照片 {} 成功", userId, id);
-                return true;
-            }
-            return false;
-        } catch (Exception e) {
-            log.error("删除订单照片失败, id: {}, userId: {}, error: {}", id, userId, e.getMessage(), e);
-            throw e;
-        }
-    }
-
 }

+ 5 - 1
kxmall-common/src/main/java/com/kxmall/common/core/domain/R.java

@@ -81,7 +81,7 @@ public class R<T> implements Serializable {
     /**
      * 返回警告消息
      *
-     * @param msg 返回内容
+     * @param msg  返回内容
      * @param data 数据对象
      * @return 警告消息
      */
@@ -104,4 +104,8 @@ public class R<T> implements Serializable {
     public static <T> Boolean isSuccess(R<T> ret) {
         return R.SUCCESS == ret.getCode();
     }
+
+    public static <T> R<T> error() {
+        return R.fail("系统繁忙,请稍后再试");
+    }
 }

+ 2 - 2
kxmall-framework/src/main/java/com/kxmall/framework/web/exception/GlobalExceptionHandler.java

@@ -115,7 +115,7 @@ public class GlobalExceptionHandler {
     public R<Void> handleRuntimeException(RuntimeException e, HttpServletRequest request) {
         String requestURI = request.getRequestURI();
         log.error("请求地址'{}',发生未知异常.", requestURI, e);
-        return R.fail(e.getMessage());
+        return R.error();
     }
 
     /**
@@ -125,7 +125,7 @@ public class GlobalExceptionHandler {
     public R<Void> handleException(Exception e, HttpServletRequest request) {
         String requestURI = request.getRequestURI();
         log.error("请求地址'{}',发生系统异常.", requestURI, e);
-        return R.fail(e.getMessage());
+        return R.error();
     }
 
     /**

+ 6 - 5
kxmall-system/src/main/java/com/kxmall/order/domain/KxOrderScreenshot.java

@@ -3,11 +3,12 @@ package com.kxmall.order.domain;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.time.LocalDateTime;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 订单截图表
@@ -37,7 +38,7 @@ public class KxOrderScreenshot implements Serializable {
     /**
      * (1:创建订单, 2:服务前, 3:服务中, 4:服务后, 5:问题反馈, 0:其他)
      */
-    private Boolean screenshotType;
+    private Byte screenshotType;
 
     /**
      * 图片URL
@@ -57,7 +58,7 @@ public class KxOrderScreenshot implements Serializable {
     /**
      * 图片类型(1:用户、2:师傅、3:admin)
      */
-    private Boolean userType;
+    private Integer userType;
 
     /**
      * 上传人
@@ -77,5 +78,5 @@ public class KxOrderScreenshot implements Serializable {
     /**
      * 是否删除
      */
-    private Boolean isDeleted;
+    private Integer isDeleted;
 }

+ 4 - 0
kxmall-system/src/main/java/com/kxmall/order/domain/KxStoreOrder.java

@@ -269,4 +269,8 @@ public class KxStoreOrder extends BaseEntity {
      */
     private BigDecimal latitude;
 
+    /**
+     * 加急费用
+     */
+    private BigDecimal urgentFee;
 }

+ 14 - 3
kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderPriceBo.java

@@ -15,15 +15,24 @@ import java.util.Map;
 @Data
 public class OrderPriceBo implements Serializable {
 
+    private static final long serialVersionUID = -4636201728013004885L;
+
+    /**
+     * 原价
+     */
     private BigDecimal productOriginalTotalPrice;
 
-    /*** 商品总价*/
+    /**
+     * 总价 实际费用
+     */
     private BigDecimal productTotalPrice;
 
     /*** 运费*/
     private BigDecimal freightPrice;
 
-    /*** 加急费用*/
+    /**
+     * 加急费用
+     */
     private BigDecimal urgentFee;
 
     /*** 优惠券*/
@@ -38,7 +47,9 @@ public class OrderPriceBo implements Serializable {
     /*** 团购*/
     private Long seckillId;
 
-    /*** 计算优惠后,实际需要支付的价格*/
+    /**
+     * 所有费用加起来,计算优惠后,实际需要支付的价格
+     */
     private BigDecimal actualPrice;
 
     /*** 支付加个*/

+ 0 - 3
kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderRequestBo.java

@@ -69,9 +69,6 @@ public class OrderRequestBo {
      */
     private Long isIntegral;
 
-
-
-
     /**
      * 到店取货联系人
      */

+ 0 - 4
kxmall-system/src/main/java/com/kxmall/order/domain/bo/OrderRequestProductBo.java

@@ -26,8 +26,4 @@ public class OrderRequestProductBo {
 
     private BigDecimal giveIntegral;
 
-
-
-
-
 }

+ 5 - 4
kxmall-system/src/main/java/com/kxmall/order/domain/vo/KxOrderScreenshotVo.java

@@ -1,8 +1,9 @@
 package com.kxmall.order.domain.vo;
 
-import java.time.LocalDateTime;
 import lombok.Data;
 
+import java.time.LocalDateTime;
+
 /**
  * 订单截图视图对象 kx_order_screenshot
  *
@@ -25,7 +26,7 @@ public class KxOrderScreenshotVo {
     /**
      * (1:创建订单, 2:服务前, 3:服务中, 4:服务后, 5:问题反馈, 0:其他)
      */
-    private Boolean screenshotType;
+    private Byte screenshotType;
 
     /**
      * 图片URL
@@ -45,7 +46,7 @@ public class KxOrderScreenshotVo {
     /**
      * 图片类型(1:用户、2:师傅、3:admin)
      */
-    private Boolean userType;
+    private Integer userType;
 
     /**
      * 上传人
@@ -65,6 +66,6 @@ public class KxOrderScreenshotVo {
     /**
      * 是否删除
      */
-    private Boolean isDeleted;
+    private Integer isDeleted;
 
 }