Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	mall-service/src/main/java/com/txz/mall/business/impl/OrderServiceBusinessImpl.java
#	mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java
yubin 3 hete
szülő
commit
1180494b18

+ 71 - 74
mall-service/src/main/java/com/txz/mall/business/impl/OrderServiceBusinessImpl.java

@@ -1,13 +1,11 @@
 package com.txz.mall.business.impl;
 
 import cn.hutool.core.date.DateUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.txz.cif.dto.EarningsDTO;
 import com.txz.mall.business.OrderServiceBusiness;
 import com.txz.mall.core.RedisUtil;
 import com.txz.mall.core.ServiceException;
-import com.txz.mall.dao.StorePinkMapper;
 import com.txz.mall.dubbo.client.CifRedEnvelopeDubboServiceClient;
 import com.txz.mall.dubbo.client.CifUserDubboServiceClient;
 import com.txz.mall.enums.PinkOrderStatusEnum;
@@ -48,19 +46,19 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
     private final CifRedEnvelopeDubboServiceClient cifRedEnvelopeDubboServiceClient;
 
     @Override
-    public StoreOrderVO orderDetail(Long id ,String orderNo) {
+    public StoreOrderVO orderDetail(Long id, String orderNo) {
         StoreOrderVO vo = new StoreOrderVO();
         StoreOrder storeOrder = null;
-        if(!ObjectUtils.isEmpty(id)){
-            storeOrder =   storeOrderService.findById(id);
-        }else if(!ObjectUtils.isEmpty(orderNo)){
-            storeOrder =  storeOrderService.findBy("orderId",orderNo);
+        if (!ObjectUtils.isEmpty(id)) {
+            storeOrder = storeOrderService.findById(id);
+        } else if (!ObjectUtils.isEmpty(orderNo)) {
+            storeOrder = storeOrderService.findBy("orderId", orderNo);
         }
 
         if(ObjectUtils.isEmpty(storeOrder)){
             throw new ServiceException(I18nUtil.get("order.does.not.exist.id")+id);
         }
-        id =storeOrder.getId();
+        id = storeOrder.getId();
         Condition infoCondition = new Condition(StoreOrderInfo.class);
         Example.Criteria infoCriteria = infoCondition.createCriteria();
         infoCriteria.andEqualTo("isDelete", 0);
@@ -74,11 +72,11 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         storePinkCriteria.andEqualTo("orderIdKey", id);
 
         List<StorePink> byCondition = storePinkService.findByCondition(storePinkCondition);
-        if(!org.springframework.util.CollectionUtils.isEmpty(byCondition)){
+        if (!org.springframework.util.CollectionUtils.isEmpty(byCondition)) {
             StorePink storePink = byCondition.get(0);
             vo.setStorePink(storePink);
         }
-//        UserDTO user = userDubboServiceClient.getUser(storeOrder.getUid());
+        //        UserDTO user = userDubboServiceClient.getUser(storeOrder.getUid());
         UserAddress userAddress = userAddressService.findById(storeOrder.getAddressId());
 
 
@@ -86,16 +84,16 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         orderCodeList.add(storeOrder.getOrderId());
 
         Map<String, EarningsDTO> collect = new HashMap<>();
-        //查询订单收益
+        // 查询订单收益
         List<EarningsDTO> earningsByOrders = cifRedEnvelopeDubboServiceClient.getEarningsByOrders(orderCodeList);
-        if(!org.springframework.util.CollectionUtils.isEmpty(earningsByOrders)){
-             collect = earningsByOrders.stream().filter(a -> !ObjectUtils.isEmpty(a)).collect(Collectors.toMap(EarningsDTO::getOrderNo, a -> a, (b, c) -> c));
+        if (!org.springframework.util.CollectionUtils.isEmpty(earningsByOrders)) {
+            collect = earningsByOrders.stream().filter(a -> !ObjectUtils.isEmpty(a)).collect(Collectors.toMap(EarningsDTO::getOrderNo, a -> a, (b, c) -> c));
 
         }
 
         BeanUtils.copyProperties(storeOrder, vo);
         EarningsDTO earningsDTO = collect.get(storeOrder.getOrderId());
-        if(!ObjectUtils.isEmpty(earningsDTO)){
+        if (!ObjectUtils.isEmpty(earningsDTO)) {
             vo.setBrokerage(earningsDTO.getEarnings());
         }
 
@@ -103,73 +101,72 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         vo.setOrderAddressVO(userAddress);
         vo.setOrderStatusVO(logList);
 
-//        vo.setUserVO(user);
+        //        vo.setUserVO(user);
         return vo;
     }
 
-//
-//    @Override
-//    public List<StoreCombinationRankVO> getRank() {
-//        List<StoreCombinationRankVO> list = new ArrayList<>();
-//        String key = "order:rank:";
-//        boolean exists = redisUtil.hasKey("order:rank");
-//        if (exists) {
-//            String orderVoString = redisUtil.get(key).toString();
-//            list = JSONObject.parseArray(orderVoString, StoreCombinationRankVO.class);
-//            return list;
-//        }
-//
-//        Condition orderCondition = new Condition(StoreOrder.class);
-//        Example.Criteria orderCriteria = orderCondition.createCriteria();
-//        Date date = new Date();
-//        Date startDate = DateUtil.beginOfDay(DateUtils.addDays(date, -7));
-//        Date endDate = DateUtil.endOfDay(date);
-//        orderCriteria.andEqualTo("isDelete", 0);
-//        orderCriteria.andBetween("createTime", startDate, endDate);
-//        orderCriteria.andEqualTo("paid", 1);
-//        List<StoreOrder> orderList = storeOrderService.findByCondition(orderCondition);
-//        Map<Long, Long> combinationCountMap = orderList.stream()
-//                .collect(Collectors.groupingBy(
-//                        StoreOrder::getCombinationId,
-//                        Collectors.counting()
-//                ));
-//
-//        // 获取前10个热门商品组合
-//        List<Map.Entry<Long, Long>> topCombinations = combinationCountMap.entrySet()
-//                .stream()
-//                .sorted(Map.Entry.<Long, Long>comparingByValue().reversed())
-//                .collect(Collectors.toList());
-//
-//        List<StoreCombination> combinationList = storeCombinationService.findByIds(String.join(",", topCombinations.stream().map(Map.Entry::getKey).map(Object::toString).collect(Collectors.toList())));
-//        for (StoreCombination storeCombination : combinationList) {
-//            List<StoreCombination> collect = combinationList.stream().filter(c -> c.getId().equals(storeCombination.getId())).collect(Collectors.toList());
-//            if (CollectionUtils.isNotEmpty(collect)) {
-//                StoreCombination combination = collect.get(0);
-//                StoreCombinationRankVO rankVO = new StoreCombinationRankVO();
-//                rankVO.setProductId(combination.getProductId());
-//                rankVO.setProductName(combination.getProductName());
-//                rankVO.setSales(combination.getSales());
-//                rankVO.setImage(combination.getImage());
-//                rankVO.setPrice(combination.getPrice());
-//                list.add(rankVO);
-//            }
-//        }
-//        redisUtil.set(key, list);
-//        return list;
-//    }
-
+    //
+    //    @Override
+    //    public List<StoreCombinationRankVO> getRank() {
+    //        List<StoreCombinationRankVO> list = new ArrayList<>();
+    //        String key = "order:rank:";
+    //        boolean exists = redisUtil.hasKey("order:rank");
+    //        if (exists) {
+    //            String orderVoString = redisUtil.get(key).toString();
+    //            list = JSONObject.parseArray(orderVoString, StoreCombinationRankVO.class);
+    //            return list;
+    //        }
+    //
+    //        Condition orderCondition = new Condition(StoreOrder.class);
+    //        Example.Criteria orderCriteria = orderCondition.createCriteria();
+    //        Date date = new Date();
+    //        Date startDate = DateUtil.beginOfDay(DateUtils.addDays(date, -7));
+    //        Date endDate = DateUtil.endOfDay(date);
+    //        orderCriteria.andEqualTo("isDelete", 0);
+    //        orderCriteria.andBetween("createTime", startDate, endDate);
+    //        orderCriteria.andEqualTo("paid", 1);
+    //        List<StoreOrder> orderList = storeOrderService.findByCondition(orderCondition);
+    //        Map<Long, Long> combinationCountMap = orderList.stream()
+    //                .collect(Collectors.groupingBy(
+    //                        StoreOrder::getCombinationId,
+    //                        Collectors.counting()
+    //                ));
+    //
+    //        // 获取前10个热门商品组合
+    //        List<Map.Entry<Long, Long>> topCombinations = combinationCountMap.entrySet()
+    //                .stream()
+    //                .sorted(Map.Entry.<Long, Long>comparingByValue().reversed())
+    //                .collect(Collectors.toList());
+    //
+    //        List<StoreCombination> combinationList = storeCombinationService.findByIds(String.join(",", topCombinations.stream().map(Map.Entry::getKey).map(Object::toString).collect(Collectors.toList())));
+    //        for (StoreCombination storeCombination : combinationList) {
+    //            List<StoreCombination> collect = combinationList.stream().filter(c -> c.getId().equals(storeCombination.getId())).collect(Collectors.toList());
+    //            if (CollectionUtils.isNotEmpty(collect)) {
+    //                StoreCombination combination = collect.get(0);
+    //                StoreCombinationRankVO rankVO = new StoreCombinationRankVO();
+    //                rankVO.setProductId(combination.getProductId());
+    //                rankVO.setProductName(combination.getProductName());
+    //                rankVO.setSales(combination.getSales());
+    //                rankVO.setImage(combination.getImage());
+    //                rankVO.setPrice(combination.getPrice());
+    //                list.add(rankVO);
+    //            }
+    //        }
+    //        redisUtil.set(key, list);
+    //        return list;
+    //    }
 
 
     @Override
     public List<StoreCombinationRankVO> getRank() {
         List<StoreCombinationRankVO> list = new ArrayList<>();
-        String key = "order:rank:";
-        boolean exists = redisUtil.hasKey("order:rank");
-        if (exists) {
-            String orderVoString = redisUtil.get(key).toString();
-            list = JSONObject.parseArray(orderVoString, StoreCombinationRankVO.class);
-            return list;
-        }
+        // String key = "order:rank:";
+        // boolean exists = redisUtil.hasKey("order:rank");
+        // if (exists) {
+        //     String orderVoString = redisUtil.get(key).toString();
+        //     list = JSONObject.parseArray(orderVoString, StoreCombinationRankVO.class);
+        //     return list;
+        // }
 
         Condition orderCondition = new Condition(StoreOrder.class);
         Example.Criteria orderCriteria = orderCondition.createCriteria();
@@ -212,7 +209,7 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
                 list.add(rankVO);
             }
         }
-        redisUtil.set(key, list);
+        // redisUtil.set(key, list);
         return list;
     }
 

+ 1 - 4
mall-service/src/main/java/com/txz/mall/controller/appcontroller/AppOrderController.java

@@ -18,7 +18,6 @@ import org.slf4j.LoggerFactory;
 import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
 import vo.MyRecord;
 import vo.StoreOrderCountItemVO;
 import vo.StoreOrderVO;
@@ -26,7 +25,6 @@ import vo.StoreOrderVO;
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Created by CodeGenerator on 2025/07/15.
@@ -268,8 +266,7 @@ public class AppOrderController {
         @ApiOperation("待处理红点数")
         @GetMapping("/pendingRedDots")
         public Result pendingRedDots() {
-            Map<Integer, Integer> integerIntegerMap = storeOrderService.pendingRedDots();
-            return Result.success(integerIntegerMap);
+            return Result.success(storeOrderService.pendingRedDots());
         }
 
 

+ 1 - 1
mall-service/src/main/java/com/txz/mall/service/StoreOrderService.java

@@ -169,7 +169,7 @@ public interface StoreOrderService extends Service<StoreOrder> {
      * 待处理红点数
      * @return
      */
-    Map<Integer,Integer> pendingRedDots();
+    PendingRedDotsVO pendingRedDots();
 
     List<StoreCombinationRankVO> getRank();
 

+ 280 - 245
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java

@@ -218,7 +218,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         Date settleTime = DateUtil.offsetHour(date, effectiveTime1);
         storePinkSummary.setStopTime(settleTime);
         storePinkSummary.setIsRefund(0);
-        storePinkSummary.setIsVirtual(Boolean.TRUE);  //初始化时直接锁定,防止团长还没支付这个团就暴露出来了。等团长支付时会重新计算是否锁定
+        storePinkSummary.setIsVirtual(Boolean.TRUE);  // 初始化时直接锁定,防止团长还没支付这个团就暴露出来了。等团长支付时会重新计算是否锁定
         storePinkSummary.setPeopleCount(1);
         storePinkSummary.setStatus(1);
 
@@ -314,7 +314,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 throw new ServiceException(I18nUtil.get("group.buying.is.full"));
             }
 
-            //记得将重复拼团校验放开
+            // 记得将重复拼团校验放开
             List<Long> uidList = pinkList.stream().map(StorePink::getUid).collect(Collectors.toList());
             if (uidList.contains(dto.getUserId())) {
                 throw new ServiceException(I18nUtil.get("duplicate.group.buying"));
@@ -324,18 +324,18 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
     }
 
     private void joinGroup(StorePink teamPink, GoPinkDTO dto, int count, int pinkSize) {
-        //拼团剩余人数
+        // 拼团剩余人数
         Date date = new Date();
 
-        //修改拼团汇总表  这块得上分布式锁   这块不需要了,会去 maintainQuantityStatusOfTheStorePinkSummary幂等时时维护 汇总表的拼团状态和拼团数量的
-//        StorePinkSummary storePinkSummary = new StorePinkSummary();
-//        storePinkSummary.setId(dto.getSpsId());
-//        storePinkSummary.setPeopleCount(pinkSize+1);
-//        EasyToUseUtil.appCreateAssignment(date,storePinkSummary);
-//        if (count == 1) {
-//            storePinkSummary.setStatus(1);
-//        }
-//        storePinkSummaryService.update(storePinkSummary);
+        // 修改拼团汇总表  这块得上分布式锁   这块不需要了,会去 maintainQuantityStatusOfTheStorePinkSummary幂等时时维护 汇总表的拼团状态和拼团数量的
+        //        StorePinkSummary storePinkSummary = new StorePinkSummary();
+        //        storePinkSummary.setId(dto.getSpsId());
+        //        storePinkSummary.setPeopleCount(pinkSize+1);
+        //        EasyToUseUtil.appCreateAssignment(date,storePinkSummary);
+        //        if (count == 1) {
+        //            storePinkSummary.setStatus(1);
+        //        }
+        //        storePinkSummaryService.update(storePinkSummary);
 
         // 加入拼团
         StorePink storePink = new StorePink();
@@ -388,7 +388,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         if (ObjectUtil.isNull(storeCombination) || storeCombination.getIsDelete().equals(1)) {
             throw new ServiceException(I18nUtil.get("the.corresponding.group.buying.product.does.not.exist"));
         }
-        //这里要排除掉团长未付款的拼团
+        // 这里要排除掉团长未付款的拼团
 
         PageHelper.startPage(1, 10);
         Condition pinkSummaryCondition = new Condition(StorePinkSummary.class);
@@ -420,7 +420,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
         Map<Long, List<StorePink>> collect = pinkList.stream().collect(Collectors.groupingBy(StorePink::getSpsId));
         log.info("collect:" + collect.toString());
-//记得将重复拼团校验放开
+        // 记得将重复拼团校验放开
         List<List<StorePink>> availableGroups = collect.values().stream()
                 .filter(list -> !list.stream().map(StorePink::getUid).collect(Collectors.toList()).contains(dto.getUserId()))
                 .collect(Collectors.toList());
@@ -447,14 +447,14 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         log.info("maxPinkList:" + maxPinkList.toString());
         if (CollectionUtils.isNotEmpty(maxPinkList)) {
             List<Long> uidList = maxPinkList.stream().map(StorePink::getUid).collect(Collectors.toList());
-            //记得将重复拼团校验放开
+            // 记得将重复拼团校验放开
             if (!uidList.contains(dto.getUserId())) {
-                //团长
+                // 团长
                 StorePink pink = maxPinkList.stream().filter(i -> i.getKId().equals(0)).collect(Collectors.toList()).get(0);
                 int count = pink.getPeople() - (CollUtil.isEmpty(maxPinkList) ? 0 : maxPinkList.size());
                 log.info("count:" + count);
                 if (count > 0) {
-                    dto.setSpsId(pink.getSpsId()); //拼团汇总表id
+                    dto.setSpsId(pink.getSpsId()); // 拼团汇总表id
                     joinGroup(pink, dto, count, pinkList.size());
                 } else {
                     throw new ServiceException(I18nUtil.get("the.number.of.group.buying.participants.exceeds.the.limit.please.initiate.group.buying.again.pinkid") + pink.getId());
@@ -495,9 +495,12 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                             storeOrderInfo.getSku(),
                             storeOrderInfo.getPayNum(),
 
-                            vo.getRealName(),
-                            vo.getUserPhone(),
-                            vo.getUserAddress(),
+                            (orderAddressVO == null || StringUtils.isBlank(orderAddressVO.getRealName())) ? "" : orderAddressVO.getRealName(),
+                            (orderAddressVO == null || StringUtils.isBlank(orderAddressVO.getPhone())) ? "" : orderAddressVO.getPhone(),
+                            (orderAddressVO == null || StringUtils.isBlank(orderAddressVO.getDetail())) ? "" : orderAddressVO.getProvince() + orderAddressVO.getCity() + orderAddressVO.getDistrict() + orderAddressVO.getDetail(),
+                            // vo.getRealName(),
+                            // vo.getUserPhone(),
+                            // vo.getUserAddress(),
                             (orderAddressVO == null || StringUtils.isBlank(orderAddressVO.getPostCode())) ? "" : orderAddressVO.getPostCode(),
                             vo.getDeliveryName(),
                             vo.getDeliveryId()
@@ -562,7 +565,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             StoreOrder storeOrderForUpdate = new StoreOrder();
             storeOrderForUpdate.setStatus(pinkOrderStatusEnum.getKey());
             storeOrderForUpdate.setDeliveryName(storeOrderDeliveryDTO.getDeliveryName());
-            storeOrderForUpdate.setDeliveryCode(storeOrderDeliveryDTO.getDeliveryNo());
+            storeOrderForUpdate.setDeliveryId(storeOrderDeliveryDTO.getDeliveryNo());
             storeOrderForUpdate.setDeliveryTime(date);
 
             Example example = new Example(StoreOrder.class);
@@ -570,7 +573,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             storeOrderMapper.updateByConditionSelective(storeOrderForUpdate, example);
             storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_STATUS_DELIVERY_ORDER, "订单发货");
 
-            //维护拼团订单状态
+            // 维护拼团订单状态
             StorePink storePinkForUpdate = new StorePink();
             storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
             Example exampleStorePink = new Example(StorePink.class);
@@ -626,10 +629,10 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         }
         // 实际支付金额
         orderInfoVo.setPayFee(orderInfoVo.getProTotalFee().add(orderInfoVo.getFreightFee()));
-//        orderInfoVo.setUserIntegral(user.getIntegral());
-//        orderInfoVo.setUserBalance(user.getNowMoney());
+        //        orderInfoVo.setUserIntegral(user.getIntegral());
+        //        orderInfoVo.setUserBalance(user.getNowMoney());
         // 缓存订单
-//        String key = user.getUid() + DateUtil.getNowTime().toString() + CrmebUtil.getUuid();
+        //        String key = user.getUid() + DateUtil.getNowTime().toString() + CrmebUtil.getUuid();
         String key = OrderUtils.getOrderCode();
         redisUtil.set("user_order:" + key, JSONObject.toJSONString(orderInfoVo), Constants.ORDER_CASH_CONFIRM);
         return key;
@@ -639,114 +642,114 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * 计算订单运费
      */
     private void getFreightFee(OrderInfoVO orderInfoVo, UserAddress userAddress) {
-//        // 判断是否满额包邮 type=1按件数 2按重量 3按体积
-//        // 全场满额包邮开关
-//        String postageSwitchString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE_SWITCH);
-//        // 全场满额包邮金额
-//        String storeFreePostageString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE);
+        //        // 判断是否满额包邮 type=1按件数 2按重量 3按体积
+        //        // 全场满额包邮开关
+        //        String postageSwitchString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE_SWITCH);
+        //        // 全场满额包邮金额
+        //        String storeFreePostageString = systemConfigService.getValueByKey(SysConfigConstants.STORE_FEE_POSTAGE);
         BigDecimal storePostage = BigDecimal.ZERO;
-//        if ("true".equals(postageSwitchString) && ("0".equals(storeFreePostageString) || orderInfoVo.getProTotalFee().compareTo(new BigDecimal(storeFreePostageString)) >= 0)) {
-//            storePostage = BigDecimal.ZERO;
-//        } else if (ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) {
-//            // 用户地址不存在,默认运费为0元
-//            storePostage = BigDecimal.ZERO;
-//        } else {
-//            // 有用户地址的情况下
-//            // 运费根据商品计算
-//            Map<Integer, MyRecord> proMap = CollUtil.newHashMap();
-//            orderInfoVo.getOrderDetailList().forEach(e -> {
-//                Integer proId = e.getProductId();
-//                if (proMap.containsKey(proId)) {
-//                    MyRecord record = proMap.get(proId);
-//                    record.set("totalPrice", record.getBigDecimal("totalPrice").add(e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum()))));
-//                    record.set("totalNum", record.getInt("totalNum") + e.getPayNum());
-//                    BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum()));
-//                    record.set("weight", record.getBigDecimal("weight").add(weight));
-//                    BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum()));
-//                    record.set("volume", record.getBigDecimal("volume").add(volume));
-//                } else {
-//                    MyRecord record = new MyRecord();
-//                    record.set("totalPrice", e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum())));
-//                    record.set("totalNum", e.getPayNum());
-//                    record.set("tempId", e.getTempId());
-//                    record.set("proId", proId);
-//                    BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum()));
-//                    record.set("weight", weight);
-//                    BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum()));
-//                    record.set("volume", volume);
-//
-//                    proMap.put(proId, record);
-//                }
-//            });
-//
-//            // 指定包邮(单品运费模板)> 指定区域配送(单品运费模板)
-//            int cityId = userAddress.getCityId();
-//
-//            for (Map.Entry<Integer, MyRecord> m : proMap.entrySet()) {
-//                MyRecord value = m.getValue();
-//                Integer tempId = value.getInt("tempId");
-//                ShippingTemplates shippingTemplate = shippingTemplatesService.getById(tempId);
-//                if (shippingTemplate.getAppoint()) {// 指定包邮
-//                    // 判断是否在指定包邮区域内
-//                    // 必须满足件数 + 金额 才能包邮
-//                    ShippingTemplatesFree shippingTemplatesFree = shippingTemplatesFreeService.getByTempIdAndCityId(tempId, cityId);
-//                    if (ObjectUtil.isNotNull(shippingTemplatesFree)) { // 在包邮区域内
-//                        BigDecimal freeNum = shippingTemplatesFree.getNumber();
-//                        BigDecimal multiply = value.getBigDecimal("totalPrice");
-//                        if (new BigDecimal(value.getInt("totalNum")).compareTo(freeNum) >= 0 && multiply.compareTo(shippingTemplatesFree.getPrice()) >= 0) {
-//                            // 满足件数 + 金额 = 包邮
-//                            continue;
-//                        }
-//                    }
-//                }
-//                // 不满足指定包邮条件,走指定区域配送
-//                ShippingTemplatesRegion shippingTemplatesRegion = shippingTemplatesRegionService.getByTempIdAndCityId(tempId, cityId);
-//                if (ObjectUtil.isNull(shippingTemplatesRegion)) {
-//                    throw new ServiceException("计算运费时,未找到全国运费配置");
-//                }
-//
-//                // 判断计费方式:件数、重量、体积
-//                switch (shippingTemplate.getType()) {
-//                    case 1: // 件数
-//                        // 判断件数是否超过首件
-//                        Integer num = value.getInt("totalNum");
-//                        if (num <= shippingTemplatesRegion.getFirst().intValue()) {
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
-//                        } else {// 超过首件的需要计算续件
-//                            int renewalNum = num - shippingTemplatesRegion.getFirst().intValue();
-//                            // 剩余件数/续件 = 需要计算的续件费用的次数
-//                            BigDecimal divide = new BigDecimal(renewalNum).divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
-//                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
-//                        }
-//                        break;
-//                    case 2: // 重量
-//                        BigDecimal weight = value.getBigDecimal("weight");
-//                        if (weight.compareTo(shippingTemplatesRegion.getFirst()) <= 0) {
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
-//                        } else {// 超过首件的需要计算续件
-//                            BigDecimal renewalNum = weight.subtract(shippingTemplatesRegion.getFirst());
-//                            // 剩余件数/续件 = 需要计算的续件费用的次数
-//                            BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
-//                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
-//                        }
-//                        break;
-//                    case 3: // 体积
-//                        BigDecimal volume = value.getBigDecimal("volume");
-//                        if (volume.compareTo(shippingTemplatesRegion.getFirst()) <= 0) {
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
-//                        } else {// 超过首件的需要计算续件
-//                            BigDecimal renewalNum = volume.subtract(shippingTemplatesRegion.getFirst());
-//                            // 剩余件数/续件 = 需要计算的续件费用的次数
-//                            BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
-//                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
-//                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
-//                        }
-//                        break;
-//                }
-//            }
-//        }
+        //        if ("true".equals(postageSwitchString) && ("0".equals(storeFreePostageString) || orderInfoVo.getProTotalFee().compareTo(new BigDecimal(storeFreePostageString)) >= 0)) {
+        //            storePostage = BigDecimal.ZERO;
+        //        } else if (ObjectUtil.isNull(userAddress) || userAddress.getCityId() <= 0) {
+        //            // 用户地址不存在,默认运费为0元
+        //            storePostage = BigDecimal.ZERO;
+        //        } else {
+        //            // 有用户地址的情况下
+        //            // 运费根据商品计算
+        //            Map<Integer, MyRecord> proMap = CollUtil.newHashMap();
+        //            orderInfoVo.getOrderDetailList().forEach(e -> {
+        //                Integer proId = e.getProductId();
+        //                if (proMap.containsKey(proId)) {
+        //                    MyRecord record = proMap.get(proId);
+        //                    record.set("totalPrice", record.getBigDecimal("totalPrice").add(e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum()))));
+        //                    record.set("totalNum", record.getInt("totalNum") + e.getPayNum());
+        //                    BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum()));
+        //                    record.set("weight", record.getBigDecimal("weight").add(weight));
+        //                    BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum()));
+        //                    record.set("volume", record.getBigDecimal("volume").add(volume));
+        //                } else {
+        //                    MyRecord record = new MyRecord();
+        //                    record.set("totalPrice", e.getPrice().multiply(BigDecimal.valueOf(e.getPayNum())));
+        //                    record.set("totalNum", e.getPayNum());
+        //                    record.set("tempId", e.getTempId());
+        //                    record.set("proId", proId);
+        //                    BigDecimal weight = e.getWeight().multiply(BigDecimal.valueOf(e.getPayNum()));
+        //                    record.set("weight", weight);
+        //                    BigDecimal volume = e.getVolume().multiply(BigDecimal.valueOf(e.getPayNum()));
+        //                    record.set("volume", volume);
+        //
+        //                    proMap.put(proId, record);
+        //                }
+        //            });
+        //
+        //            // 指定包邮(单品运费模板)> 指定区域配送(单品运费模板)
+        //            int cityId = userAddress.getCityId();
+        //
+        //            for (Map.Entry<Integer, MyRecord> m : proMap.entrySet()) {
+        //                MyRecord value = m.getValue();
+        //                Integer tempId = value.getInt("tempId");
+        //                ShippingTemplates shippingTemplate = shippingTemplatesService.getById(tempId);
+        //                if (shippingTemplate.getAppoint()) {// 指定包邮
+        //                    // 判断是否在指定包邮区域内
+        //                    // 必须满足件数 + 金额 才能包邮
+        //                    ShippingTemplatesFree shippingTemplatesFree = shippingTemplatesFreeService.getByTempIdAndCityId(tempId, cityId);
+        //                    if (ObjectUtil.isNotNull(shippingTemplatesFree)) { // 在包邮区域内
+        //                        BigDecimal freeNum = shippingTemplatesFree.getNumber();
+        //                        BigDecimal multiply = value.getBigDecimal("totalPrice");
+        //                        if (new BigDecimal(value.getInt("totalNum")).compareTo(freeNum) >= 0 && multiply.compareTo(shippingTemplatesFree.getPrice()) >= 0) {
+        //                            // 满足件数 + 金额 = 包邮
+        //                            continue;
+        //                        }
+        //                    }
+        //                }
+        //                // 不满足指定包邮条件,走指定区域配送
+        //                ShippingTemplatesRegion shippingTemplatesRegion = shippingTemplatesRegionService.getByTempIdAndCityId(tempId, cityId);
+        //                if (ObjectUtil.isNull(shippingTemplatesRegion)) {
+        //                    throw new ServiceException("计算运费时,未找到全国运费配置");
+        //                }
+        //
+        //                // 判断计费方式:件数、重量、体积
+        //                switch (shippingTemplate.getType()) {
+        //                    case 1: // 件数
+        //                        // 判断件数是否超过首件
+        //                        Integer num = value.getInt("totalNum");
+        //                        if (num <= shippingTemplatesRegion.getFirst().intValue()) {
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
+        //                        } else {// 超过首件的需要计算续件
+        //                            int renewalNum = num - shippingTemplatesRegion.getFirst().intValue();
+        //                            // 剩余件数/续件 = 需要计算的续件费用的次数
+        //                            BigDecimal divide = new BigDecimal(renewalNum).divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
+        //                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
+        //                        }
+        //                        break;
+        //                    case 2: // 重量
+        //                        BigDecimal weight = value.getBigDecimal("weight");
+        //                        if (weight.compareTo(shippingTemplatesRegion.getFirst()) <= 0) {
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
+        //                        } else {// 超过首件的需要计算续件
+        //                            BigDecimal renewalNum = weight.subtract(shippingTemplatesRegion.getFirst());
+        //                            // 剩余件数/续件 = 需要计算的续件费用的次数
+        //                            BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
+        //                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
+        //                        }
+        //                        break;
+        //                    case 3: // 体积
+        //                        BigDecimal volume = value.getBigDecimal("volume");
+        //                        if (volume.compareTo(shippingTemplatesRegion.getFirst()) <= 0) {
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice());
+        //                        } else {// 超过首件的需要计算续件
+        //                            BigDecimal renewalNum = volume.subtract(shippingTemplatesRegion.getFirst());
+        //                            // 剩余件数/续件 = 需要计算的续件费用的次数
+        //                            BigDecimal divide = renewalNum.divide(shippingTemplatesRegion.getRenewal(), 0, BigDecimal.ROUND_UP);
+        //                            BigDecimal renewalPrice = shippingTemplatesRegion.getRenewalPrice().multiply(divide);
+        //                            storePostage = storePostage.add(shippingTemplatesRegion.getFirstPrice()).add(renewalPrice);
+        //                        }
+        //                        break;
+        //                }
+        //            }
+        //        }
         orderInfoVo.setFreightFee(storePostage);
     }
 
@@ -754,31 +757,32 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * 校验预下单商品信息
      *
      * @param request 预下单请求参数
+     *
      * @return OrderInfoVo
      */
     private OrderInfoVO validatePreOrderRequest(PreOrderRequest request, UserDTO user) {
         OrderInfoVO orderInfoVo = new OrderInfoVO();
         List<OrderInfoDetailVO> detailVoList = CollUtil.newArrayList();
-//        if ("shoppingCart".equals(request.getPreOrderType())) {
-//            // 购物车购买
-//            detailVoList = validatePreOrderShopping(request, user);
-//            List<Long> cartIdList = request.getOrderDetails().stream().map(PreOrderDetailRequest::getShoppingCartId).distinct().collect(Collectors.toList());
-//            orderInfoVo.setCartIdList(cartIdList);
-//        }
+        //        if ("shoppingCart".equals(request.getPreOrderType())) {
+        //            // 购物车购买
+        //            detailVoList = validatePreOrderShopping(request, user);
+        //            List<Long> cartIdList = request.getOrderDetails().stream().map(PreOrderDetailRequest::getShoppingCartId).distinct().collect(Collectors.toList());
+        //            orderInfoVo.setCartIdList(cartIdList);
+        //        }
         if ("buyNow".equals(request.getPreOrderType())) {
             // 立即购买
             // 立即购买只会有一条详情
             PreOrderDetailRequest detailRequest = request.getOrderDetails().get(0);
-//            if (detailRequest.getSeckillId() > 0) {
-//                // 秒杀
-//                detailVoList.add(validatePreOrderSeckill(detailRequest, user));
-//                orderInfoVo.setSeckillId(detailRequest.getSeckillId());
-//            } else if (detailRequest.getBargainId() > 0) {
-//                // 砍价
-//                detailVoList.add(validatePreOrderBargain(detailRequest, user));
-//                orderInfoVo.setBargainId(detailRequest.getBargainId());
-//                orderInfoVo.setBargainUserId(detailRequest.getBargainUserId());
-//            } else
+            //            if (detailRequest.getSeckillId() > 0) {
+            //                // 秒杀
+            //                detailVoList.add(validatePreOrderSeckill(detailRequest, user));
+            //                orderInfoVo.setSeckillId(detailRequest.getSeckillId());
+            //            } else if (detailRequest.getBargainId() > 0) {
+            //                // 砍价
+            //                detailVoList.add(validatePreOrderBargain(detailRequest, user));
+            //                orderInfoVo.setBargainId(detailRequest.getBargainId());
+            //                orderInfoVo.setBargainUserId(detailRequest.getBargainUserId());
+            //            } else
             if (detailRequest.getCId() > 0) {
                 // 拼团
                 detailVoList.add(validatePreOrderCombination(detailRequest, user));
@@ -815,12 +819,12 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                     throw new ServiceException(I18nUtil.get("product.specification.information.does.not.exist.please.refresh.and.reselect"));
                 }
                 if (attrValue.getStock() < detailRequest.getProductNum()) {
-                    throw new ServiceException(I18nUtil.get("insufficient.product.specification.inventory.please.refresh.and.reselect"));
+                    throw new ServiceException("商品规格库存不足,请刷新后重新选择");
                 }
-//                SystemUserLevel userLevel = null;
-//                if (user.getLevel() > 0) {
-//                    userLevel = systemUserLevelService.getByLevelId(user.getLevel());
-//                }
+                //                SystemUserLevel userLevel = null;
+                //                if (user.getLevel() > 0) {
+                //                    userLevel = systemUserLevelService.getByLevelId(user.getLevel());
+                //                }
                 OrderInfoDetailVO detailVo = new OrderInfoDetailVO();
                 detailVo.setProductId(storeProduct.getId());
                 detailVo.setProductName(storeProduct.getStoreName());
@@ -854,6 +858,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * 拼团预下单校验
      *
      * @param detailRequest 请求参数
+     *
      * @return OrderInfoDetailVo
      */
     private OrderInfoDetailVO validatePreOrderCombination(PreOrderDetailRequest detailRequest, UserDTO user) {
@@ -891,6 +896,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * @param storeCombination     砍价商品
      * @param combinationAttrValue 砍价商品规格属性
      * @param productNum           购买数量
+     *
      * @return MyRecord
      */
     private MyRecord commonValidateCombination(StoreCombination storeCombination, ProductAttrValue combinationAttrValue, UserDTO user, Integer productNum) {
@@ -962,17 +968,17 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
         if (CollUtil.isNotEmpty(storeOrderList)) {
             // 判断是否有待支付订单
-//            List<StoreOrder> unPayOrders = userCombinationOrders.stream().filter(e -> e.getStatus().equals(PinkOrderStatusEnum.GROUP_ORDER_TO_PAY.getKey())).collect(Collectors.toList());
-//            if (!unPayOrders.isEmpty()) {
-//                throw new ServiceException("您有拼团待支付订单,请支付后再购买");
-//            }
+            //            List<StoreOrder> unPayOrders = userCombinationOrders.stream().filter(e -> e.getStatus().equals(PinkOrderStatusEnum.GROUP_ORDER_TO_PAY.getKey())).collect(Collectors.toList());
+            //            if (!unPayOrders.isEmpty()) {
+            //                throw new ServiceException("您有拼团待支付订单,请支付后再购买");
+            //            }
             int payNum = storeOrderList.stream().mapToInt(StoreOrder::getTotalNum).sum();
             if (configByLevel.getJoinedGroupsNo() < payNum) {
                 throw new ServiceException(I18nUtil.get("you.have.reached.the.upper.limit.of.the.group.buying.activity.for.this.product"));
             }
-//            if ((payNum + productNum) > storeCombination.getNum()) {
-//                throw new ServiceException("超过该商品拼团活动您的购买上限");
-//            }
+            //            if ((payNum + productNum) > storeCombination.getNum()) {
+            //                throw new ServiceException("超过该商品拼团活动您的购买上限");
+            //            }
         }
 
         MyRecord record = new MyRecord();
@@ -1183,6 +1189,12 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         if (dto.getId() != null) {
             criteria.andEqualTo("id", dto.getId());
         }
+        if (StrUtil.isNotBlank(dto.getDeliveryName())) {
+            criteria.andEqualTo("deliveryName", dto.getDeliveryName());
+        }
+        if (StrUtil.isNotBlank(dto.getRealName())) {
+            criteria.andEqualTo("realName", dto.getRealName());
+        }
         if (dto.getOrderId() != null) {
             criteria.andEqualTo("orderId", dto.getOrderId());
         }
@@ -1207,6 +1219,15 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         if (dto.getStartTime() != null && dto.getEndTime() != null) {
             criteria.andBetween("createTime", dto.getStartTime(), dto.getEndTime());
         }
+        if (dto.getPayStartTime() != null && dto.getPayEndTime() != null) {
+            criteria.andBetween("payTime", dto.getPayStartTime(), dto.getPayEndTime());
+        }
+        if (dto.getDeliveryStartTime() != null && dto.getDeliveryEndTime() != null) {
+            criteria.andBetween("deliveryTime", dto.getDeliveryStartTime(), dto.getDeliveryEndTime());
+        }
+        if (dto.getFinishStartTime() != null && dto.getFinishEndTime() != null) {
+            criteria.andBetween("signingTime", dto.getFinishStartTime(), dto.getFinishEndTime());
+        }
         PageHelper.startPage(dto.getPage(), dto.getSize());
         List<StoreOrder> list = findByCondition(condition);
         PageInfo storeOrderPageInfo = new PageInfo<>(list);
@@ -1314,9 +1335,9 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 list = findByCondition(condition);
                 break;
             case 2:
-//                pinkCriteria.andEqualTo("status", 2);
+                //                pinkCriteria.andEqualTo("status", 2);
                 pinkCriteria.andEqualTo("lId", 1);
-//                pinkCriteria.andIn("orderStatus", Arrays.asList(3));
+                //                pinkCriteria.andIn("orderStatus", Arrays.asList(3));
                 pinkList = storePinkService.findByCondition(pinkCondition);
                 if (CollUtil.isNotEmpty(pinkList)) {
                     criteria.andIn("id", pinkList.stream().map(StorePink::getOrderIdKey).collect(Collectors.toList()));
@@ -1471,8 +1492,10 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         preOrderResponse.setYuePayStatus(1);
         return preOrderResponse;
     }
+
     @Resource
     private CreateSequenceService createSequenceService;
+
     @Override
     public MyRecord createOrder(CreateOrderRequest request) {
         UserDTO user = userDubboServiceClient.getUser(request.getUserId());
@@ -1530,7 +1553,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         Long id = createSequence.getId();
         String orderNo = "DD" + id;
         // 生成订单号
-       // String orderNo = OrderUtils.getOrderCode();
+        // String orderNo = OrderUtils.getOrderCode();
 
         // 购买赠送的积分
         List<StoreOrderInfo> storeOrderInfos = new ArrayList<>();
@@ -1662,14 +1685,14 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         }
 
 
-//        // 生成订单日志
+        //        // 生成订单日志
         storeOrderStatusService.createLog(storeOrder.getId(), Constants.ORDER_STATUS_CREATE_ORDER, "订单生成");
-//
-//        // 清除购物车数据
-//        if (CollUtil.isNotEmpty(orderInfoVo.getCartIdList())) {
-//            storeCartService.deleteCartByIds(orderInfoVo.getCartIdList());
-//        }
-//        return Boolean.TRUE;
+        //
+        //        // 清除购物车数据
+        //        if (CollUtil.isNotEmpty(orderInfoVo.getCartIdList())) {
+        //            storeCartService.deleteCartByIds(orderInfoVo.getCartIdList());
+        //        }
+        //        return Boolean.TRUE;
 
 
         // 删除缓存订单
@@ -1762,27 +1785,27 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
     @Resource
     private NoticeService noticeService;
 
-    //这是由pc端发起端针对个人的主动退款 不是定时任务扫描活动超时导致的退款,所以这个退款是不影响其他拼团成员的。拼团汇总表也不会上锁,拼团状态仍然是进行中
+    // 这是由pc端发起端针对个人的主动退款 不是定时任务扫描活动超时导致的退款,所以这个退款是不影响其他拼团成员的。拼团汇总表也不会上锁,拼团状态仍然是进行中
     @Override
     public void refund(Long id) {
         StoreOrder storeOrder = findById(id);
-////        if (storeOrder.getPaid().equals(Constants.ORDER_STATUS_H5_UNPAID)) {
-////            throw new ServiceException("当前状态不支持退款");
-////        }
-//
-//        PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_APPLY_REFUND, null);
-//
-//        if (ObjectUtils.isEmpty(pinkOrderStatusEnum)) {
-//            throw new ServiceException("当前状态不支持退款");
-//        }
-//        updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.GROUP_ORDER_REFUND.getKey());
-//
-//        // 归还用户余额
+        ////        if (storeOrder.getPaid().equals(Constants.ORDER_STATUS_H5_UNPAID)) {
+        ////            throw new ServiceException("当前状态不支持退款");
+        ////        }
+        //
+        //        PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_APPLY_REFUND, null);
+        //
+        //        if (ObjectUtils.isEmpty(pinkOrderStatusEnum)) {
+        //            throw new ServiceException("当前状态不支持退款");
+        //        }
+        //        updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.GROUP_ORDER_REFUND.getKey());
+        //
+        //        // 归还用户余额
         //  accountDubboServiceClient.refund(id.toString(), storeOrder.getOrderId(), storeOrder.getPayPrice());
-//        // 库存增加
-//        storeCombinationService.operationStock(storeOrder.getCombinationId(), storeOrder.getTotalNum(), "add");
-//
-//
+        //        // 库存增加
+        //        storeCombinationService.operationStock(storeOrder.getCombinationId(), storeOrder.getTotalNum(), "add");
+        //
+        //
         if (ObjectUtils.isEmpty(storeOrder)) {
             throw new ServiceException(I18nUtil.get("order.does.not.exist.when.initiating.active.refund.id") + id);
         }
@@ -1794,7 +1817,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
         StorePink storePink = storePinkService.findById(storeOrder.getPinkId());
         Integer status = 0;
-        //团长在未成团时不能退款
+        // 团长在未成团时不能退款
         if (storePink.getKId().equals(status) && storePink.getStatus().equals(StorePinkStatusEnum.NOT_DRAWN.getKey())) {
             throw new ServiceException(I18nUtil.get("current.member.is.the.group.leader.and.the.group.has.not.drawn.a.prize.refund.is.temporarily.not.supported") + id);
         }
@@ -1805,7 +1828,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         }
 
         Date date = new Date();
-        //主动退款
+        // 主动退款
         CancelParam param = new CancelParam();
         param.setBizNo(storeOrder.getOrderId());
         param.setBizId(storeOrder.getId().toString());
@@ -1819,17 +1842,17 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             throw new ServiceException(I18nUtil.get("refund.failed.please.initiate.again"));
         }
         updateOrderStatus(storeOrder.getId(), pinkOrderStatusEnum.getKey());
-        //订单状态回退
-        //拼团状态回退
+        // 订单状态回退
+        // 拼团状态回退
 
         StorePink storePinkForUpdate = new StorePink();
         storePinkForUpdate.setId(storeOrder.getPinkId());
         // storePinkForUpdate.setStatus(StorePinkStatusEnum.LOTTERY_FAILED.getKey());   //定时任务触发的拼团失败导致的订单退款需要设置这个状态为拼团失败状态
         storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
         storePinkService.update(storePinkForUpdate);
-        //拼团汇总数量维护以及锁单标识维护
+        // 拼团汇总数量维护以及锁单标识维护
         Boolean b = storePinkSummaryService.maintainQuantityStatusOfTheStorePinkSummary(storePink.getSpsId());
-        //拼团商品数量以及m_store_combination
+        // 拼团商品数量以及m_store_combination
         storeCombinationService.operationStock(storePink.getCid(), storePink.getTotalNum(), "add");
         // 拼团商品规格扣库存
         //   productAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_PINGTUAN);
@@ -1847,9 +1870,9 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
 
         // PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_FAIL, null);
-//        if (ObjectUtils.isEmpty(pinkOrderStatusEnum)) {
-//            throw new ServiceException("当前状态不支持关闭");
-//        }
+        //        if (ObjectUtils.isEmpty(pinkOrderStatusEnum)) {
+        //            throw new ServiceException("当前状态不支持关闭");
+        //        }
 
         try {
 
@@ -1859,17 +1882,17 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             }
 
             if (PinkOrderStatusEnum.GROUP_ORDER_TO_PAY.getKey().equals(storeOrder.getStatus())) {
-                //如果是待支付状态   状态推到取消状态
+                // 如果是待支付状态   状态推到取消状态
                 // cancel(id);
                 PinkOrderStatusEnum pinkOrderStatusEnum = OrderStateMachine.handleEvent(storeOrder, OrderEventsEnum.GROUP_PURCHASE_CANCEL, null);
 
                 if (ObjectUtils.isEmpty(pinkOrderStatusEnum)) {
                     throw new ServiceException(I18nUtil.get("current.status.does.not.support.cancellation"));
                 }
-                //订单状态回退
+                // 订单状态回退
                 updateOrderStatus(storeOrder.getId(), pinkOrderStatusEnum.getKey());
 
-                //拼团状态回退
+                // 拼团状态回退
                 StorePink storePink = storePinkService.findById(storeOrder.getPinkId());
                 if (ObjectUtils.isEmpty(storePink)) {
                     throw new ServiceException(I18nUtil.get("group.buying.information.does.not.exist.when.canceling.the.order.id") + storeOrder.getPinkId());
@@ -1879,9 +1902,9 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 storePinkForUpdate.setStatus(StorePinkStatusEnum.LOTTERY_FAILED.getKey());
                 storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
                 storePinkService.update(storePinkForUpdate);
-                //拼团汇总数量维护以及锁单标识维护
+                // 拼团汇总数量维护以及锁单标识维护
                 Boolean b = storePinkSummaryService.maintainQuantityStatusOfTheStorePinkSummary(storePink.getSpsId());
-                //拼团商品数量以及m_store_combination
+                // 拼团商品数量以及m_store_combination
                 storeCombinationService.operationStock(storePink.getCid(), storePink.getTotalNum(), "add");
                 // 拼团商品规格扣库存
                 //   productAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_PINGTUAN);
@@ -1896,8 +1919,8 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                     throw new ServiceException(I18nUtil.get("current.status.does.not.support.refund.cancellation"));
                 }
 
-                //订单状态回退
-                //拼团状态回退
+                // 订单状态回退
+                // 拼团状态回退
                 StorePink storePink = storePinkService.findById(storeOrder.getPinkId());
 
                 if (ObjectUtils.isEmpty(storePink)) {
@@ -1905,7 +1928,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 }
 
                 Date date = new Date();
-                //主动退款
+                // 主动退款
                 CancelParam param = new CancelParam();
                 param.setBizNo(storeOrder.getOrderId());
                 param.setBizId(storeOrder.getId().toString());
@@ -1923,12 +1946,12 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
                 StorePink storePinkForUpdate = new StorePink();
                 storePinkForUpdate.setId(storeOrder.getPinkId());
-                storePinkForUpdate.setStatus(StorePinkStatusEnum.LOTTERY_FAILED.getKey());   //定时任务触发的拼团失败导致的订单退款需要设置这个状态为拼团失败状态
+                storePinkForUpdate.setStatus(StorePinkStatusEnum.LOTTERY_FAILED.getKey());   // 定时任务触发的拼团失败导致的订单退款需要设置这个状态为拼团失败状态
                 storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
                 storePinkService.update(storePinkForUpdate);
-                //拼团汇总数量维护以及锁单标识维护
+                // 拼团汇总数量维护以及锁单标识维护
                 Boolean b = storePinkSummaryService.maintainQuantityStatusOfTheStorePinkSummary(storePink.getSpsId());
-                //拼团商品数量以及m_store_combination
+                // 拼团商品数量以及m_store_combination
                 storeCombinationService.operationStock(storePink.getCid(), storePink.getTotalNum(), "add");
                 // 拼团商品规格扣库存
                 //   productAttrValueService.operationStock(skuRecord.getInt("activityAttrValueId"), skuRecord.getInt("num"), "sub", Constants.PRODUCT_TYPE_PINGTUAN);
@@ -1943,14 +1966,14 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             log.error(I18nUtil.get("scheduled.task.failed.to.close.the.order.order.id") + id, e);
         }
 
-        //如果是已支付状态状态推到拼团失败退款状态
+        // 如果是已支付状态状态推到拼团失败退款状态
 
 
-//        if (storeOrder.getStatus().equals(Constants.ORDER_STATUS_H5_COMPLETE)) {
-//            updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.CLOSE.getKey());
-//        } else {
-//            throw new ServiceException("当前状态不支持关闭");
-//        }
+        //        if (storeOrder.getStatus().equals(Constants.ORDER_STATUS_H5_COMPLETE)) {
+        //            updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.CLOSE.getKey());
+        //        } else {
+        //            throw new ServiceException("当前状态不支持关闭");
+        //        }
     }
 
     @Resource
@@ -1968,7 +1991,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
 
         pinkSummaryCriteria.andLessThanOrEqualTo("stopTime", date);
         List<StorePinkSummary> byCondition = storePinkSummaryService.findByCondition(pinkSummaryCondition);
-        //先锁定汇总表防止有新的成员加入进来,
+        // 先锁定汇总表防止有新的成员加入进来,
 
 
         if (!CollectionUtils.isEmpty(byCondition)) {
@@ -1979,7 +2002,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             criteria.andIn("spsId", storePinkSummaryidList);
 
             criteria.andEqualTo("isDelete", 0);
-            //找出拼团待支付 和 拼团已支付的数据进行 关闭
+            // 找出拼团待支付 和 拼团已支付的数据进行 关闭
             List<Integer> statusList = CollUtil.newArrayList(
                     PinkOrderStatusEnum.GROUP_ORDER_TO_PAY.getKey()
                     , PinkOrderStatusEnum.GROUP_ORDER_PAID.getKey()
@@ -2009,11 +2032,11 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             throw new ServiceException(I18nUtil.get("current.status.does.not.support.cancellation"));
         }
 
-        //订单状态回退
+        // 订单状态回退
         updateOrderStatus(storeOrder.getId(), pinkOrderStatusEnum.getKey());
 
 
-        //拼团状态回退
+        // 拼团状态回退
         StorePink storePink = storePinkService.findById(storeOrder.getPinkId());
         if (ObjectUtils.isEmpty(storePink)) {
             throw new ServiceException(I18nUtil.get("group.buying.information.does.not.exist.when.canceling.the.order.id") + storeOrder.getPinkId());
@@ -2023,11 +2046,11 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
         storePinkService.update(storePinkForUpdate);
 
-        //拼团汇总数量维护以及锁单标识维护
+        // 拼团汇总数量维护以及锁单标识维护
 
         Boolean b = storePinkSummaryService.maintainQuantityStatusOfTheStorePinkSummary(storePink.getSpsId());
 
-        //拼团商品数量以及m_store_combination
+        // 拼团商品数量以及m_store_combination
 
         storeCombinationService.operationStock(storePink.getCid(), storePink.getTotalNum(), "add");
         // 拼团商品规格扣库存
@@ -2036,13 +2059,13 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         storeProductService.operationStock(storePink.getPid(), storePink.getTotalNum(), "add");
 
         noticeService.addOrderNotice(NoticeEnum.ORDER_GROUP_BUY_FAIL, storeOrder.getOrderId(), storeOrder.getUid());
-        //库存数量回退
+        // 库存数量回退
 
-//        if (storeOrder.getPaid().equals(0)) {
-//            updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.CANCEL.getKey());
-//        } else {
-//            throw new ServiceException("当前状态不支持取消");
-//        }
+        //        if (storeOrder.getPaid().equals(0)) {
+        //            updateOrderStatus(storeOrder.getId(), PinkOrderStatusEnum.CANCEL.getKey());
+        //        } else {
+        //            throw new ServiceException("当前状态不支持取消");
+        //        }
     }
 
     // @Override
@@ -2116,10 +2139,17 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                     continue;
                 }
 
+                if (StrUtil.isBlank(po.getUserAddress()) || StrUtil.isBlank(po.getPhone()) || StrUtil.isBlank(po.getRealName())) {
+                    po.setErrorMsg("地址未填写");
+                    errors.add(po);
+                    continue;
+                }
+
                 storeOrder.setId(po.getId());
                 storeOrder.setDeliveryId(po.getDeliveryId());
                 storeOrder.setDeliveryName(po.getDeliveryName());
                 storeOrder.setStatus(pinkOrderStatusEnum.getKey());
+                storeOrder.setDeliveryTime(new Date());
 
                 update(storeOrder);
 
@@ -2202,11 +2232,11 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         }
         update(storeOrder);
 
-//        StorePink storePink = new StorePink();
-//        Example example = new Example(StorePink.class);
-//        example.createCriteria().andEqualTo("orderIdKey",id);
-//        storePink.setOrderStatus(status);
-//        int i = storePinkMapper.updateByConditionSelective(storePink, example);
+        //        StorePink storePink = new StorePink();
+        //        Example example = new Example(StorePink.class);
+        //        example.createCriteria().andEqualTo("orderIdKey",id);
+        //        storePink.setOrderStatus(status);
+        //        int i = storePinkMapper.updateByConditionSelective(storePink, example);
 
         //  storeOrderStatusService.createLog(id, "", PinkOrderStatusEnum.getEnum(status).getValue());
 
@@ -2217,6 +2247,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * 校验商品库存(生成订单)
      *
      * @param orderInfoVo 订单详情Vo
+     *
      * @return List<MyRecord>
      * skuRecord 扣减库存对象
      * ——activityId             活动商品id
@@ -2389,36 +2420,38 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * -拼团成功:拼团成功&中奖订单,Paid状态订单;中奖状态:中奖;
      * -拼团失败:拼团成功&未中奖订单,Paid状态订单;
      * -拼团奖励:拼团成功&中奖订单&选择收货订单,包含To Ship、To Recevie2个订单状态;
-     *
+     * <p>
      * 只给1、2、4项订单状态进行中订单数量红点
+     *
      * @return
      */
     @Override
-    public Map<Integer, Integer> pendingRedDots() {
-       Map<Integer,Integer> resultMap = new HashMap<>();
+    public PendingRedDotsVO pendingRedDots() {
+        // Map<Integer, Integer> resultMap = new HashMap<>();
         Long tokenUserId = AuthService.getTokenUserId(null);
+
         if(ObjectUtils.isEmpty(tokenUserId)){
             throw new ServiceException("user not exist tokenUserId:"+tokenUserId);
         }
-        //待支付数量
+        // 待支付数量
         Condition conditionStoreStorePinkToPay = new Condition(StorePink.class);
         Example.Criteria criteriaStorePinkToPay = conditionStoreStorePinkToPay.createCriteria();
         criteriaStorePinkToPay.andEqualTo("orderStatus", PinkOrderStatusEnum.GROUP_ORDER_TO_PAY.getKey());
         criteriaStorePinkToPay.andEqualTo("isDelete", 0);
         criteriaStorePinkToPay.andEqualTo("uid", tokenUserId);
-        int i = storePinkMapper.selectCountByCondition(conditionStoreStorePinkToPay);
-        resultMap.put(1,i);
+        int toPayNum = storePinkMapper.selectCountByCondition(conditionStoreStorePinkToPay);
+        // resultMap.put(1, i);
 
-        //中奖未填写收获地址数量
+        // 中奖未填写收获地址数量
         Condition conditionStoreStorePinkPaid = new Condition(StorePink.class);
         Example.Criteria criteriaStorePinkPaid = conditionStoreStorePinkPaid.createCriteria();
         criteriaStorePinkPaid.andEqualTo("orderStatus", PinkOrderStatusEnum.GROUP_ORDER_PAID.getKey());
         criteriaStorePinkPaid.andEqualTo("isDelete", 0);
         criteriaStorePinkPaid.andEqualTo("uid", tokenUserId);
-        int ii = storePinkMapper.selectCountByCondition(conditionStoreStorePinkPaid);
-        resultMap.put(2,ii);
+        int successNum = storePinkMapper.selectCountByCondition(conditionStoreStorePinkPaid);
+        // resultMap.put(2, ii);
 
-        //中奖未填写收获地址数量
+        // 中奖未填写收获地址数量
         Condition conditionStoreStorePinkToShip = new Condition(StorePink.class);
         Example.Criteria criteriaStorePinkToShip = conditionStoreStorePinkToShip.createCriteria();
 
@@ -2426,13 +2459,15 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         criteriaStorePinkToShip.andIn("orderStatus", integers);
         criteriaStorePinkToShip.andEqualTo("isDelete", 0);
         criteriaStorePinkToShip.andEqualTo("uid", tokenUserId);
-        int iii = storePinkMapper.selectCountByCondition(conditionStoreStorePinkToShip);
-        resultMap.put(4,iii);
-
-
+        int rewardNum = storePinkMapper.selectCountByCondition(conditionStoreStorePinkToShip);
+        // resultMap.put(4, iii);
 
 
-        return resultMap;
+        return PendingRedDotsVO.builder()
+                .toPayNum(toPayNum)
+                .successNum(successNum)
+                .rewardNum(rewardNum)
+                .build();
     }
 
     @Override

+ 138 - 120
mall-service/src/main/java/dto/StoreOrderDTO.java

@@ -10,352 +10,370 @@ import com.txz.mall.web.param.BasePageParam;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
 public class StoreOrderDTO extends BasePageParam {
-
+    
     private Long id;
-
+    
     /**
      * 订单号
      */
     @ApiModelProperty(value = "订单号")
     private String orderId;
-
+    
     /**
      * 用户id
      */
     @ApiModelProperty(value = "用户id")
     private Long uid;
-
+    
     /**
      * 用户姓名
      */
     @ApiModelProperty(value = "用户姓名")
     private String realName;
-
+    
     /**
      * 用户电话
      */
     @ApiModelProperty(value = "用户电话")
     private String userPhone;
-
+    
     /**
      * 详细地址
      */
     @ApiModelProperty(value = "详细地址")
     private String userAddress;
-
+    
     /**
      * 运费金额
      */
     @ApiModelProperty(value = "运费金额")
     private BigDecimal freightPrice;
-
+    
     /**
      * 订单商品总数
      */
     @ApiModelProperty(value = "订单商品总数")
     private Integer totalNum;
-
+    
     /**
      * 订单总价
      */
     @ApiModelProperty(value = "订单总价")
     private BigDecimal totalPrice;
-
+    
     /**
      * 邮费
      */
     @ApiModelProperty(value = "邮费")
     private BigDecimal totalPostage;
-
+    
     /**
      * 实际支付金额
      */
     @ApiModelProperty(value = "实际支付金额")
     private BigDecimal payPrice;
-
+    
     /**
      * 支付邮费
      */
     @ApiModelProperty(value = "支付邮费")
     private BigDecimal payPostage;
-
+    
     /**
      * 抵扣金额
      */
     @ApiModelProperty(value = "抵扣金额")
     private BigDecimal deductionPrice;
-
+    
     /**
      * 优惠券id
      */
     @ApiModelProperty(value = "优惠券id")
     private Long couponId;
-
+    
     /**
      * 优惠券金额
      */
     @ApiModelProperty(value = "优惠券金额")
     private BigDecimal couponPrice;
-
+    
     /**
      * 支付状态
      */
     @ApiModelProperty(value = "支付状态 0-待付款  1-已付款")
     private Integer paid;
-
+    
     /**
      * 支付时间
      */
     @ApiModelProperty(value = "支付时间")
     private Date payTime;
-
+    
     /**
      * 支付方式
      */
     @ApiModelProperty(value = "支付方式")
     private String payType;
-
+    
     /**
      * 创建时间
      */
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
-
+    
     /**
      * 订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)
      */
     @ApiModelProperty(value = "订单状态(0:待发货;1:待收货;3:已完成; 4:已关闭  5:已取消)")
     private Integer status;
-
+    
     /**
      * 0 未退款 1 申请中 2 已退款 3 退款中
      */
     @ApiModelProperty(value = "0 未退款 1 申请中 2 已退款 3 退款中")
     private Integer refundStatus;
-
+    
     /**
      * 退款图片
      */
     @ApiModelProperty(value = "退款图片")
     private String refundReasonWapImg;
-
+    
     /**
      * 退款用户说明
      */
     @ApiModelProperty(value = "退款用户说明")
     private String refundReasonWapExplain;
-
+    
     /**
      * 前台退款原因
      */
     @ApiModelProperty(value = "前台退款原因")
     private String refundReasonWap;
-
+    
     /**
      * 不退款的理由
      */
     @ApiModelProperty(value = "不退款的理由")
     private String refundReason;
-
+    
     /**
      * 退款时间
      */
     @ApiModelProperty(value = "退款时间")
     private Date refundReasonTime;
-
+    
     /**
      * 退款金额
      */
     @ApiModelProperty(value = "退款金额")
     private BigDecimal refundPrice;
-
+    
     /**
      * 快递名称/送货人姓名
      */
     @ApiModelProperty(value = "快递名称/送货人姓名")
     private String deliveryName;
-
+    
     /**
      * 发货类型
      */
     @ApiModelProperty(value = "发货类型")
     private String deliveryType;
-
+    
     /**
      * 快递单号/手机号
      */
     @ApiModelProperty(value = "快递单号/手机号")
     private String deliveryId;
-
-//    /**
-//     * 消费赚取积分
-//     */
-//    @ApiModelProperty(value = "消费赚取积分")
-//    @Column(name = "gain_integral")
-//    private Integer gainIntegral;
-//
-//    /**
-//     * 使用积分
-//     */
-//    @ApiModelProperty(value = "使用积分")
-//    @Column(name = "use_integral")
-//    private Integer useIntegral;
-//
-//    /**
-//     * 给用户退了多少积分
-//     */
-//    @ApiModelProperty(value = "给用户退了多少积分")
-//    @Column(name = "back_integral")
-//    private Integer backIntegral;
-
+    
+    //    /**
+    //     * 消费赚取积分
+    //     */
+    //    @ApiModelProperty(value = "消费赚取积分")
+    //    @Column(name = "gain_integral")
+    //    private Integer gainIntegral;
+    //
+    //    /**
+    //     * 使用积分
+    //     */
+    //    @ApiModelProperty(value = "使用积分")
+    //    @Column(name = "use_integral")
+    //    private Integer useIntegral;
+    //
+    //    /**
+    //     * 给用户退了多少积分
+    //     */
+    //    @ApiModelProperty(value = "给用户退了多少积分")
+    //    @Column(name = "back_integral")
+    //    private Integer backIntegral;
+    
     /**
      * 备注
      */
     @ApiModelProperty(value = "备注")
     private String mark;
-
+    
     /**
      * 管理员备注
      */
     @ApiModelProperty(value = "管理员备注")
     private String remark;
-
-//    /**
-//     * 商户ID
-//     */
-//    @ApiModelProperty(value = "商户ID")
-//    @Column(name = "mer_id")
-//    private Long merId;
-//
-//    /**
-//     * 是否是商户商品
-//     */
-//    @ApiModelProperty(value = "是否是商户商品")
-//    @Column(name = "is_mer_check")
-//    private Integer isMerCheck;
-
+    
+    //    /**
+    //     * 商户ID
+    //     */
+    //    @ApiModelProperty(value = "商户ID")
+    //    @Column(name = "mer_id")
+    //    private Long merId;
+    //
+    //    /**
+    //     * 是否是商户商品
+    //     */
+    //    @ApiModelProperty(value = "是否是商户商品")
+    //    @Column(name = "is_mer_check")
+    //    private Integer isMerCheck;
+    
     /**
      * 拼团商品id0一般商品
      */
     @ApiModelProperty(value = "拼团商品id 0一般商品")
     private Integer combinationId;
-
+    
     /**
      * 拼团id 0没有拼团
      */
     @ApiModelProperty(value = "拼团id 0没有拼团")
     private Long pinkId;
-
+    
     /**
      * 成本价
      */
     @ApiModelProperty(value = "成本价")
     private BigDecimal cost;
-
-//    /**
-//     * 秒杀商品ID
-//     */
-//    @ApiModelProperty(value = "秒杀商品ID")
-//    @Column(name = "seckill_id")
-//    private Long seckillId;
-//
-//    /**
-//     * 砍价id
-//     */
-//    @ApiModelProperty(value = "砍价id")
-//    @Column(name = "bargain_id")
-//    private Long bargainId;
-//
-//    /**
-//     * 核销码
-//     */
-//    @ApiModelProperty(value = "核销码")
-//    @Column(name = "verify_code")
-//    private String verifyCode;
-//
-//    /**
-//     * 门店id
-//     */
-//    @ApiModelProperty(value = "门店id")
-//    @Column(name = "store_id")
-//    private Long storeId;
-
+    
+    //    /**
+    //     * 秒杀商品ID
+    //     */
+    //    @ApiModelProperty(value = "秒杀商品ID")
+    //    @Column(name = "seckill_id")
+    //    private Long seckillId;
+    //
+    //    /**
+    //     * 砍价id
+    //     */
+    //    @ApiModelProperty(value = "砍价id")
+    //    @Column(name = "bargain_id")
+    //    private Long bargainId;
+    //
+    //    /**
+    //     * 核销码
+    //     */
+    //    @ApiModelProperty(value = "核销码")
+    //    @Column(name = "verify_code")
+    //    private String verifyCode;
+    //
+    //    /**
+    //     * 门店id
+    //     */
+    //    @ApiModelProperty(value = "门店id")
+    //    @Column(name = "store_id")
+    //    private Long storeId;
+    
     /**
      * 配送方式 1=快递 ,2=门店自提
      */
     @ApiModelProperty(value = "配送方式 1=快递 ,2=门店自提")
     private Integer shippingType;
-//
-//    /**
-//     * 店员id/核销员id
-//     */
-//    @ApiModelProperty(value = "店员id/核销员id")
-//    @Column(name = "clerk_id")
-//    private Integer clerkId;
-
+    //
+    //    /**
+    //     * 店员id/核销员id
+    //     */
+    //    @ApiModelProperty(value = "店员id/核销员id")
+    //    @Column(name = "clerk_id")
+    //    private Integer clerkId;
+    
     /**
      * 支付渠道(0微信公众号1微信小程序2余额)
      */
     @ApiModelProperty(value = "支付渠道(0微信公众号1微信小程序2余额)")
     private Integer isChannel;
-
+    
     /**
      * 消息提醒
      */
     @ApiModelProperty(value = "消息提醒")
     private Integer isRemind;
-
+    
     /**
      * 快递公司简称
      */
     @ApiModelProperty(value = "快递公司简称")
     private String deliveryCode;
-
+    
     /**
      * 用户拼团活动id 0没有
      */
     @ApiModelProperty(value = "用户拼团活动id 0没有")
     private Integer bargainUserId;
-
+    
     /**
      * 订单类型:0-普通订单,1-视频号订单
      */
     @ApiModelProperty(value = "订单类型:0-普通订单,1-视频号订单")
     private Integer type;
-
+    
     /**
      * 商品总价
      */
     @ApiModelProperty(value = "商品总价")
     private BigDecimal proTotalPrice;
-
+    
     /**
      * 改价前支付金额
      */
     @ApiModelProperty(value = "改价前支付金额")
     private BigDecimal beforePayPrice;
-
+    
     /**
      * 是否改价,0-否,1-是
      */
     @ApiModelProperty(value = "是否改价,0-否,1-是")
     private Integer isAlterPrice;
-
+    
     /**
      * 商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
      */
     @ApiModelProperty(value = "商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号")
     private String outTradeNo;
-
-    @ApiModelProperty(value = "开始时间")
+    
+    @ApiModelProperty(value = "下单开始时间")
     private Date startTime;
-
-    @ApiModelProperty(value = "结束时间")
+    
+    @ApiModelProperty(value = "下单结束时间")
     private Date endTime;
+    
+    @ApiModelProperty(value = "支付开始时间")
+    private Date payStartTime;
+    
+    @ApiModelProperty(value = "支付结束时间")
+    private Date payEndTime;
+    
+    @ApiModelProperty(value = "发货开始时间")
+    private Date deliveryStartTime;
+    
+    @ApiModelProperty(value = "发货结束时间")
+    private Date deliveryEndTime;
+    
+    @ApiModelProperty(value = "完成开始时间")
+    private Date finishStartTime;
+    
+    @ApiModelProperty(value = "完成结束时间")
+    private Date finishEndTime;
+    
 }

+ 20 - 0
mall-service/src/main/java/vo/PendingRedDotsVO.java

@@ -0,0 +1,20 @@
+package vo;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @author: MTD®️
+ * @date: 2025/9/11
+ */
+@Data
+@Builder
+public class PendingRedDotsVO {
+    
+    private Integer toPayNum;
+    
+    private Integer successNum;
+    
+    private Integer rewardNum;
+    
+}