Browse Source

Merge branch 'dev' into 'mp-server-test'

Dev

See merge request quanshu/mp-server!85
zhong chunping 3 năm trước cách đây
mục cha
commit
e714d86947

+ 34 - 32
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/ChannelMgrController.java

@@ -144,7 +144,7 @@ public class ChannelMgrController extends BaseApiController {
 	
 	
 	/**
-	 * 新增子渠道信息
+	 * 渠道管理新增一级渠道信息
 	 * @param
 	 * @return
 	 */
@@ -158,7 +158,7 @@ public class ChannelMgrController extends BaseApiController {
 		// 1、校验名称是否重复、手机号是否存在(渠道表)
 		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(Channel::getName, channel.getName());
-		queryWrapper.gt(Channel::getLevel, 1);
+		queryWrapper.gt(Channel::getLevel, 0);
 		int nameCount = channelService.count(queryWrapper);
 		if(nameCount > 0) {
 			return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");
@@ -169,23 +169,25 @@ public class ChannelMgrController extends BaseApiController {
 			 return AjaxResult.error("手机号码" + channel.getMobile() + "已注册!");
 		}
 		// 2.校验佣金比例,不能高于其父渠道的佣金比例
-		if(null != channel.getParentId() && channel.getParentId() != 0) {
-			Channel parentChannel = channelService.getById(channel.getParentId());
-			if(null != parentChannel) {
-				 if(null != parentChannel.getCommRate() 
-						 && channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-					 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
-				 }
-				 channel.setLevel(parentChannel.getLevel()+1);
-				 channel.setChannelNo(parentChannel.getChannelNo()+".");
-			}else {
-				return AjaxResult.error("父渠道不存在");
-			}
-			
-		}else {
-			channel.setLevel(1);
-			channel.setChannelNo("");
-		}
+//		if(null != channel.getParentId() && channel.getParentId() != 0) {
+//			Channel parentChannel = channelService.getById(channel.getParentId());
+//			if(null != parentChannel) {
+//				 if(null != parentChannel.getCommRate() 
+//						 && channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
+//					 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+//				 }
+//				 channel.setLevel(parentChannel.getLevel()+1);
+//				 channel.setChannelNo(parentChannel.getChannelNo()+".");
+//			}else {
+//				return AjaxResult.error("父渠道不存在");
+//			}
+//		}else {
+//			channel.setLevel(1);
+//			channel.setChannelNo("");
+//		}
+		channel.setParentId(0L);
+		channel.setLevel(1);
+		channel.setChannelNo("");
 		// 3.插入数据
 		try {
 			channelService.saveChannel(channel,ChannelRoleEnum.CHANNEL);
@@ -197,7 +199,7 @@ public class ChannelMgrController extends BaseApiController {
 	}
 
 	/**
-	 * 编辑子渠道信息
+	 * 编辑一级子渠道信息
 	 * @param
 	 * @return
 	 */
@@ -217,7 +219,7 @@ public class ChannelMgrController extends BaseApiController {
 		if(!channel.getName().equals(oldChannel.getName())) {
 			LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(Channel::getName, channel.getName());
-			queryWrapper.gt(Channel::getLevel, 1);
+			queryWrapper.gt(Channel::getLevel, 0);
 			int nameCount = channelService.count(queryWrapper);
 			if(nameCount > 0) {
 				return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");
@@ -236,17 +238,17 @@ public class ChannelMgrController extends BaseApiController {
 			mobileChange = true;
 		}
 		// 3.校验佣金比例,不能高于其父渠道的佣金比例,不能低于其子渠道的最大佣金比例
-		Channel parentChannel = channelService.getById(oldChannel.getParentId());
-		if(null != parentChannel) {
-			 if(null != parentChannel.getCommRate() 
-					 && channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
-			 }
-			 channel.setLevel(parentChannel.getLevel()+1);
-			 channel.setChannelNo(parentChannel.getChannelNo()+".");
-		}else {
-			return AjaxResult.error("父渠道不存在");
-		}
+//		Channel parentChannel = channelService.getById(oldChannel.getParentId());
+//		if(null != parentChannel) {
+//			 if(null != parentChannel.getCommRate() 
+//					 && channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
+//				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+//			 }
+//			 channel.setLevel(parentChannel.getLevel()+1);
+//			 channel.setChannelNo(parentChannel.getChannelNo()+".");
+//		}else {
+//			return AjaxResult.error("父渠道不存在");
+//		}
 		// 查询子渠道的最大佣金比例
 		QueryWrapper<Channel> queryWrapper = new QueryWrapper<Channel>();
 		queryWrapper.select("IFNULL(max(comm_rate),0) as commRate");

+ 2 - 2
mp-admin/src/main/java/com/qs/mp/web/controller/api/channel/ChannelController.java

@@ -148,7 +148,7 @@ public class ChannelController extends BaseApiController {
 		// 1、校验名称是否重复、手机号是否存在(渠道表)
 		LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<>();
 		queryWrapper.eq(Channel::getName, channel.getName());
-		queryWrapper.gt(Channel::getLevel, 1);
+		queryWrapper.gt(Channel::getLevel, 0);
 		int nameCount = channelService.count(queryWrapper);
 		if(nameCount > 0) {
 			return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");
@@ -203,7 +203,7 @@ public class ChannelController extends BaseApiController {
 		if(!channel.getName().equals(oldChannel.getName())) {
 			LambdaQueryWrapper<Channel> queryWrapper = new LambdaQueryWrapper<>();
 			queryWrapper.eq(Channel::getName, channel.getName());
-			queryWrapper.gt(Channel::getLevel, 1);
+			queryWrapper.gt(Channel::getLevel, 0);
 			int nameCount = channelService.count(queryWrapper);
 			if(nameCount > 0) {
 				return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/TicketAwards.java

@@ -42,7 +42,7 @@ public class TicketAwards implements Serializable {
    * 奖项顺序
    */
   @TableField("sort")
-  private String sort;
+  private Integer sort;
 
   /**
    * 奖项数量

+ 23 - 6
mp-service/src/main/java/com/qs/mp/admin/service/impl/TicketBoxServiceImpl.java

@@ -27,6 +27,7 @@ import com.qs.mp.common.enums.TicketPkgStatusEnum;
 import com.qs.mp.common.enums.TicketPrizeTypeEnum;
 import com.qs.mp.common.enums.TicketStatusEnum;
 import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.utils.LogUtil;
 import com.qs.mp.system.service.id.BizIdGenerator;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -205,6 +206,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
         ticketPackageList.add(ticketPackage);
 
         List<PkgAwards> pkgAwardsList = pkgAwardsMap.get(key);
+        LogUtil.debug(logger, "第{0}包盲票奖项数量为{1}", new Object[]{pkgCnt, pkgAwardsList});
         List<Ticket> ticketList = new ArrayList<>();
         for (int j = 1; j <= pkgUnit; j++) {
           ticketCnt += 1;
@@ -215,6 +217,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
               iterator.remove();
             }
           }
+          LogUtil.debug(logger, "开始生成第{0}包、第{1}盲票", new Object[]{pkgCnt, j});
           int random = getPrizeIndex(pkgAwardsList);
           PkgAwards pkgAwards = pkgAwardsList.get(random);
           pkgAwards.setQuantity(pkgAwards.getQuantity() - 1);
@@ -266,11 +269,11 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
     for (PkgAwards p : prizes) {
       sumWeight += p.getQuantity();
     }
-
+    LogUtil.info(logger, "sumWeight:{0}", sumWeight);
     //产生随机数
     double randomNumber;
     randomNumber = Math.random();
-
+    LogUtil.debug(logger, "随机数:" + randomNumber);
     //根据随机数在所有奖品分布的区域并确定所抽奖品
     double d1 = 0;
     double d2 = 0;
@@ -281,12 +284,13 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
       } else {
         d1 += Double.parseDouble(String.valueOf(prizes.get(i - 1).getQuantity())) / sumWeight;
       }
+      LogUtil.debug(logger, "prize:{0},区间 d1:{1}, d2:{2}", new Object[]{JSONObject.toJSONString(prizes.get(i)), d1, d2} );
       if (randomNumber > d1 && randomNumber <= d2) {
         random = i;
         break;
       }
     }
-
+    LogUtil.debug(logger, "抽中序号:{0}", new Object[]{random});
     return random;
   }
 
@@ -313,7 +317,7 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
   }
 
   @Data
-  private class PkgAwards {
+  private static class PkgAwards {
 
     private String awardsId;
 
@@ -325,18 +329,31 @@ public class TicketBoxServiceImpl extends ServiceImpl<TicketBoxMapper, TicketBox
     /**
      * 奖项顺序
      */
-    private String sort;
+    private Integer sort;
 
     /**
      * 奖项数量
      */
     private Integer quantity;
 
-    PkgAwards(String awardsId, String name, String sort, Integer quantity) {
+    PkgAwards(String awardsId, String name, Integer sort, Integer quantity) {
       this.awardsId = awardsId;
       this.name = name;
       this.sort = sort;
       this.quantity = quantity;
     }
   }
+
+  public static void main(String[] args) {
+    List<PkgAwards> prizes = new ArrayList<>();
+    prizes.add(new PkgAwards("1", "一等奖", 1, 1));
+    prizes.add(new PkgAwards("2", "二等奖", 2, 2));
+    prizes.add(new PkgAwards("3", "三等奖", 3, 3));
+    prizes.add(new PkgAwards("4", "四等奖", 4, 4));
+    TicketBoxServiceImpl boxService = new TicketBoxServiceImpl();
+    for (int i = 0 ; i < 10; i ++ ) {
+      int random = boxService.getPrizeIndex(prizes);
+      System.out.println(random);
+    }
+  }
 }