Sfoglia il codice sorgente

Merge branch 'dev_recycle' into test

Mr.qian 1 mese fa
parent
commit
47c425857f

+ 5 - 0
mall-api/src/main/java/com/txz/mall/enums/NoticeEnum.java

@@ -42,6 +42,11 @@ public enum NoticeEnum {
      */
     ORDER_SHIPPED_SUCCESS("ORDER_SHIPPED_SUCCESS", "订单通知_订单发货", "notifications.order.shipped.title", "notifications.order.shipped.content"),
     
+    /**
+     * 回收
+     */
+    ORDER_RECYCLE_REWARD("ORDER_RECYCLE_REWARD", "订单通知_回收", "notifications.order.recycle.title", "notifications.order.recycle.content"),
+    
     /**
      * 收益通知_邀请好友奖励
      */

+ 181 - 158
mall-service/src/main/java/com/txz/mall/business/impl/OrderServiceBusinessImpl.java

@@ -13,7 +13,6 @@ import com.txz.mall.dao.StoreOrderMapper;
 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;
 import com.txz.mall.model.*;
 import com.txz.mall.service.*;
 import com.txz.mall.util.I18nUtil;
@@ -26,12 +25,11 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 import tk.mybatis.mapper.entity.Condition;
 import tk.mybatis.mapper.entity.Example;
-import tk.mybatis.mapper.entity.SqlsCriteria;
 import vo.StoreCombinationRankVO;
 import vo.StoreOrderVO;
 
 import javax.annotation.Resource;
-import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -44,7 +42,7 @@ import java.util.stream.Collectors;
 @AllArgsConstructor
 @Slf4j
 public class OrderServiceBusinessImpl implements OrderServiceBusiness {
-
+    
     private final StoreOrderService storeOrderService;
     private final StoreOrderInfoService storeOrderInfoService;
     private final UserAddressService userAddressService;
@@ -56,34 +54,35 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
     private final CifRedEnvelopeDubboServiceClient cifRedEnvelopeDubboServiceClient;
     private final StoreOrderMapper storeOrderMapper;
     private final StoreProductService storeProductService;
+    
     @Override
     public StoreOrderVO orderDetail(Long id, String orderNo) {
         StoreOrderVO vo = new StoreOrderVO();
-
-//        if (!ObjectUtils.isEmpty(id)) {
-//            storeOrder = storeOrderService.findById(id);
-//        } else if (!ObjectUtils.isEmpty(orderNo)) {
+        
+        //        if (!ObjectUtils.isEmpty(id)) {
+        //            storeOrder = storeOrderService.findById(id);
+        //        } else if (!ObjectUtils.isEmpty(orderNo)) {
         StoreOrder storeOrder = storeOrderService.findBy("orderId", orderNo);
-       // }
-
+        // }
+        
         if (ObjectUtils.isEmpty(storeOrder)) {
             throw new ServiceException(I18nUtil.get("order.does.not.exist.id") + orderNo);
         }
-       // id = storeOrder.getId();
+        // id = storeOrder.getId();
         Condition infoCondition = new Condition(StoreOrderInfo.class);
         Example.Criteria infoCriteria = infoCondition.createCriteria();
         infoCriteria.andEqualTo("isDelete", 0);
-       // infoCriteria.andEqualTo("orderId", storeOrder.getId());
-
+        // infoCriteria.andEqualTo("orderId", storeOrder.getId());
+        
         infoCriteria.andEqualTo("orderNo", orderNo);
         List<StoreOrderInfo> infoList = storeOrderInfoService.findByCondition(infoCondition);
         List<StoreOrderStatus> logList = storeOrderStatusService.getLogList(orderNo);
-
+        
         Condition storePinkCondition = new Condition(StorePink.class);
         Example.Criteria storePinkCriteria = storePinkCondition.createCriteria();
         storePinkCriteria.andEqualTo("isDelete", 0);
         storePinkCriteria.andEqualTo("orderId", orderNo);
-
+        
         List<StorePink> byCondition = storePinkService.findByCondition(storePinkCondition);
         if (!org.springframework.util.CollectionUtils.isEmpty(byCondition)) {
             StorePink storePink = byCondition.get(0);
@@ -91,38 +90,62 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
         }
         //        UserDTO user = userDubboServiceClient.getUser(storeOrder.getUid());
         UserAddress userAddress = null;
-        if(!ObjectUtils.isEmpty(storeOrder.getAddressId())){
+        if (!ObjectUtils.isEmpty(storeOrder.getAddressId())) {
             userAddress = userAddressService.findById(storeOrder.getAddressId());
         }
-
+        
         List<OrderParam> orderCodeList = new ArrayList<>();
         OrderParam orderParam = new OrderParam();
         orderParam.setOrderNo(storeOrder.getOrderId());
         orderParam.setUserId(storeOrder.getUid());
         orderCodeList.add(orderParam);
-
-        Map<String, EarningsDTO> collect = new HashMap<>();
+        
+        // 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));
-
+        List<EarningsDTO> earningsByOrders = cifRedEnvelopeDubboServiceClient.getEarningsInfoByOrders(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 (CollectionUtils.isNotEmpty(earningsByOrders)) {
+            // 收益
+            EarningsDTO brokerage = earningsByOrders.stream()
+                    .filter(a -> a.getOrderNo().equals(storeOrder.getOrderId())
+                            && a.getBizType().equals(5002)
+                    )
+                    .findFirst()
+                    .orElse(null);
+            if (!ObjectUtils.isEmpty(brokerage)) {
+                vo.setBrokerage(brokerage.getEarnings());
+            }else{
+                vo.setBrokerage(BigDecimal.ZERO);
+            }
+            // 回收
+            EarningsDTO recycle = earningsByOrders.stream()
+                    .filter(a -> a.getOrderNo().equals(storeOrder.getOrderId())
+                            && a.getBizType().equals(5007)
+                    )
+                    .findFirst()
+                    .orElse(null);
+            if (!ObjectUtils.isEmpty(recycle)) {
+                vo.setRecycleAmount(recycle.getEarnings());
+            } else {
+                vo.setRecycleAmount(BigDecimal.ZERO);
+            }
         }
-
+        
         BeanUtils.copyProperties(storeOrder, vo);
-        EarningsDTO earningsDTO = collect.get(storeOrder.getOrderId());
-        if (!ObjectUtils.isEmpty(earningsDTO)) {
-            vo.setBrokerage(earningsDTO.getEarnings());
-        }
-
+        
+        
         vo.setOrderInfoVO(infoList);
         vo.setOrderAddressVO(userAddress);
         vo.setOrderStatusVO(logList);
-
+        
         //        vo.setUserVO(user);
         return vo;
     }
-
+    
     //
     //    @Override
     //    public List<StoreCombinationRankVO> getRank() {
@@ -175,175 +198,175 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
     //    }
     @Resource
     private StorePinkMapper storePinkMapper;
-
+    
     @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;
+        //        }
+        
         Set<Long> isvalidProductIdList = new HashSet<>();
-        //提取有效的参与活动的商品id
+        // 提取有效的参与活动的商品id
         Condition storeCombinationCondition = new Condition(StoreCombination.class);
         Example.Criteria StoreCombinationCriteria = storeCombinationCondition.createCriteria();
         StoreCombinationCriteria.andEqualTo("isDelete", 0);
         StoreCombinationCriteria.andEqualTo("isShow", 1);
         List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
-
-        if(!CollectionUtils.isEmpty(combinationList)){
-            log.info("getRank.storeCombinationService.findByCondition"+JSONObject.toJSONString(combinationList));
+        
+        if (!CollectionUtils.isEmpty(combinationList)) {
+            log.info("getRank.storeCombinationService.findByCondition" + JSONObject.toJSONString(combinationList));
             List<Long> productIdList1 = combinationList.stream().map(StoreCombination::getProductId).collect(Collectors.toList());
             isvalidProductIdList.addAll(productIdList1);
         }
-
-
-//        Condition storeProductondition = new Condition(StoreProduct.class);
-//        Example.Criteria storeProductCriteria = storeProductondition.createCriteria();
-//        storeProductCriteria.andEqualTo("isDelete", 0);
-//        storeProductCriteria.andEqualTo("isShow", 1);
-//        List<StoreProduct> storeProductList = storeProductService.findByCondition(storeProductondition);
-//        if(!CollectionUtils.isEmpty(storeProductList)){
-//            List<Long> productIdList2 = storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList());
-//            isvalidProductIdList.addAll(productIdList2);
-//        }
-
-
-       if(!CollectionUtils.isEmpty(isvalidProductIdList)) {
-           log.info("getRank.isvalidProductIdList"+JSONObject.toJSONString(isvalidProductIdList));
-           Date date = new Date();
-           Date date1 = DateUtils.addDays(date, -6);
-           // List<Map<String, Object>> rank = storeOrderMapper.getRank(date1);
-           List<Map<String, Object>> rank = storePinkMapper.getRank(date1,isvalidProductIdList);
-
-
-           if (!CollectionUtils.isEmpty(rank)) {
-               log.info("rank"+JSONObject.toJSONString(rank));
-               Map<Long, Map<String, Object>> saleMap = rank.stream().collect(Collectors.toMap(a -> Long.valueOf(a.get("pid") + ""), a -> a, (b, c) -> c));
-               List<Long> pidList = rank.stream().map(a -> Long.valueOf(a.get("pid") + "")).collect(Collectors.toList());
-
-//               Condition storeCombinationCondition = new Condition(StoreCombination.class);
-//               Example.Criteria storeCombinationCriteria = storeCombinationCondition.createCriteria();
-//               storeCombinationCriteria.andIn("productId", pidList);
-//               List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
-               Map<Long, StoreCombination> storeCombinationMap = new HashMap<>();
-               if (!CollectionUtils.isEmpty(combinationList)) {
-                   log.info("getRank.combinationList"+JSONObject.toJSONString(combinationList));
-                   storeCombinationMap = combinationList.stream().collect(Collectors.toMap(StoreCombination::getProductId, a -> a, (b, c) -> c));
-               }
-               for (Map<String, Object> stringObjectMap : rank) {
-
-
-                   Object pid = stringObjectMap.get("pid");
-                   Object num = stringObjectMap.get("num");
-                   log.info("getRank.pid"+JSONObject.toJSONString(pid));
-                   StoreCombination storeCombination = storeCombinationMap.get(Long.parseLong(pid + ""));
-                   log.info("getRank.storeCombination"+JSONObject.toJSONString(storeCombination));
-                   StoreCombinationRankVO rankVO = new StoreCombinationRankVO();
-                   rankVO.setProductId(storeCombination.getProductId());
-                   rankVO.setProductName(storeCombination.getProductName());
-                   rankVO.setSales(Integer.valueOf(num + ""));
-                   rankVO.setFicti(Integer.valueOf(num + ""));
-                   rankVO.setImage(storeCombination.getImage());
-                   rankVO.setPrice(storeCombination.getPrice());
-                   list.add(rankVO);
-               }
-
-               if (!CollectionUtils.isEmpty(list)) {
-                   log.info("getRank.list"+JSONObject.toJSONString(list));
-                   list = list.stream().sorted(Comparator.comparing(StoreCombinationRankVO::getSales).reversed()).collect(Collectors.toList());
-               }
-
-           }
-
-       }
-
+        
+        
+        //        Condition storeProductondition = new Condition(StoreProduct.class);
+        //        Example.Criteria storeProductCriteria = storeProductondition.createCriteria();
+        //        storeProductCriteria.andEqualTo("isDelete", 0);
+        //        storeProductCriteria.andEqualTo("isShow", 1);
+        //        List<StoreProduct> storeProductList = storeProductService.findByCondition(storeProductondition);
+        //        if(!CollectionUtils.isEmpty(storeProductList)){
+        //            List<Long> productIdList2 = storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList());
+        //            isvalidProductIdList.addAll(productIdList2);
+        //        }
+        
+        
+        if (!CollectionUtils.isEmpty(isvalidProductIdList)) {
+            log.info("getRank.isvalidProductIdList" + JSONObject.toJSONString(isvalidProductIdList));
+            Date date = new Date();
+            Date date1 = DateUtils.addDays(date, -6);
+            // List<Map<String, Object>> rank = storeOrderMapper.getRank(date1);
+            List<Map<String, Object>> rank = storePinkMapper.getRank(date1, isvalidProductIdList);
+            
+            
+            if (!CollectionUtils.isEmpty(rank)) {
+                log.info("rank" + JSONObject.toJSONString(rank));
+                Map<Long, Map<String, Object>> saleMap = rank.stream().collect(Collectors.toMap(a -> Long.valueOf(a.get("pid") + ""), a -> a, (b, c) -> c));
+                List<Long> pidList = rank.stream().map(a -> Long.valueOf(a.get("pid") + "")).collect(Collectors.toList());
+                
+                //               Condition storeCombinationCondition = new Condition(StoreCombination.class);
+                //               Example.Criteria storeCombinationCriteria = storeCombinationCondition.createCriteria();
+                //               storeCombinationCriteria.andIn("productId", pidList);
+                //               List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
+                Map<Long, StoreCombination> storeCombinationMap = new HashMap<>();
+                if (!CollectionUtils.isEmpty(combinationList)) {
+                    log.info("getRank.combinationList" + JSONObject.toJSONString(combinationList));
+                    storeCombinationMap = combinationList.stream().collect(Collectors.toMap(StoreCombination::getProductId, a -> a, (b, c) -> c));
+                }
+                for (Map<String, Object> stringObjectMap : rank) {
+                    
+                    
+                    Object pid = stringObjectMap.get("pid");
+                    Object num = stringObjectMap.get("num");
+                    log.info("getRank.pid" + JSONObject.toJSONString(pid));
+                    StoreCombination storeCombination = storeCombinationMap.get(Long.parseLong(pid + ""));
+                    log.info("getRank.storeCombination" + JSONObject.toJSONString(storeCombination));
+                    StoreCombinationRankVO rankVO = new StoreCombinationRankVO();
+                    rankVO.setProductId(storeCombination.getProductId());
+                    rankVO.setProductName(storeCombination.getProductName());
+                    rankVO.setSales(Integer.valueOf(num + ""));
+                    rankVO.setFicti(Integer.valueOf(num + ""));
+                    rankVO.setImage(storeCombination.getImage());
+                    rankVO.setPrice(storeCombination.getPrice());
+                    list.add(rankVO);
+                }
+                
+                if (!CollectionUtils.isEmpty(list)) {
+                    log.info("getRank.list" + JSONObject.toJSONString(list));
+                    list = list.stream().sorted(Comparator.comparing(StoreCombinationRankVO::getSales).reversed()).collect(Collectors.toList());
+                }
+                
+            }
+            
+        }
+        
         // redisUtil.set(key, list);
         return list;
     }
-
-
-
+    
+    
     @Resource
     private DailySalesSummaryOfProductsMapper dailySalesSummaryOfProductsMapper;
-
+    
     /**
      * 重构后的top7   先建立daily_sales_summary_table_of_products   每日凌晨通过定时任务汇总一次当天的各个商品的销量,,然后top7就汇总过去7天的数据即可
+     *
      * @return
      */
     @Override
     public List<StoreCombinationRankVO> getRankNew() {
         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;
+        //        }
+        
         Set<Long> isvalidProductIdList = new HashSet<>();
-        //提取有效的参与活动的商品id
+        // 提取有效的参与活动的商品id
         Condition storeCombinationCondition = new Condition(StoreCombination.class);
         Example.Criteria StoreCombinationCriteria = storeCombinationCondition.createCriteria();
         StoreCombinationCriteria.andEqualTo("isDelete", 0);
         StoreCombinationCriteria.andEqualTo("isShow", 1);
         List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
-
-        if(!CollectionUtils.isEmpty(combinationList)){
-            log.info("getRank.storeCombinationService.findByCondition"+JSONObject.toJSONString(combinationList));
+        
+        if (!CollectionUtils.isEmpty(combinationList)) {
+            log.info("getRank.storeCombinationService.findByCondition" + JSONObject.toJSONString(combinationList));
             List<Long> productIdList1 = combinationList.stream().map(StoreCombination::getProductId).collect(Collectors.toList());
             isvalidProductIdList.addAll(productIdList1);
         }
-
-
-//        Condition storeProductondition = new Condition(StoreProduct.class);
-//        Example.Criteria storeProductCriteria = storeProductondition.createCriteria();
-//        storeProductCriteria.andEqualTo("isDelete", 0);
-//        storeProductCriteria.andEqualTo("isShow", 1);
-//        List<StoreProduct> storeProductList = storeProductService.findByCondition(storeProductondition);
-//        if(!CollectionUtils.isEmpty(storeProductList)){
-//            List<Long> productIdList2 = storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList());
-//            isvalidProductIdList.addAll(productIdList2);
-//        }
-
-
-        if(!CollectionUtils.isEmpty(isvalidProductIdList)) {
-            log.info("getRank.isvalidProductIdList"+JSONObject.toJSONString(isvalidProductIdList));
+        
+        
+        //        Condition storeProductondition = new Condition(StoreProduct.class);
+        //        Example.Criteria storeProductCriteria = storeProductondition.createCriteria();
+        //        storeProductCriteria.andEqualTo("isDelete", 0);
+        //        storeProductCriteria.andEqualTo("isShow", 1);
+        //        List<StoreProduct> storeProductList = storeProductService.findByCondition(storeProductondition);
+        //        if(!CollectionUtils.isEmpty(storeProductList)){
+        //            List<Long> productIdList2 = storeProductList.stream().map(StoreProduct::getId).collect(Collectors.toList());
+        //            isvalidProductIdList.addAll(productIdList2);
+        //        }
+        
+        
+        if (!CollectionUtils.isEmpty(isvalidProductIdList)) {
+            log.info("getRank.isvalidProductIdList" + JSONObject.toJSONString(isvalidProductIdList));
             Date date = new Date();
             Date date1 = DateUtils.addDays(date, -6);
             // List<Map<String, Object>> rank = storeOrderMapper.getRank(date1);
-            List<Map<String, Object>> rank = dailySalesSummaryOfProductsMapper.getRankNew(date1,isvalidProductIdList);
-
-
+            List<Map<String, Object>> rank = dailySalesSummaryOfProductsMapper.getRankNew(date1, isvalidProductIdList);
+            
+            
             if (!CollectionUtils.isEmpty(rank)) {
-                log.info("rank"+JSONObject.toJSONString(rank));
+                log.info("rank" + JSONObject.toJSONString(rank));
                 Map<Long, Map<String, Object>> saleMap = rank.stream().collect(Collectors.toMap(a -> Long.valueOf(a.get("pid") + ""), a -> a, (b, c) -> c));
                 List<Long> pidList = rank.stream().map(a -> Long.valueOf(a.get("pid") + "")).collect(Collectors.toList());
-
-//               Condition storeCombinationCondition = new Condition(StoreCombination.class);
-//               Example.Criteria storeCombinationCriteria = storeCombinationCondition.createCriteria();
-//               storeCombinationCriteria.andIn("productId", pidList);
-//               List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
+                
+                //               Condition storeCombinationCondition = new Condition(StoreCombination.class);
+                //               Example.Criteria storeCombinationCriteria = storeCombinationCondition.createCriteria();
+                //               storeCombinationCriteria.andIn("productId", pidList);
+                //               List<StoreCombination> combinationList = storeCombinationService.findByCondition(storeCombinationCondition);
                 Map<Long, StoreCombination> storeCombinationMap = new HashMap<>();
                 if (!CollectionUtils.isEmpty(combinationList)) {
-                    log.info("getRank.combinationList"+JSONObject.toJSONString(combinationList));
+                    log.info("getRank.combinationList" + JSONObject.toJSONString(combinationList));
                     storeCombinationMap = combinationList.stream().collect(Collectors.toMap(StoreCombination::getProductId, a -> a, (b, c) -> c));
                 }
                 for (Map<String, Object> stringObjectMap : rank) {
-
-
+                    
+                    
                     Object pid = stringObjectMap.get("pid");
                     Object num = stringObjectMap.get("num");
-                    log.info("getRank.pid"+JSONObject.toJSONString(pid));
+                    log.info("getRank.pid" + JSONObject.toJSONString(pid));
                     StoreCombination storeCombination = storeCombinationMap.get(Long.parseLong(pid + ""));
-                    log.info("getRank.storeCombination"+JSONObject.toJSONString(storeCombination));
+                    log.info("getRank.storeCombination" + JSONObject.toJSONString(storeCombination));
                     StoreCombinationRankVO rankVO = new StoreCombinationRankVO();
                     rankVO.setProductId(storeCombination.getProductId());
                     rankVO.setProductName(storeCombination.getProductName());
@@ -353,16 +376,16 @@ public class OrderServiceBusinessImpl implements OrderServiceBusiness {
                     rankVO.setPrice(storeCombination.getPrice());
                     list.add(rankVO);
                 }
-
+                
                 if (!CollectionUtils.isEmpty(list)) {
-                    log.info("getRank.list"+JSONObject.toJSONString(list));
+                    log.info("getRank.list" + JSONObject.toJSONString(list));
                     list = list.stream().sorted(Comparator.comparing(StoreCombinationRankVO::getSales).reversed()).collect(Collectors.toList());
                 }
-
+                
             }
-
+            
         }
-
+        
         // redisUtil.set(key, list);
         return list;
     }

+ 40 - 23
mall-service/src/main/java/com/txz/mall/dubbo/client/CifRedEnvelopeDubboServiceClient.java

@@ -3,7 +3,6 @@ package com.txz.mall.dubbo.client;
 import com.alibaba.fastjson.JSONObject;
 import com.txz.cif.dto.EarningsDTO;
 import com.txz.cif.dto.OrderParam;
-import com.txz.cif.service.AccountDubboService;
 import com.txz.cif.service.RedEnvelopeDubboService;
 import com.txz.mall.core.ServiceException;
 import lombok.extern.slf4j.Slf4j;
@@ -16,28 +15,46 @@ import java.util.List;
 @Slf4j
 @Component
 public class CifRedEnvelopeDubboServiceClient {
-
+    
     @Reference
     private RedEnvelopeDubboService redEnvelopeDubboService;
-
-
-   public List<EarningsDTO> getEarningsByOrders(List<OrderParam> params){
-
-       List<EarningsDTO> earningsByOrders = null;
-       try{
-           log.info("redEnvelopeDubboService.getEarningsByOrders:"+JSONObject.toJSONString(params));
-           earningsByOrders  = redEnvelopeDubboService.getEarningsByOrders(params);
-       }catch (Exception e){
-           log.error("redEnvelopeDubboService.getEarningsByOrders :"+e.getMessage());
-           throw new ServiceException("cif service unavailable redEnvelopeDubboService.getEarningsByOrders unavailable");
-       }
-       if(!ObjectUtils.isEmpty(earningsByOrders)){
-           log.info("redEnvelopeDubboService.getEarningsByOrders result:"+ JSONObject.toJSONString(earningsByOrders));
-       }
-
-
-       return earningsByOrders;
-   }
-
-
+    
+    
+    public List<EarningsDTO> getEarningsByOrders(List<OrderParam> params) {
+        
+        List<EarningsDTO> earningsByOrders = null;
+        try {
+            log.info("redEnvelopeDubboService.getEarningsByOrders:" + JSONObject.toJSONString(params));
+            earningsByOrders = redEnvelopeDubboService.getEarningsByOrders(params);
+        } catch (Exception e) {
+            log.error("redEnvelopeDubboService.getEarningsByOrders :" + e.getMessage());
+            throw new ServiceException("cif service unavailable redEnvelopeDubboService.getEarningsByOrders unavailable");
+        }
+        if (!ObjectUtils.isEmpty(earningsByOrders)) {
+            log.info("redEnvelopeDubboService.getEarningsByOrders result:" + JSONObject.toJSONString(earningsByOrders));
+        }
+        
+        
+        return earningsByOrders;
+    }
+    
+    public List<EarningsDTO> getEarningsInfoByOrders(List<OrderParam> params) {
+        
+        List<EarningsDTO> earningsByOrders = null;
+        try {
+            log.info("redEnvelopeDubboService.getEarningsByOrders:" + JSONObject.toJSONString(params));
+            earningsByOrders = redEnvelopeDubboService.getEarningsInfoByOrders(params);
+        } catch (Exception e) {
+            log.error("redEnvelopeDubboService.getEarningsByOrders :" + e.getMessage());
+            throw new ServiceException("cif service unavailable redEnvelopeDubboService.getEarningsByOrders unavailable");
+        }
+        if (!ObjectUtils.isEmpty(earningsByOrders)) {
+            log.info("redEnvelopeDubboService.getEarningsByOrders result:" + JSONObject.toJSONString(earningsByOrders));
+        }
+        
+        
+        return earningsByOrders;
+    }
+    
+    
 }

+ 22 - 20
mall-service/src/main/java/com/txz/mall/service/impl/StoreOrderServiceImpl.java

@@ -584,7 +584,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             example.createCriteria().andEqualTo("orderId", storeOrder.getOrderId());
             storeOrderMapper.updateByConditionSelective(storeOrderForUpdate, example);
             storeOrderStatusService.createLog(storeOrder.getId(), storeOrder.getOrderId(), Constants.ORDER_STATUS_DELIVERY_ORDER, "订单发货");
-            upOrderIndex(1, storeOrder.getOrderId(), pinkOrderStatusEnum.getKey());
+            upOrderIndex(storeOrder.getOrderId(), pinkOrderStatusEnum, null);
             // 维护拼团订单状态
             StorePink storePinkForUpdate = new StorePink();
             storePinkForUpdate.setOrderStatus(pinkOrderStatusEnum.getKey());
@@ -1410,7 +1410,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 break;
             case 4:
                 pinkCriteria.andEqualTo("status", StorePinkStatusEnum.RESULTS_ANNOUNCED.getKey());
-                pinkCriteria.andIn("orderStatus", Arrays.asList(PinkOrderStatusEnum.GROUP_ORDER_TO_SHIP.getKey(), PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE.getKey(), PinkOrderStatusEnum.GROUP_ORDER_COMPLETED.getKey()));
+                pinkCriteria.andIn("orderStatus", Arrays.asList(PinkOrderStatusEnum.GROUP_ORDER_TO_SHIP.getKey(), PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE.getKey(), PinkOrderStatusEnum.GROUP_ORDER_COMPLETED.getKey(), PinkOrderStatusEnum.GROUP_ORDER_RECYCLE.getKey()));
                 pinkList = storePinkService.findByCondition(pinkCondition);
                 if (CollUtil.isNotEmpty(pinkList)) {
                     criteria.andIn("orderId", pinkList.stream().map(StorePink::getOrderId).collect(Collectors.toList()));
@@ -2039,7 +2039,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 Condition condition = new Condition(StorePink.class);
                 condition.createCriteria().andEqualTo("orderId", orderNo);
                 storePinkMapper.updateByConditionSelective(storePinkForUpdate, condition);
-                upOrderIndex(2, storeOrder.getOrderId(), StorePinkStatusEnum.LOTTERY_FAILED.getKey());
+                upOrderIndex(storeOrder.getOrderId(), pinkOrderStatusEnum, StorePinkStatusEnum.LOTTERY_FAILED);
                 // 维护每日统计表
                 dailySalesSummaryOfProductsService.updateDailySalesSummaryOfProducts(orderNo, storePinkForUpdate);
                 //**分库整改
@@ -2086,7 +2086,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                 Condition condition = new Condition(StorePink.class);
                 condition.createCriteria().andEqualTo("orderId", orderNo);
                 storePinkMapper.updateByConditionSelective(storePinkForUpdate, condition);
-                upOrderIndex(2, storeOrder.getOrderId(), StorePinkStatusEnum.LOTTERY_FAILED.getKey());
+                upOrderIndex(storeOrder.getOrderId(), pinkOrderStatusEnum, StorePinkStatusEnum.LOTTERY_FAILED);
                 // 维护每日统计表
                 dailySalesSummaryOfProductsService.updateDailySalesSummaryOfProducts(orderNo, storePinkForUpdate);
                 // storePinkService.update(storePinkForUpdate);
@@ -2436,7 +2436,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         storeOrderCondition.createCriteria().andEqualTo("orderId", orderNo);
         int i = storeOrderMapper.updateByConditionSelective(storeOrderForUpdate, storeOrderCondition);
         if (i > 0) {
-            upOrderIndex(1, orderNo, status);
+            upOrderIndex(orderNo, PinkOrderStatusEnum.getEnum(status), null);
         }
     }
     
@@ -2446,20 +2446,15 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
      * @param orderNo
      * @param status
      */
-    private void upOrderIndex(Integer type, String orderNo, Integer status) {
+    private void upOrderIndex(String orderNo, PinkOrderStatusEnum status, StorePinkStatusEnum storePinkStatus) {
         OrderIndex orderIndex = new OrderIndex();
-        if (type == 1) {
-            orderIndex.setStatus(status);
-            if (PinkOrderStatusEnum.GROUP_ORDER_PAID.getKey().equals(status)) {
-                Date date = new Date();
-                orderIndex.setPayTime(date);
-            }
-            if (status > 3) {
-                orderIndex.setStorePinkStatus(StorePinkStatusEnum.RESULTS_ANNOUNCED.getKey());
-            }
-            
-        } else {
-            orderIndex.setStorePinkStatus(status);
+        orderIndex.setStatus(status.getKey());
+        if (PinkOrderStatusEnum.GROUP_ORDER_PAID == status) {
+            Date date = new Date();
+            orderIndex.setPayTime(date);
+        }
+        if (ObjectUtil.isNotEmpty(storePinkStatus)) {
+            orderIndex.setStorePinkStatus(storePinkStatus.getKey());
         }
         Condition orderIndexCondition = new Condition(OrderIndex.class);
         orderIndexCondition.createCriteria().andEqualTo("orderId", orderNo);
@@ -2579,7 +2574,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
             storePinkUpdateCondition.createCriteria().andEqualTo("orderId", storePink.getOrderId());
             //**分库整改
             storePinkMapper.updateByConditionSelective(storePinkForUpdate, storePinkUpdateCondition);
-            upOrderIndex(1, storeOrder.getOrderId(), pinkOrderStatusEnum.getKey());
+            upOrderIndex(storeOrder.getOrderId(), pinkOrderStatusEnum, null);
             // 维护每日统计
             dailySalesSummaryOfProductsService.updateDailySalesSummaryOfProducts(storePink.getOrderId(), storePinkForUpdate);
             // storePinkMapper.updateByPrimaryKeySelective(storePinkForUpdate);
@@ -2621,7 +2616,7 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
                     Example example = new Example(StoreOrder.class);
                     example.createCriteria().andEqualTo("orderId", storeOrder.getOrderId());
                     storeOrderMapper.updateByConditionSelective(storeOrderForUpdate, example);
-                    upOrderIndex(1, storeOrder.getOrderId(), pinkOrderStatusEnum.getKey());
+                    upOrderIndex(storeOrder.getOrderId(), pinkOrderStatusEnum, null);
                     storeOrderStatusService.createLog(storeOrder.getId(), storeOrder.getOrderId(), Constants.ORDER_STATUS_RECEIVE_ORDER, I18nUtil.get("automatic.order.receipt.confirmation"));
                     
                     // 维护拼团订单状态
@@ -2781,6 +2776,13 @@ public class StoreOrderServiceImpl extends AbstractService<StoreOrder> implement
         // 更新订单状态
         for (String orderNo : orderNos) {
             this.updateOrderStatus(orderNo, PinkOrderStatusEnum.GROUP_ORDER_RECYCLE.getKey());
+            // 更新拼团表订单状态
+            StorePink storePink = storePinkService.findBy("orderId", orderNo);
+            Long storePinkId = storePink.getId();
+            storePink = new StorePink();
+            storePink.setId(storePinkId);
+            storePink.setOrderStatus(PinkOrderStatusEnum.GROUP_ORDER_RECYCLE.getKey());
+            storePinkService.update(storePink);
         }
         // 添加回收数
         userDubboServiceClient.addNumberOfRecycle(userId, orderNos.size());

+ 31 - 0
mall-service/src/main/java/com/txz/mall/service/impl/StorePinkServiceImpl.java

@@ -11,6 +11,7 @@ import com.txz.cif.dto.Result;
 import com.txz.cif.dto.UserDTO;
 import com.txz.cif.param.AccomplishParam;
 import com.txz.cif.param.OrderParam;
+import com.txz.mall.configurer.AsyncConfig;
 import com.txz.mall.constants.Constants;
 import com.txz.mall.core.AbstractService;
 import com.txz.mall.core.ServiceException;
@@ -208,6 +209,29 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
     @Resource
     private StoreOrderStatusService storeOrderStatusService;
     
+    @Resource
+    private OrderIndexService orderIndexService;
+    
+    @Resource
+    private AsyncConfig asyncConfig;
+    
+    /**
+     * 中间索引表状态同步
+     *
+     * @param orderNo
+     */
+    private void upOrderIndex(String orderNo, StorePinkStatusEnum storePinkStatus) {
+        OrderIndex orderIndex = new OrderIndex();
+        
+        if (ObjectUtil.isNotEmpty(storePinkStatus)) {
+            orderIndex.setStorePinkStatus(storePinkStatus.getKey());
+        }
+        Condition orderIndexCondition = new Condition(OrderIndex.class);
+        orderIndexCondition.createCriteria().andEqualTo("orderId", orderNo);
+        orderIndexService.update(orderIndex, orderIndexCondition);
+    }
+    
+    
     @Override
     public void theSelection(String spsCode, Date date) {
         log.info("theSelection:" + spsCode);
@@ -234,6 +258,13 @@ public class StorePinkServiceImpl extends AbstractService<StorePink> implements
             String s = I18nUtil.get("no.group.buying.orders");
             throw new ServiceException(s + spsCode);
         }
+        // 异步更新索引表,同步拼团单状态
+        asyncConfig.taskExecutor().execute(() -> {
+            list.forEach(storePink -> {
+                this.upOrderIndex(storePink.getOrderId(), StorePinkStatusEnum.RESULTS_ANNOUNCED);
+            });
+        });
+        
         long count = list.stream().filter(i -> i.getLId().equals(1)).count();
         if (count >= 1) {
             throw new ServiceException(I18nUtil.get("already.have.a.chosen.one") + spsCode);

+ 3 - 0
mall-service/src/main/java/vo/StoreOrderVO.java

@@ -32,6 +32,9 @@ public class StoreOrderVO extends StoreOrder implements Serializable {
 
     @ApiModelProperty(value = "奖励佣金")
     private BigDecimal brokerage;
+    
+    @ApiModelProperty(value = "回收")
+    private BigDecimal recycleAmount;
 
     @ApiModelProperty(value = "中奖状态 0-未中奖 1-已中奖")
     private Integer winStatus;

+ 1 - 0
mall-service/src/main/resources/i18n/messages_bn_BD.properties

@@ -14,6 +14,7 @@ group.order.to.receive=To Receive
 PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE=To Receive
 group.order.completed=Completed
 PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
+PinkOrderStatusEnum.GROUP_ORDER_RECYCLE=Recycle
 
 SUCCESS=\u09B8\u09BE\u09AB\u09B2\u09CD\u09AF
 FAIL=\u09AC\u09CD\u09AF\u09B0\u09CD\u09A5 \u09B9\u0993\u09DF\u09BE

+ 1 - 1
mall-service/src/main/resources/i18n/messages_en_US.properties

@@ -15,7 +15,7 @@ group.order.to.receive=To Receive
 PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE=To Receive
 group.order.completed=Completed
 PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
-
+PinkOrderStatusEnum.GROUP_ORDER_RECYCLE=Recycle
 
 this.specification.value.already.exists=this specification value already exists
 order.does.not.exist.id=order does not exist id

+ 1 - 1
mall-service/src/main/resources/i18n/messages_zh_CN.properties

@@ -15,7 +15,7 @@ group.order.to.receive=To Receive
 PinkOrderStatusEnum.GROUP_ORDER_TO_RECEIVE=To Receive
 group.order.completed=Completed
 PinkOrderStatusEnum.GROUP_ORDER_COMPLETED=Completed
-
+PinkOrderStatusEnum.GROUP_ORDER_RECYCLE=Recycle
 
 this.specification.value.already.exists=\u6B64\u89C4\u683C\u503C\u5DF2\u7ECF\u5B58\u5728
 order.does.not.exist.id=\u8BA2\u5355\u4E0D\u5B58\u5728 ID\uFF1A

+ 2 - 0
mall-service/src/main/resources/i18n/notice/bn.json

@@ -12,6 +12,8 @@
   "notifications.order.shipped.title": "অর্ডার সফলভাবে শিপ হয়েছে",
   "notifications.order.shipped.content": "আপনার অংশগ্রহণ করা গ্রুপ অর্ডার [%s] সফলভাবে শিপ হয়েছে",
   "notifications.reward.referFriends.title": "বন্ধু রেফার পুরস্কার",
+  "notifications.order.cancel.title": "অর্ডার বাতিল",
+  "notifications.order.recycle.content": "অর্ডার পুনরুদ্ধার সফল",
   "notifications.reward.referFriends.content": "আপনি বন্ধু রেফারের জন্য পুরস্কার পেয়েছেন",
   "notifications.reward.groupBuy.title": "গ্রুপ বাই যোগ দিন পুরস্কার",
   "notifications.reward.groupBuy.content": "আপনি একটি পুরস্কার পেয়েছেন, অর্ডার আইডি [%s]",

+ 2 - 0
mall-service/src/main/resources/i18n/notice/en.json

@@ -12,6 +12,8 @@
   "notifications.order.shipped.title": "Order shipped successfully",
   "notifications.order.shipped.content": "The group order you participated in [%s] has been successfully shipped",
   "notifications.reward.referFriends.title": "Refer Friends Reward",
+  "notifications.order.recycle.title": "Order Recycle Reward",
+  "notifications.order.recycle.content": "The order has been successfully retrieved",
   "notifications.reward.referFriends.content": "You have received the reward for refer friends",
   "notifications.reward.groupBuy.title": "Join Group Buy Reward",
   "notifications.reward.groupBuy.content": "You have received a reward, order ID [%s]",

+ 2 - 0
mall-service/src/main/resources/i18n/notice/zh.json

@@ -11,6 +11,8 @@
   "notifications.order.groupBuyFail.content": "您参与的团购订单[%s]已失败",
   "notifications.order.shipped.title": "订单发货成功",
   "notifications.order.shipped.content": "您参与的团购订单[%s]已成功发货",
+  "notifications.order.recycle.title": "订单回收奖励",
+  "notifications.order.recycle.content": "订单回收成功",
   "notifications.reward.referFriends.title": "推荐好友奖励",
   "notifications.reward.referFriends.content": "您已获得推荐好友奖励",
   "notifications.reward.groupBuy.title": "参团奖励",