From 17cea8fe652d1566e856e168d528a1af628e2140 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 14 Jul 2025 10:22:00 +0800
Subject: [PATCH] feat(mall): 添加订单角标数量接口并优化相关功能

---
 src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java                    |    5 +
 src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java          |    4 
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiSocialInfoDto.java                 |    2 
 src/main/resources/mapper/modules/ClothesOrderMapper.xml                            |   15 ++++
 src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java |    8 ++
 src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java |    6 +
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderItemInfoDto.java       |    4 -
 src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java                      |   16 +++--
 src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java               |    2 
 src/main/resources/templates/febs/views/modules/clothesType/orderList.html          |   31 +++++----
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java      |   28 +++++++--
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiMyDraftSaveDto.java                |   13 ----
 src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderPayDto.java            |    2 
 13 files changed, 86 insertions(+), 50 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
index b078725..da4032f 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ApiClothesOrderController.java
@@ -102,6 +102,14 @@
         return apiClothesOrderService.findOrderList(dto);
     }
 
+
+    @ApiOperation(value = "获取订单角标数量")
+    @GetMapping(value = "/findMarkCnt")
+    public FebsResponse findMarkCnt() {
+
+        return apiClothesOrderService.findMarkCnt();
+    }
+
     @ApiOperation(value = "订单详情", notes = "订单详情")
     @ApiResponses({
             @ApiResponse(code = 200, message = "success", response = ApiClothesOrderListInfoVo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
index 861888d..4904d8e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/clothes/ViewClothesTypeController.java
@@ -244,9 +244,13 @@
      */
     @GetMapping("deliverGoods/{id}")
     @RequiresPermissions("deliverGoods:update")
-    public String deliverGoods(@PathVariable long id, Model model) {
+    public String deliverGoods(@PathVariable Long id, Model model) {
         AdminClothesDeliverGoodsVo data = new AdminClothesDeliverGoodsVo();
         ClothesOrder clothesOrder = clothesOrderMapper.selectById(id);
+        data.setId(clothesOrder.getId());
+        data.setName(clothesOrder.getName());
+        data.setPhone(clothesOrder.getPhone());
+        data.setAddress(clothesOrder.getAddress());
         data.setExpressCom("极兔快递");
         MallExpressInfo mallExpressInfo = mallExpressInfoMapper.selectOne(
                 Wrappers.lambdaQuery(MallExpressInfo.class)
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderItemInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderItemInfoDto.java
index aa68da2..329ccb1 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderItemInfoDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderItemInfoDto.java
@@ -15,10 +15,6 @@
     private Long skuId;
 
     @NotNull(message = "参数不能为空")
-    @ApiModelProperty(value = "数量", example = "2")
-    private Integer cnt;
-
-    @NotNull(message = "参数不能为空")
     @ApiModelProperty(value = "类型 1正面图案 2反面图案 3工艺 4布料 5尺码 6尺码自定义", example = "2")
     private Integer type;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderPayDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderPayDto.java
index 71ba600..827fa0d 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderPayDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiClothesOrderPayDto.java
@@ -15,7 +15,7 @@
     @ApiModelProperty(value = "订单ID")
     private Long id;
 
-    @NotBlank(message = "参数不能为空")
+    @NotNull(message = "参数不能为空")
     @ApiModelProperty(value = "支付类型", example = "1微信2支付宝3余额")
     private Integer type;
 
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiMyDraftSaveDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiMyDraftSaveDto.java
index 60e28b3..f459ee7 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiMyDraftSaveDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiMyDraftSaveDto.java
@@ -32,19 +32,6 @@
     private List<ApiLocationAddDto> locationList;
 
 
-    @NotNull(message = "图案不能为空")
-    @ApiModelProperty(value = "图案ID")
-    private Long patternId;
-
-    @ApiModelProperty(value = "自定义内容")
-    private String patternRemark;
-
-
-    @NotNull(message = "图案位置不能为空")
-    @ApiModelProperty(value = "图案位置ID")
-    private Long locationId;
-
-
     @NotNull(message = "布料不能为空")
     @ApiModelProperty(value = "布料ID")
     private Long clothId;
diff --git a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiSocialInfoDto.java b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiSocialInfoDto.java
index fda9a9a..6525e83 100644
--- a/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiSocialInfoDto.java
+++ b/src/main/java/cc/mrbird/febs/mall/dto/clothes/ApiSocialInfoDto.java
@@ -7,7 +7,7 @@
 import javax.validation.constraints.NotNull;
 
 @Data
-@ApiModel(value = "ApiMyDraftSaveDto", description = "参数")
+@ApiModel(value = "ApiSocialInfoDto", description = "参数")
 public class ApiSocialInfoDto {
 
     @NotNull(message = "社区不能为空")
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
index cd46ad7..5dbe856 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ClothesOrderMapper.java
@@ -10,9 +10,14 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+import java.util.Map;
+
 public interface ClothesOrderMapper extends BaseMapper<ClothesOrder> {
 
     Page<ApiClothesOrderListVo> selectPageInOrder(Page<ApiClothesOrderListVo> page,  @Param("record")ApiClothesOrderListVoDto dto);
 
     IPage<AdminClothesOrderListVo> selectOrderListInPage(Page<AdminClothesOrderListVo> page, @Param("record")AdminClothesOrderListDto dto);
+
+    List<Map<String, Integer>> selectOrderStatusCnt(@Param("memberId")Long memberId);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
index e408b37..c31acb3 100644
--- a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
+++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java
@@ -2,6 +2,7 @@
 
 import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
 import cc.mrbird.febs.common.exception.FebsException;
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.mall.entity.*;
 import cc.mrbird.febs.mall.mapper.*;
 import cn.hutool.core.collection.CollUtil;
@@ -90,10 +91,13 @@
 
     }
 
-//    @Scheduled(cron = "0/5 * * * * ? ")
-//    public void wakeup() {
-//        log.info("本地保持唤醒状态");
-//        Long id = 5L;
-//        mallMemberMapper.selectById(id);
-//    }
+
+
+    @Autowired
+    private RedisUtils redisUtils;
+
+    @Scheduled(cron = "0/5 * * * * ? ")
+    public void wakeup() {
+        redisUtils.set("wakeup", "wakeup");
+    }
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
index 77d2fbe..95a4d21 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/ApiClothesOrderService.java
@@ -25,6 +25,8 @@
 
     FebsResponse findOrderList(ApiClothesOrderListVoDto dto);
 
+    FebsResponse findMarkCnt();
+
     FebsResponse orderDetails(Long id);
 
     FebsResponse confirmOrder(Long id);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
index 42e3832..a6c9631 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiClothesOrderServiceImpl.java
@@ -431,7 +431,7 @@
                 orderItem.setItemId(cloth.getId());
                 orderItem.setName(cloth.getName());
                 orderItem.setPrice(cloth.getPrice());
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setAmount(cloth.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 clothesOrderItemMapper.insert(orderItem);
 
@@ -445,7 +445,7 @@
                 orderItem.setItemId(size.getId());
                 orderItem.setName(size.getName());
                 orderItem.setPrice(size.getPrice());
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 clothesOrderItemMapper.insert(orderItem);
 
@@ -459,7 +459,7 @@
                 orderItem.setItemId(location.getId());
                 orderItem.setName(location.getName());
                 orderItem.setPrice(location.getPrice());
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 orderItem.setRemark(item.getPatternRemark());
                 clothesOrderItemMapper.insert(orderItem);
@@ -475,7 +475,7 @@
                 orderItem.setRemark(item.getPatternRemark());
                 orderItem.setName(pattern.getName());
                 orderItem.setPrice(pattern.getPrice());
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setRemark(item.getPatternRemark());
                 orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 clothesOrderItemMapper.insert(orderItem);
@@ -490,7 +490,7 @@
                 orderItem.setItemId(art.getId());
                 orderItem.setName(art.getName());
                 orderItem.setPrice(art.getPrice());
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 clothesOrderItemMapper.insert(orderItem);
 
@@ -501,7 +501,7 @@
                 orderItem.setItemId(clothesMemberStature.getId());
                 orderItem.setName(clothesMemberStature.getName());
                 orderItem.setPrice(BigDecimal.ZERO);
-                orderItem.setItemCnt(item.getCnt());
+                orderItem.setItemCnt(orderItem.getItemCnt());
                 orderItem.setAmount(orderItem.getPrice().multiply(new BigDecimal(orderItem.getItemCnt())).setScale(2, RoundingMode.DOWN));
                 clothesOrderItemMapper.insert(orderItem);
 
@@ -747,6 +747,22 @@
         return new FebsResponse().success().data(voPage);
     }
 
+    @Override
+    public FebsResponse findMarkCnt() {
+        Long memberId = LoginUserUtil.getLoginUser().getId();
+
+        List<Map<String, Integer>> maps = clothesOrderMapper.selectOrderStatusCnt(memberId);
+        Map<Integer, Integer> orderCnt = new HashMap<>();
+        if (CollUtil.isNotEmpty(maps)) {
+            for (Map<String, Integer> map : maps) {
+                orderCnt.put(map.get("status"), map.get("cnt"));
+            }
+        }
+
+        Map<String, Object> result = new HashMap<>();
+        result.put("order", orderCnt);
+        return new FebsResponse().success().data(result);
+    }
 
 
     private List<ApiClothesOrderItemInfoVo> buildOrderItemInfo(Long id) {
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
index 0c1efce..5c057b5 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ClothesTypeServiceImpl.java
@@ -547,8 +547,8 @@
         clothesOrderMapper.update(
                 null,
                 Wrappers.lambdaUpdate(ClothesOrder.class)
-                        .set(ClothesOrder::getStatus, ClothesOrderStatusEnum.CANCEL.getValue())
-                        .set(ClothesOrder::getUpdatedTime, new Date())
+                        .set(ClothesOrder::getStatus, value)
+                        .set(ClothesOrder::getUpdatedTime, date)
                         .eq(ClothesOrder::getId, id)
         );
     }
diff --git a/src/main/resources/mapper/modules/ClothesOrderMapper.xml b/src/main/resources/mapper/modules/ClothesOrderMapper.xml
index 37a7688..b16c659 100644
--- a/src/main/resources/mapper/modules/ClothesOrderMapper.xml
+++ b/src/main/resources/mapper/modules/ClothesOrderMapper.xml
@@ -21,7 +21,7 @@
                         b.name like CONCAT('%', CONCAT(#{record.query}, '%')) or
                     )
                 </if>
-                <if test="record.status != null">
+                <if test="record.status != 0">
                     and (
                         a.status  = #{record.status}
                     )
@@ -64,7 +64,7 @@
 
         <where>
             <if test="record != null">
-                <if test="record.payResult != null">
+                <if test="record.payResult != null and record.payResult != ''">
                     and a.pay_result = #{record.payResult}
                 </if>
                 <if test="record.status != null">
@@ -87,4 +87,15 @@
         order by a.created_time desc
     </select>
 
+
+
+    <select id="selectOrderStatusCnt" resultType="java.util.Map">
+        select
+            a.status,
+            count(1) cnt
+        from clothes_order a
+        where a.del_flag=0 and a.member_id=#{memberId}
+        group by a.status
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
index 486eb98..d5a50f8 100644
--- a/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
+++ b/src/main/resources/templates/febs/views/modules/clothesType/orderList.html
@@ -159,16 +159,19 @@
                 }
                 let ids = "";
                 for(let i = 0;i < data.length;i++){
-                    if(data[i].status != 1){
+                    if(data[i].status != 2){
                         febs.alert.warn('请选择待发货的订单');
                         return;
+                    }else{
+                        ids = data[i].id;
                     }
                 }
+                console.log(ids);
                 if(ids == null || ids == ""){
                     febs.alert.warn('请选择订单');
                     return;
                 }
-                febs.modal.open('发货', 'modules/clothesType/deliverGoods/' + data.id, {
+                febs.modal.open('发货', 'modules/clothesType/deliverGoods/' + ids, {
                     btn: ['确认','取消'],
                     yes: function (index, layero) {
                         $('#deliver-update-clothes').find('#submit').trigger('click');
@@ -190,13 +193,15 @@
                     if(data[i].status != 2){
                         febs.alert.warn('请选择待收货的订单');
                         return;
+                    }else{
+                        ids = data[i].id;
                     }
                 }
                 if(ids == null || ids == ""){
                     febs.alert.warn('请选择订单');
                     return;
                 }
-                febs.modal.open('修改物流信息', 'modules/clothesType/deliverGoods/' + data.id, {
+                febs.modal.open('修改物流信息', 'modules/clothesType/deliverGoods/' + ids, {
                     btn: ['确认','取消'],
                     yes: function (index, layero) {
                         $('#deliver-update-clothes').find('#deliverInfoSubmit').trigger('click');
@@ -215,7 +220,7 @@
                 }
                 let ids = "";
                 for(let i = 0;i < data.length;i++){
-                    if(data[i].status == 2 ){
+                    if(data[i].status != 2 ){
                         febs.alert.warn('请选择待发货的订单');
                         return;
                     }else{
@@ -247,7 +252,7 @@
                     febs.alert.warn('请选择订单');
                     return;
                 }
-                febs.get(ctx + 'admin/clothesType/confirmOrder?ids='+ids, null, function () {
+                febs.get(ctx + 'admin/clothesType/confirmOrder/'+ids, null, function () {
                     febs.alert.success('操作成功');
                     $query.click();
                 });
@@ -278,7 +283,7 @@
         });
 
         function refundOrder(id) {
-            febs.get(ctx + 'admin/clothesType/refundOrder' + id, null, function () {
+            febs.get(ctx + 'admin/clothesType/refundOrder/' + id, null, function () {
                 febs.alert.success('操作成功');
                 $query.click();
             });
@@ -334,14 +339,15 @@
                 cols: [[
                         {type: 'checkbox', fixed: 'left'},
                         {type: 'numbers', title: '', width: 80},
-                        {title: '操作',
-                            templet: function (d) {
-                                    return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder">详情</button>'
-                            },minWidth: 200,align:'center'},
+                        // {title: '操作',
+                        //     templet: function (d) {
+                        //             return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="seeOrder">详情</button>'
+                        //     },minWidth: 200,align:'center'},
                         {field: 'orderNo', title: '订单编号', minWidth: 200,align:'left' ,totalRowText:"合计"},
                         {field: 'memberName', title: '购买人', minWidth: 100,align:'left'},
                         {field: 'typeName', title: '类型', minWidth: 100,align:'left'},
-                        {field: 'typeImage', title: '图片', minWidth: 100,align:'left'},
+                        // {field: 'goodsName', title: '商品', minWidth: 160,align:'left'},
+                        // {field: 'typeImage', title: '图片', minWidth: 100,align:'left'},
                         {field: 'goodsCnt', title: '数量', minWidth: 120,align:'left'},
                         {field: 'status', title: '状态',
                             templet: function (d) {
@@ -359,7 +365,6 @@
                                     return ''
                                 }
                             }, minWidth: 80,align:'center'},
-                        {field: 'goodsName', title: '商品', minWidth: 160,align:'left'},
                         {field: 'amount', title: '总价', minWidth: 80,align:'left', totalRow:true},
                         {field: 'discountAmount', title: '优惠', minWidth: 80,align:'left', totalRow:true},
                         {field: 'carriage', title: '邮费', minWidth: 80,align:'left', totalRow:true},
@@ -388,8 +393,6 @@
                 orderNo: $searchForm.find('input[name="orderNo"]').val().trim(),
                 payResult: $searchForm.find("select[name='payResult']").val(),
                 status: $searchForm.find("select[name='status']").val(),
-                isHome: $searchForm.find("select[name='isHome']").val(),
-                uniqueCode: $searchForm.find("select[name='uniqueCode']").val(),
             };
         }
 

--
Gitblit v1.9.1