Bladeren bron

成团改造

linxk 6 dagen geleden
bovenliggende
commit
1d8a92c444

+ 11 - 1
cif-api/src/main/java/com/txz/cif/param/AccomplishParam.java

@@ -35,18 +35,28 @@ public class AccomplishParam implements Serializable {
     /**
      * 退还资金账号
      */
-    private List<Long> userIds;
+    private List<OrderParam> userIds;
 
     /**
      * 开团人
      */
     private Long openGroupUserId;
 
+    /**
+     * 开团订单号
+     */
+    private String openOrderNo;
+
     /**
      * 中奖人
      */
     private Long winnerUserId;
 
+    /**
+     * 中奖订单号
+     */
+    private String winnerOrderNo;
+
 
     /**
      * 开团金额

+ 48 - 0
cif-api/src/main/java/com/txz/cif/param/OrderParam.java

@@ -0,0 +1,48 @@
+/*
+*
+* FreezdParam.java
+* Copyright(C) 2017-2020 fendo公司
+* @date 2022-11-02
+*/
+package com.txz.cif.param;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrderParam implements Serializable {
+
+    /**
+     * 业务编号
+     */
+    private String orderNo;
+
+    /**
+     * 业务Id
+     */
+    private String orderId;
+
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+
+
+    private static final long serialVersionUID = 1L;
+
+
+
+
+}

+ 10 - 7
cif-service/src/main/java/com/txz/cif/dubbo/impl/AccountDubboServiceImpl.java

@@ -150,13 +150,13 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Override
     public Result accomplishGroup(AccomplishParam param) {
         // 类型 1001充值 2001提现  3001开团支付 3002参团支付  4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
-        for (Long userId : param.getUserIds()) {
+        for (OrderParam orderParam : param.getUserIds()) {
             Result result = flowService.refund(RefundParam.builder()
                     .transTime(param.getTransTime())
                     .bizType(BizTypeEnum.SUCCESS_GROUP_REFUND.getKey()).bizNo(param.getBizNo())
                     .bizId(param.getBizId())
                     .amount(param.getAmount())
-                    .userId(userId)
+                    .userId(orderParam.getUserId())
                     .build());
             if (!StrUtil.equals("200", result.getCode())) {
                 throw new ServiceException();
@@ -172,17 +172,20 @@ public class AccountDubboServiceImpl implements AccountDubboService {
             // 开团红包
             Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
                     .amount(amount).bizType(BizTypeEnum.OPEN_GROUP_RED_ENVELOPE.getKey()).orderNo(param.getBizNo())
-                    .userIds(CollUtil.newArrayList(param.getOpenGroupUserId()))
+                    .userIds(CollUtil.newArrayList(OrderParam.builder().userId(param.getOpenGroupUserId()).orderId(param.getOpenOrderNo()).build()))
                     .transTime(param.getTransTime())
                     .build());
         }
 
         //  计算参团红包金额
-        if (param.getUserIds().contains(param.getOpenGroupUserId())) {
-            param.getUserIds().remove(param.getOpenGroupUserId());
+        for (int i = param.getUserIds().size() -1; i >=0 ; i--) {
+            OrderParam p = param.getUserIds().get(i);
+            if (p.getUserId().compareTo(param.getOpenGroupUserId()) == 0){
+                param.getUserIds().remove(i);
+            }
         }
         if (param.getWinnerUserId().compareTo(param.getOpenGroupUserId()) != 0){
-            param.getUserIds().add(param.getWinnerUserId());
+            param.getUserIds().add(OrderParam.builder().orderId(param.getWinnerOrderNo()).userId(param.getWinnerUserId()).build());
         }
         com.txz.operating.result.Result<ConfigDTO> openRedEnvelopeRate = operatingConfigDubboServiceClient.getConfigByCode("join_red_envelope_rate");
         String rate = openRedEnvelopeRate.getData().getValueInfo();
@@ -209,7 +212,7 @@ public class AccountDubboServiceImpl implements AccountDubboService {
     @Override
     public Result addRedEnvelope(SignRedEnvelopeParam param) {
         RedEnvelopeParam p = BeanUtil.toBean(param, RedEnvelopeParam.class);
-        p.setUserIds(CollUtil.newArrayList(param.getUserId()));
+        p.setUserIds(CollUtil.newArrayList(OrderParam.builder().userId(param.getUserId()).orderNo(param.getOrderNo()).build()));
         if (param.getBizType() == BizTypeEnum.SIGN_RED_ENVELOPE || param.getBizType() == BizTypeEnum.PROMOTION_COMMISSION) {
             p.setBizType(param.getBizType().getKey());
         } else {

+ 12 - 11
cif-service/src/main/java/com/txz/cif/service/impl/RedEnvelopeServiceImpl.java

@@ -14,6 +14,7 @@ import com.txz.cif.model.Account;
 import com.txz.cif.model.ConfigMember;
 import com.txz.cif.model.RedEnvelope;
 import com.txz.cif.model.User;
+import com.txz.cif.param.OrderParam;
 import com.txz.cif.param.SignRedEnvelopeParam;
 import com.txz.cif.service.AccountService;
 import com.txz.cif.service.ConfigMemberService;
@@ -73,7 +74,7 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
             redEnvelopes.addAll(bulidRedEnvelope(param.getUserIds().get(0),param,settleTime)) ;
         } else if (BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.JOIN_GROUP_RED_ENVELOPE){
             //参团红包
-            for (Long userId:param.getUserIds()){
+            for (OrderParam userId:param.getUserIds()){
                 redEnvelopes.addAll(bulidRedEnvelope(userId,param,settleTime)) ;
             }
         } else if (BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.SIGN_RED_ENVELOPE){
@@ -121,7 +122,7 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
      * @param settleTime
      * @return
      */
-    private List<RedEnvelope> bulidRedEnvelope(Long userId, RedEnvelopeParam param, Date settleTime) {
+    private List<RedEnvelope> bulidRedEnvelope(OrderParam userId, RedEnvelopeParam param, Date settleTime) {
 
         List<RedEnvelope> ret = new ArrayList<>();
         //红包
@@ -130,13 +131,13 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         if (BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.OPEN_GROUP_RED_ENVELOPE
             || BizTypeEnum.getByKey(param.getBizType()) == BizTypeEnum.JOIN_GROUP_RED_ENVELOPE ){
             //只有 开团、参团 有分佣
-            User user = userService.findById(userId);
+            User user = userService.findById(userId.getUserId());
             if (user.getPid() != null){
                 //找父亲 上级分佣
-                ret.add(bulidRedEnvelope2(2,user.getPid(),param,settleTime)) ;
+                ret.add(bulidRedEnvelope2(2, OrderParam.builder().orderId(userId.getOrderNo()).userId(user.getPid()).build(),param,settleTime)) ;
                 if (user.getPpid() != null){
                     //找爷爷 上上级分佣
-                    ret.add(bulidRedEnvelope2(3,user.getPpid(),param,settleTime)) ;
+                    ret.add(bulidRedEnvelope2(3,OrderParam.builder().orderId(userId.getOrderNo()).userId(user.getPpid()).build(),param,settleTime)) ;
                 }
             }
         }
@@ -152,7 +153,7 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
      * @param settleTime
      * @return
      */
-    private RedEnvelope bulidRedEnvelope2(Integer type , Long userId, RedEnvelopeParam param, Date settleTime) {
+    private RedEnvelope bulidRedEnvelope2(Integer type , OrderParam userId, RedEnvelopeParam param, Date settleTime) {
         Condition c = new Condition(Account.class);
         c.createCriteria().andEqualTo("userId", userId)
                 .andEqualTo("bizType",2);
@@ -168,11 +169,11 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
 
 
 
-        Long id = IdUtil.getSnowflake(1,1).nextId();
+//        Long id = IdUtil.getSnowflake(1,1).nextId();
         //借:营销账户(负债类201)(贷)     -100元
         //贷:个人账户(负债类202)(贷)     +100元
         BigDecimal amount = param.getAmount();
-        User user = userService.findById(userId);
+        User user = userService.findById(userId.getUserId());
         if (type > 1 ){
             ConfigMember level = configMemberService.findBy("level", user.getVipLevel());
             if (type == 2){
@@ -184,7 +185,7 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
         RedEnvelope redEnvelope = RedEnvelope.builder()
                 .amount(amount)
                 .createTime(DateUtil.date())
-                .orderNo(param.getOrderNo())
+                .orderNo(param.getUserIds().get(0).getOrderNo())
                 //类型: 1(自己) 返回  1(开团)或2(参团)  2(父亲)返回4(上级分佣)  3(爷爷)返回5(上上级分佣)
                 .bizType(bizType)
                 .name(user.getName())
@@ -193,8 +194,8 @@ public class RedEnvelopeServiceImpl extends AbstractService<RedEnvelope> impleme
                 .creditAccount(account.getId())
                 .transTime(param.getTransTime())
                 .status(1)
-                .userId(param.getUserIds().get(0))
-                .tranNo(id+"")
+                .userId(param.getUserIds().get(0).getUserId())
+                .tranNo(param.getOrderNo())
                 .settleTime(settleTime)
                 .createUser(param.getUserIds().get(0)+"")
                 .build();

+ 2 - 1
cif-service/src/main/java/com/txz/cif/web/para/RedEnvelopeParam.java

@@ -6,6 +6,7 @@
 */
 package com.txz.cif.web.para;
 
+import com.txz.cif.param.OrderParam;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -32,7 +33,7 @@ public class RedEnvelopeParam implements Serializable {
     /**
      * 用户id
      */
-    private List<Long> userIds;
+    private List<OrderParam> userIds;
 
     /**
      * 交易金额