Преглед на файлове

订单,积分,分类,退货的功能优化

wang преди 5 дни
родител
ревизия
9b6017a769

+ 22 - 23
yami-shop-api/src/main/java/com/yami/shop/api/controller/MyOrderController.java

@@ -23,6 +23,7 @@ import com.yami.shop.common.exception.GlobalException;
 import com.yami.shop.common.util.Arith;
 import com.yami.shop.common.util.PageParam;
 import com.yami.shop.config.ShopConfig;
+import com.yami.shop.dao.PointsRecordMapper;
 import com.yami.shop.security.api.util.SecurityUtils;
 import com.yami.shop.service.*;
 import io.swagger.annotations.Api;
@@ -63,6 +64,7 @@ public class MyOrderController {
     private final OrderItemService orderItemService;
 
     private final OrderRefundService orderRefundService;
+    private final PointsRecordMapper pointsRecordMapper;
 
 
     /**
@@ -79,10 +81,10 @@ public class MyOrderController {
 
         Order order = orderService.getOrderByOrderNumberAndUserId(orderNumber, userId, true);
         ShopDetail shopDetail;
-        if(Objects.equals(order.getShopId(),Constant.PLATFORM_SHOP_ID)){
+        if (Objects.equals(order.getShopId(), Constant.PLATFORM_SHOP_ID)) {
             shopDetail = new ShopDetail();
             shopDetail.setShopName(Constant.PLATFORM_SHOP_NAME);
-        }else {
+        } else {
             shopDetail = shopDetailService.getShopDetailByShopId(order.getShopId());
         }
         UserAddrOrder userAddrOrder = userAddrOrderService.getById(order.getAddrOrderId());
@@ -92,7 +94,7 @@ public class MyOrderController {
 
         //计算订单使用积分
         Integer score = 0;
-        for (OrderItem orderItem:orderItems){
+        for (OrderItem orderItem : orderItems) {
             score += orderItem.getUseScore();
         }
 
@@ -107,7 +109,9 @@ public class MyOrderController {
         orderShopDto.setPayType(order.getPayType());
         orderShopDto.setTransfee(order.getFreightAmount());
 //        Math.abs
-        orderShopDto.setReduceAmount( Math.abs(order.getReduceAmount()));
+        Long l = pointsRecordMapper.statisticsPoint(userId, Math.toIntExact(order.getChannelId()));
+        orderShopDto.setTotalAvailableScore(l);
+        orderShopDto.setReduceAmount(Arith.div(Double.valueOf(order.getOffsetPoints()), 100));
         orderShopDto.setCreateTime(order.getCreateTime());
         orderShopDto.setRemarks(order.getRemarks());
         orderShopDto.setOrderType(order.getOrderType());
@@ -123,13 +127,10 @@ public class MyOrderController {
         // 更新时间
         orderShopDto.setUpdateTime(order.getUpdateTime());
 
-
-
-
         List<OrderRefund> orderRefunds = orderRefundService.getProcessingOrderRefundByOrderId(order.getOrderId());
 
         // 可以退款的状态,并在退款时间内
-        if (order.getHbOrderStatus() > OrderStatus.UNPAY.value() && order.getHbOrderStatus() < OrderStatus.CLOSE.value() && orderRefundService.checkRefundDate(order) ) {
+        if (order.getHbOrderStatus() > OrderStatus.UNPAY.value() && order.getHbOrderStatus() < OrderStatus.CLOSE.value() && orderRefundService.checkRefundDate(order)) {
             orderShopDto.setCanRefund(true);
             // 有没有正在退款中的订单
             if (CollectionUtil.isEmpty(orderRefunds)) {
@@ -140,7 +141,7 @@ public class MyOrderController {
         for (OrderRefund orderRefund : orderRefunds) {
 
             // 整单退款
-            if (Objects.equals(RefundType.ALL.value(),orderRefund.getRefundType())) {
+            if (Objects.equals(RefundType.ALL.value(), orderRefund.getRefundType())) {
                 orderShopDto.setCanRefund(false);
                 // 统一的退款单号
                 for (OrderItemDto orderItemDto : orderItemDtoList) {
@@ -179,7 +180,7 @@ public class MyOrderController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "status", value = "订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败", required = false, dataType = "Integer"),
     })
-    public ResponseEntity<IPage<MyOrderDto>> myOrder(@RequestParam(value = "status") Integer status,PageParam<MyOrderDto> page) {
+    public ResponseEntity<IPage<MyOrderDto>> myOrder(@RequestParam(value = "status") Integer status, PageParam<MyOrderDto> page) {
         String userId = SecurityUtils.getUser().getUserId();
         IPage<MyOrderDto> myOrderDtoIpage = myOrderService.pageMyOrderByUserIdAndStatus(page, userId, status);
         return ResponseEntity.ok(myOrderDtoIpage);
@@ -192,7 +193,7 @@ public class MyOrderController {
     public ResponseEntity<OrderItem> getOrderItem(@RequestParam(value = "orderItemId") Long orderItemId) {
         String imgDomainName = shopConfig.getDomain().getResourcesDomainName();
         OrderItem orderItem = orderItemService.getById(orderItemId);
-        orderItem.setPic(orderItem.getPic() !=null ? imgDomainName + "/" + orderItem.getPic() :null);
+        orderItem.setPic(orderItem.getPic() != null ? imgDomainName + "/" + orderItem.getPic() : null);
         return ResponseEntity.ok(orderItem);
     }
 
@@ -204,7 +205,7 @@ public class MyOrderController {
         String imgDomainName = shopConfig.getDomain().getResourcesDomainName();
         List<OrderItem> orderItems = orderItemService.list(new LambdaQueryWrapper<OrderItem>().eq(OrderItem::getOrderNumber, orderNumber));
         for (OrderItem orderItem : orderItems) {
-            orderItem.setPic(orderItem.getPic() !=null ? imgDomainName + "/" + orderItem.getPic() :null);
+            orderItem.setPic(orderItem.getPic() != null ? imgDomainName + "/" + orderItem.getPic() : null);
         }
         return ResponseEntity.ok(orderItems);
     }
@@ -217,9 +218,9 @@ public class MyOrderController {
     @ApiImplicitParams({
             @ApiImplicitParam(name = "commStatus", value = "订单状态 0:待评价 1已评价", required = false, dataType = "Integer")
     })
-    public ResponseEntity<IPage<MyOrderDto>> myOrderComment(@RequestParam(value = "commStatus") Integer commStatus,PageParam<MyOrderDto> page) {
+    public ResponseEntity<IPage<MyOrderDto>> myOrderComment(@RequestParam(value = "commStatus") Integer commStatus, PageParam<MyOrderDto> page) {
         String userId = SecurityUtils.getUser().getUserId();
-        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.myOrderComment(page, userId,commStatus);
+        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.myOrderComment(page, userId, commStatus);
         return ResponseEntity.ok(myOrderDtoIpage);
     }
 
@@ -233,7 +234,7 @@ public class MyOrderController {
     })
     public ResponseEntity<IPage<MyOrderItemDto>> myOrderItemsComment(@RequestParam(value = "commStatus") Integer commStatus, PageParam<MyOrderItemDto> page) {
         String userId = SecurityUtils.getUser().getUserId();
-        IPage<MyOrderItemDto> myOrderDtoIpage = myOrderService.myOrderItemsComment(page, userId,commStatus);
+        IPage<MyOrderItemDto> myOrderDtoIpage = myOrderService.myOrderItemsComment(page, userId, commStatus);
         return ResponseEntity.ok(myOrderDtoIpage);
     }
 
@@ -244,10 +245,10 @@ public class MyOrderController {
     @ApiOperation(value = "订单列表信息查询", notes = "根据订单编号或者订单中商品名称搜索")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "status", value = "订单状态 1:待付款 2:待发货 3:待收货 4:待评价 5:成功 6:失败", required = false, dataType = "Integer"),
-            @ApiImplicitParam(name = "orderName",value = "订单编号或者订单中商品名称", required = false,dataType = "String"),
-            @ApiImplicitParam(name = "orderTimeStatus",value = "0全部订单 1最近七天 2最近三个月 3三个月之前 订单", required = false,dataType = "Integer"),
-            @ApiImplicitParam(name = "orderType",value = "0全部订单 1拼团订单 2秒杀订单 3普通订单", required = false,dataType = "Integer"),
-            @ApiImplicitParam(name = "orderNumber",value = "订单编号", required = false,dataType = "String")
+            @ApiImplicitParam(name = "orderName", value = "订单编号或者订单中商品名称", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "orderTimeStatus", value = "0全部订单 1最近七天 2最近三个月 3三个月之前 订单", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "orderType", value = "0全部订单 1拼团订单 2秒杀订单 3普通订单", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "orderNumber", value = "订单编号", required = false, dataType = "String")
     })
     public ResponseEntity<IPage<MyOrderDto>> myOrderSearch(@RequestParam(value = "status") Integer status,
                                                            @RequestParam(value = "orderName") String orderName,
@@ -256,7 +257,7 @@ public class MyOrderController {
                                                            @RequestParam(value = "orderNumber") String orderNumber,
                                                            PageParam<MyOrderDto> page) {
         String userId = SecurityUtils.getUser().getUserId();
-        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.pageMyOrderByParams(page, userId, status,orderName,orderTimeStatus,orderType,orderNumber);
+        IPage<MyOrderDto> myOrderDtoIpage = myOrderService.pageMyOrderByParams(page, userId, status, orderName, orderTimeStatus, orderType, orderNumber);
         return ResponseEntity.ok(myOrderDtoIpage);
     }
 
@@ -325,7 +326,7 @@ public class MyOrderController {
 
         Order order = orderService.getOrderByOrderNumberAndUserId(orderNumber, userId, true);
 
-        if (!Objects.equals(order.getHbOrderStatus(), OrderStatus.SUCCESS.value()) && !Objects.equals(order.getHbOrderStatus(), OrderStatus.CLOSE.value()) ) {
+        if (!Objects.equals(order.getHbOrderStatus(), OrderStatus.SUCCESS.value()) && !Objects.equals(order.getHbOrderStatus(), OrderStatus.CLOSE.value())) {
             throw new GlobalException("订单未完成或未关闭,无法删除订单");
         }
 
@@ -336,8 +337,6 @@ public class MyOrderController {
     }
 
 
-
-
 //    /**
 //     * 获取我的订单订单数量
 //     */

+ 1 - 2
yami-shop-api/src/main/java/com/yami/shop/api/controller/OrderController.java

@@ -91,7 +91,6 @@ public class OrderController {
                 Sku byIdss = skuService.getById(byId);
                 boolean skuStock = qnhService.getSkuStock(byIdss.getSkuCode(), byId.getProdId(), orderParam.getPlatform());
                 Product byId1 = productService.getById(byId.getProdId(), orderParam.getPlatform());
-//                byId1.setTotalStocks(byIdss.getStocks());
                 productService.updateById(byId1);
                 if (skuStock && byId1.getTotalStocks() < byId.getBasketCount()) {
                     throw new GlobalException("当前选择的规格库存不足!");
@@ -99,7 +98,7 @@ public class OrderController {
             });
         } else {
             Sku byId = skuService.getById(orderParam.getOrderItem().getSkuId());
-            boolean skuStock = qnhService.getSkuStock(byId.getSkuCode(), byId.getProdId(), orderParam.getPlatform());
+            boolean skuStock = qnhService.getSkuStock(byId.getSkuCode(), orderParam.getOrderItem().getProdId(), orderParam.getPlatform());
             Product byId1 = productService.getById(byId.getProdId(), orderParam.getPlatform());
             productService.updateById(byId1);
             if (skuStock && byId1.getTotalStocks() < orderParam.getOrderItem().getProdCount()) {

+ 1 - 1
yami-shop-api/src/main/java/com/yami/shop/api/controller/ProdController.java

@@ -58,7 +58,7 @@ public class ProdController {
     @GetMapping("/prodInfo")
     @ApiOperation(value = "商品详情信息", notes = "根据商品ID(prodId)获取商品信息")
     @ApiImplicitParam(name = "prodId", value = "商品ID", required = true, dataType = "Long")
-    public ResponseEntity<ProductDto> prodInfo(Long prodId, Integer platform, Long shopId) {
+    public ResponseEntity<ProductDto> prodInfo(@RequestParam("prodId") Long prodId, @RequestParam("platform") Integer platform, @RequestParam("shopId") Long shopId) {
 
         Product product = prodService.getProductByProdId(prodId, platform);
         if (product == null || product.getStatus() != 1) {

+ 5 - 2
yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/OrderShopDto.java

@@ -59,8 +59,11 @@ public class OrderShopDto implements Serializable {
     @ApiModelProperty(value = "运费", required = true)
     private Double transfee;
 
-    @ApiModelProperty(value = "优惠总额", required = true)
-    private Double reduceAmount;
+    @ApiModelProperty(value = "整个订单使用的积分数", required = true)
+    private Double reduceAmount= 0.0;
+
+    @ApiModelProperty(value = "所有可用积分")
+    private Long totalAvailableScore=0L;
 
     @ApiModelProperty(value = "促销活动优惠金额", required = true)
     private Double discountMoney;

+ 3 - 3
yami-shop-bean/src/main/java/com/yami/shop/bean/app/dto/ShopCartOrderMergerDto.java

@@ -36,19 +36,19 @@ public class ShopCartOrderMergerDto implements Serializable {
     private Double orderReduce = 0.0;
 
     @ApiModelProperty(value = "订单所需积分", required = true)
-    private Integer scorePrice;
+    private Integer scorePrice=0;
 
     @ApiModelProperty(value = "整个订单使用的积分数", required = true)
     private Double totalUsableScore = 0.0;
 
     @ApiModelProperty(value = "所有可用积分")
-    private Long totalAvailableScore;
+    private Long totalAvailableScore=0L;
 
     @ApiModelProperty(value = "整个订单最多可以使用的积分数", required = true)
     private Integer maxUsableScore = 0;
 
     @ApiModelProperty(value = "积分抵扣金额", required = true)
-    private Double totalScoreAmount;
+    private Double totalScoreAmount=0.0;
 
     @ApiModelProperty(value = "购物积分抵现比例", required = true)
     private Double shopUseScore;

+ 3 - 1
yami-shop-service/src/main/java/com/yami/shop/service/impl/QnhServiceImpl.java

@@ -189,7 +189,9 @@ public class QnhServiceImpl implements IQnhService {
 
     @Override
     public boolean getSkuStock(String skuCode, Long prodId, Integer platform) {
-        Sku one1 = skuService.getOne(Wrappers.<Sku>lambdaQuery().eq(Sku::getSkuCode, skuCode).eq(Sku::getProdId, prodId));
+        Sku one1 = skuService.getOne(Wrappers.<Sku>lambdaQuery()
+                .eq(Sku::getSkuCode, skuCode)
+                .eq(Sku::getProdId, prodId));
         Map<String, Object> body = bulidMap();
         if (null == one1) throw new GlobalException("请重新选择规格,该规格不存在!");
         Product byId = productService.getById(prodId, platform);

+ 0 - 1
yami-shop-service/src/main/java/com/yami/shop/service/impl/SkuServiceImpl.java

@@ -33,7 +33,6 @@ public class SkuServiceImpl extends ServiceImpl<SkuMapper, Sku> implements SkuSe
     private SkuMapper skuMapper;
 
     @Override
-    @Cacheable(cacheNames = "skuList", key = "#prodId")
     public List<Sku> listByProdId(Long prodId) {
         return skuMapper.listByProdId(prodId);
     }

+ 11 - 2
yami-shop-service/src/main/resources/mapper/OrderMapper.xml

@@ -525,8 +525,17 @@
             temp.pay_time,
             temp.order_id, temp.create_time, temp.freight_amount,temp.order_number,temp.actual_total,temp.shop_id,temp.addr_order_id FROM tz_order temp
         WHERE temp.user_id = #{userId} and temp.delete_status = 0
-        <if test="status != null and status != 0">
-            AND temp.hb_order_status = #{status}
+        <if test="status != null and '' != status">
+            AND
+            <choose>
+                <when test="20 == status">
+                    temp.hb_order_status IN (20,30,40)
+                </when>
+                <otherwise>
+                    temp.hb_order_status = #{status}
+                </otherwise>
+            </choose>
+
         </if>
         ORDER BY temp.create_time DESC
         LIMIT #{adapter.begin} , #{adapter.size}

+ 3 - 3
yami-shop-service/src/main/resources/mapper/SkuMapper.xml

@@ -70,10 +70,10 @@
                ts.sku_code,
                ts.hb_spu_id,
                ts.hb_sku_id
-        FROM tz_sku AS ts
-                 LEFT JOIN tz_shop_sku AS tss ON ts.sku_id = tss.sku_id
+        FROM tz_shop_sku AS tss
+                 LEFT JOIN tz_sku AS ts ON ts.sku_id = tss.sku_id
                  LEFT JOIN tz_channel_prod AS tcp ON ts.sku_id = tcp.sku_id
-        WHERE ts.prod_id = #{prodId}
+        WHERE tss.spu_id = #{prodId}
           AND ts.is_delete = 0
           AND tcp.is_delete = 0
           AND ts.`status` = 1

+ 3 - 1
yami-shop-user/yami-shop-user-comment/src/main/java/com/yami/shop/user/comment/service/impl/UserScoreDetailServiceImpl.java

@@ -178,7 +178,9 @@ public class UserScoreDetailServiceImpl extends ServiceImpl<UserScoreDetailMappe
                 }
             }
             pointsRecord.setVariablePointsStr(mark + pointsRecord.getVariablePoints());
-            pointsRecord.setTotalAvailablePoints(pointsRecord.getCurrentlyAvailablePoints().longValue());
+            if(null!=pointsRecord.getCurrentlyAvailablePoints()){
+                pointsRecord.setTotalAvailablePoints(pointsRecord.getCurrentlyAvailablePoints().longValue());
+            }
         }).collect(Collectors.toList());
         pointsRecordIPage.setRecords(collect);
         return pointsRecordIPage;