Parcourir la source

Merge branch 'dev/2024/0425/update-admin' into 'master'

更新合赢奖的计算

See merge request zx-mall/mall-backend-admin!9
Yangzw il y a 10 mois
Parent
commit
997ec4e18d

+ 3 - 5
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -36,8 +36,6 @@ import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-import java.util.stream.LongStream;
 
 import cn.newfeifan.mall.module.distri.controller.admin.ordercalc.vo.*;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
@@ -191,11 +189,11 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         tradeOrderDO.forEach(k -> {
 
             // 计算单个订单的总单价
-            LongStream priceStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getPrice);
+            Long priceStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getPrice).sum();
             // 计算单个订单的总成本
-            LongStream longStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getCostPrice);
+            Long longStream = k.getOrderItemMessages().stream().mapToLong(OrderItemMessage::getCostPrice).sum();
             // 计算当个订单的总数量
-            IntStream intStream = k.getOrderItemMessages().stream().mapToInt(OrderItemMessage::getProductCount);
+            Integer intStream = k.getOrderItemMessages().stream().mapToInt(OrderItemMessage::getProductCount).sum();
 
             BigDecimal price = new BigDecimal(String.valueOf(priceStream));
             BigDecimal costPrice = new BigDecimal(String.valueOf(longStream));

+ 11 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/partitioncrash/PartitionCrashServiceImpl.java

@@ -6,6 +6,7 @@ import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSave
 import cn.newfeifan.mall.module.distri.controller.admin.partitionbrothers.vo.PartitionBrothersSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.partitionson.vo.PartitionSonSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitSaveReqVO;
+import cn.newfeifan.mall.module.distri.controller.admin.sharepath.vo.SharePathSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
@@ -176,6 +177,15 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
             Long parent = sonAndParent.get(k.getUserId());
             IntegralDO parentIntegralDo = integralDOMap.get(parent);
 
+            if (parentIntegralDo == null) {
+                sharePathService.createSharePath(SharePathSaveReqVO.builder()
+                        .ancestor(PT_ID)
+                        .descendant(k.getUserId())
+                        .build());
+                parentIntegralDo = integralDOMap.get(PT_ID);
+            }
+
+
             // 创建一个分区编号
             String todayNo = crashTodayNo(k.getUserId());
             String yesterdayNo = crashYesterdayNo(k.getUserId());
@@ -320,7 +330,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                 // 当前平台总积分
 //                Integer ptTotalAdd = ptProfit.getPtTotalAdd();
 
-                if(entry.getValue() == 0){
+                if (entry.getValue() == 0) {
                     continue;
                 }
 

+ 30 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -6,6 +6,8 @@ import cn.newfeifan.mall.framework.common.pojo.CommonResult;
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.module.distri.mq.message.order.CalcMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
+import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
+import cn.newfeifan.mall.module.distri.mq.message.order.OrderItemMessage;
 import cn.newfeifan.mall.module.member.api.user.MemberUserApi;
 import cn.newfeifan.mall.module.member.api.user.dto.MemberUserRespDTO;
 import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderPageItemRespVO;
@@ -38,6 +40,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.annotation.Resource;
 import javax.validation.Valid;
 import java.util.*;
+import java.util.stream.Collectors;
 
 import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertList;
@@ -249,8 +252,34 @@ public class TradeOrderController {
     public CommonResult<String> startCalc(@RequestParam("orderIds") List<Long> orderIds) {
 //        List<DistriOrderMessage> appTradeOrderDetailRespVos = tradeOrderQueryService.queryAllOrder();
         List<DistriOrderMessage> appTradeOrderDetailRespVos = tradeOrderQueryService.queryAllOrder(orderIds);
-        CalcMessage calcMessage = CalcMessage.builder().distriOrderMessages(appTradeOrderDetailRespVos).build();
+
+
+        Map<Long, List<OrderItemMessage>> orderItemMessageGroupBy = appTradeOrderDetailRespVos.stream()
+                .map(k -> OrderItemMessage.builder().price(k.getPrice())
+                        .productCount(k.getProductCount())
+                        .costPrice(k.getCostPrice())
+                        .orderId(k.getOrderId())
+                        .totalPrice(k.getTotalPrice()).build())
+                .collect(Collectors.groupingBy(OrderItemMessage::getOrderId));
+
+        List<OrderCalcMessage> orderCalcMessages = appTradeOrderDetailRespVos.stream().map(k -> {
+            OrderCalcMessage orderCalcMessage = OrderCalcMessage.builder()
+                    .orderId(k.getOrderId())
+                    .name(k.getName())
+                    .nickName(k.getNickName())
+                    .no(k.getNo())
+                    .merchantId(k.getMerchantId())
+                    .shopId(k.getShopId())
+                    .userId(k.getUserId()).build();
+            List<OrderItemMessage> orderItemMessages = orderItemMessageGroupBy.get(k.getOrderId());
+            orderCalcMessage.setOrderItemMessages(orderItemMessages);
+            return orderCalcMessage;
+        }).collect(Collectors.toList());
+
+
+        CalcMessage calcMessage = CalcMessage.builder().orderCalcMessages(orderCalcMessages).distriOrderMessages(appTradeOrderDetailRespVos).build();
         distriOrderProducer.sendDistriOrderMessage(calcMessage);
+
         return success("success");
     }
 

+ 2 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/job/order/TradeOrderAutoCalcJob.java

@@ -11,7 +11,6 @@ import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -39,6 +38,7 @@ public class TradeOrderAutoCalcJob implements JobHandler {
                 .map(k -> OrderItemMessage.builder().price(k.getPrice())
                         .productCount(k.getProductCount())
                         .costPrice(k.getCostPrice())
+                        .orderId(k.getOrderId())
                         .totalPrice(k.getTotalPrice()).build())
                 .collect(Collectors.groupingBy(OrderItemMessage::getOrderId));
 
@@ -59,7 +59,7 @@ public class TradeOrderAutoCalcJob implements JobHandler {
 
         CalcMessage calcMessage = CalcMessage.builder().orderCalcMessages(orderCalcMessages).distriOrderMessages(appTradeOrderDetailRespVos).build();
         distriOrderProducer.sendDistriOrderMessage(calcMessage);
-        return String.format("计算订单信息结束");
+        return "计算订单信息结束";
 
 
     }

+ 6 - 5
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/dal/mysql/permission/RoleMapper.java

@@ -1,6 +1,7 @@
 package cn.newfeifan.mall.module.system.dal.mysql.permission;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.collection.CollectionUtils;
 import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -9,10 +10,7 @@ import cn.newfeifan.mall.module.system.dal.dataobject.permission.RoleDO;
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.lang.Nullable;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 @Mapper
 public interface RoleMapper extends BaseMapperX<RoleDO> {
@@ -39,7 +37,10 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
         return selectList(RoleDO::getStatus, statuses);
     }
 
-    default List<String> selectByRoleIds(Set<Long> roleIds){
+    default List<String> selectByRoleIds(Set<Long> roleIds) {
+        if (roleIds.isEmpty()) {
+            return Collections.emptyList();
+        }
         List<RoleDO> roleDOS = selectList(new LambdaQueryWrapperX<RoleDO>()
                 .inIfPresent(RoleDO::getId, roleIds));
         List<String> strings = new ArrayList<>();

+ 2 - 1
feifan-module-system/feifan-module-system-biz/src/main/java/cn/newfeifan/mall/module/system/service/permission/PermissionServiceImpl.java

@@ -231,7 +231,8 @@ public class PermissionServiceImpl implements PermissionService {
 
     @Override
     public Set<Long> getUserRoleIdListByUserId(Long userId) {
-        return convertSet(userRoleMapper.selectListByUserId(userId), UserRoleDO::getRoleId);
+        List<UserRoleDO> from = userRoleMapper.selectListByUserId(userId);
+        return convertSet(from, UserRoleDO::getRoleId);
     }
 
     @Override

+ 4 - 1
sql/mysql/建空库SQL/6_20240412.sql

@@ -7,7 +7,7 @@ CREATE TABLE `distri_social_status_change_category`  (
                                                   `id` bigint NOT NULL COMMENT '会员身价变化类别id',
                                                   `name` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '类别名称',
                                                 --  `code` int NOT NULL DEFAULT -1 COMMENT '类别码',
-                                                  `variation_value` int NOT NULL DEFAULT 0 COMMENT '身价点数在本类别操作的变化值',
+                                                  `variation_value` DOUBLE NOT NULL DEFAULT 0 COMMENT '身价点数在本类别操作的变化值',
                                                   `description` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '描述',
 
                                                   `creator` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT '' COMMENT '创建者',
@@ -23,6 +23,9 @@ insert into distri_social_status_change_category (id,name,variation_value,descri
 insert into distri_social_status_change_category (id,name,variation_value,description) values(2,'成功推荐新用户注册',100,'推荐了一个用户注册后,推荐人获得的身价值');
 insert into distri_social_status_change_category (id,name,variation_value,description) values(3,'签到获取的基础身价值',10,'签到获取的最小身价值');
 insert into distri_social_status_change_category (id,name,variation_value,description) values(4,'收藏一个商品获取的身价值',10,'收藏一个商品获取的身价值,同一商品,反复收藏只可获取一次身价值');
+
+insert into distri_social_status_change_category (id,name,variation_value,description) values(5,'购物自得身价值',50,'购物金额乘于本参数,等于获取的身价值');
+insert into distri_social_status_change_category (id,name,variation_value,description) values(6,'直推人购物,推荐人获得身价',0.5,'推荐人获取身价值=直推人购物金额*本倍数');
 commit;
 
 --  会员身价变化日志表