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

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

Mp server test

See merge request quanshu/mp-server!310
zhong chunping 3 éve
szülő
commit
f2a3605648

+ 1 - 1
mp-admin/src/main/java/com/qs/mp/web/controller/api/callback/PayCallBackController.java

@@ -45,7 +45,7 @@ public class PayCallBackController {
     String orderNo =  request.getParameter("orderNo");
     if(!"121.196.180.137".equalsIgnoreCase(ipAddress)){
       //暂时增加机器人告警,防止三方服务器ip变更信息同步不到位,导致支付故障
-      WebhookService.sendMonitorData("【三方支付请求IP异常】{"+ipAddress+"} 订单号:"+orderNo);
+      WebhookService.sendLogAlertMsg("【三方支付请求IP异常】{"+ipAddress+"} 订单号:"+orderNo);
     }
     String orderStatus =  request.getParameter("orderStatus");
     String shopOrderNo =  request.getParameter("shopOrderNo");

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

@@ -123,7 +123,7 @@ public class ChannelController extends BaseApiController {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 		if(!parentlId.equals(queryChannel.getParentId())) {
-			return AjaxResult.error("非当前用户的子渠道,查询失败");
+			return AjaxResult.error("非当前用户的下级,查询失败");
 		}
 	    BeanUtils.copyProperties(queryChannel, channelVO);
 	    // 查询今日的销售额、佣金收入、新增用户数
@@ -141,7 +141,7 @@ public class ChannelController extends BaseApiController {
 	@PostMapping("subchannel/create")
 	public AjaxResult channelCreate(@Validated @RequestBody ChannelParam channelParam) {
 		if (channelParam.getChannelId() != null && channelParam.getChannelId() != 0) {
-			return AjaxResult.error("该渠道已存在");
+			return AjaxResult.error("该代理已存在");
 		}
 		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 		Channel channel = mapperFacade.map(channelParam, Channel.class);
@@ -152,7 +152,7 @@ public class ChannelController extends BaseApiController {
 		queryWrapper.gt(Channel::getLevel, 0);
 		int nameCount = channelService.count(queryWrapper);
 		if(nameCount > 0) {
-			return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");
+			return AjaxResult.error("代理名称" + channel.getName() + "已存在!");
 		}
 		int mobileCount = channelService.count(
 		        new LambdaQueryWrapper<Channel>().eq(Channel::getMobile, channel.getMobile()));
@@ -163,7 +163,7 @@ public class ChannelController extends BaseApiController {
 		Channel parentChannel = channelService.getById(channel.getParentId());
 		if(null != parentChannel && null != parentChannel.getCommRate()) {
 			 if(channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+				 return AjaxResult.error("佣金比例不能高于上级代理的佣金比例");
 			 }
 		}
 		channel.setLevel(parentChannel.getLevel()+1);
@@ -172,10 +172,10 @@ public class ChannelController extends BaseApiController {
 		try {
 			channelService.saveChannel(channel, ChannelRoleEnum.CHANNEL);
 		} catch (Exception e) {
-			return AjaxResult.error("渠道'" + channel.getName() + "'新增失败" + e.getMessage());
+			return AjaxResult.error("代理'" + channel.getName() + "'新增失败" + e.getMessage());
 		}
 
-		return AjaxResult.success("渠道'" + channel.getName() + "'新增成功");
+		return AjaxResult.success("代理'" + channel.getName() + "'新增成功");
 	}
 
 	/**
@@ -194,11 +194,11 @@ public class ChannelController extends BaseApiController {
 		// 1、校验修改子渠道是否为当前用户的子渠道
 		Channel oldChannel = channelService.getById(channel.getChannelId());
 		if(null == oldChannel || null == oldChannel.getChannelId()) {
-			return AjaxResult.error("渠道'" + oldChannel.getName() + "'编辑失败,渠道ID异常");
+			return AjaxResult.error("代理'" + oldChannel.getName() + "'编辑失败");
 		}
 		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 		if(!oldChannel.getParentId().equals(channelId)) {
-			return AjaxResult.error("渠道'" + oldChannel.getName() + "'编辑失败,非当前用户子渠道");
+			return AjaxResult.error("代理'" + oldChannel.getName() + "'编辑失败");
 		}
 		// 2.校验名称是否重复、手机号是否存在(渠道表);
 		if(!channel.getName().equals(oldChannel.getName())) {
@@ -207,7 +207,7 @@ public class ChannelController extends BaseApiController {
 			queryWrapper.gt(Channel::getLevel, 0);
 			int nameCount = channelService.count(queryWrapper);
 			if(nameCount > 0) {
-				return AjaxResult.error("渠道名称" + channel.getName() + "已存在!");
+				return AjaxResult.error("代理名称" + channel.getName() + "已存在!");
 			}
 		}
 		boolean mobileChange = false;  // 手机号码是否有变更
@@ -226,7 +226,7 @@ public class ChannelController extends BaseApiController {
 		Channel parentChannel = channelService.getById(oldChannel.getParentId());
 		if(null != parentChannel && null != parentChannel.getCommRate()) {
 			 if(channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+				 return AjaxResult.error("佣金比例不能高于上级代理的佣金比例");
 			 }
 		}
 		// 查询子渠道的最大佣金比例
@@ -237,7 +237,7 @@ public class ChannelController extends BaseApiController {
 		if(null != map && map.containsKey("commRate")) {
 			BigDecimal commRate = new BigDecimal(map.get("commRate").toString());
 			if(!commRate.equals(BigDecimal.ZERO) && channel.getCommRate().compareTo(commRate) < 0) {
-				return AjaxResult.error("不能低于其子渠道的最大佣金比例");
+				return AjaxResult.error("不能低于其下级的最大佣金比例");
 			}
 		}
 		try {
@@ -246,7 +246,7 @@ public class ChannelController extends BaseApiController {
 		} catch (Exception e) {
 			return AjaxResult.error(e.getMessage());
 		}
-		return AjaxResult.success("渠道'" + channel.getName() + "'编辑成功");
+		return AjaxResult.success("代理'" + channel.getName() + "'编辑成功");
 	}
 
 
@@ -270,7 +270,7 @@ public class ChannelController extends BaseApiController {
 				return error(ErrorCodeEnum.ERROR_CODE_1001);
 			}
 			if(!channelId.equals(queryChannel.getParentId())) {
-				return AjaxResult.error("非当前用户的子渠道,查询失败");
+				return AjaxResult.error("非当前用户的下级,查询失败");
 			}
 			channelId = _channelId;
 		}
@@ -363,7 +363,7 @@ public class ChannelController extends BaseApiController {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 		if(!parentlId.equals(queryChannel.getParentId())) {
-			return AjaxResult.error("非当前用户的经销商,查询失败");
+			return AjaxResult.error("非当前用户的门店,查询失败");
 		}
 	    BeanUtils.copyProperties(queryChannel, channelVO);
 	    // 查询今日的销售额、佣金收入、新增用户数
@@ -381,7 +381,7 @@ public class ChannelController extends BaseApiController {
 	@PostMapping("site/create")
 	public AjaxResult siteCreate(@Validated @RequestBody ChannelParam channelParam) {
 		if (channelParam.getChannelId() != null && channelParam.getChannelId() != 0) {
-			return AjaxResult.error("该经销商已存在");
+			return AjaxResult.error("该门店已存在");
 		}
 		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 
@@ -393,7 +393,7 @@ public class ChannelController extends BaseApiController {
 		queryWrapper.eq(Channel::getLevel, 0);
 		int nameCount = channelService.count(queryWrapper);
 		if(nameCount > 0) {
-			return AjaxResult.error("经销商名称" + channel.getName() + "已存在!");
+			return AjaxResult.error("门店名称" + channel.getName() + "已存在!");
 		}
 		int mobileCount = channelService.count(
 		        new LambdaQueryWrapper<Channel>().eq(Channel::getMobile, channel.getMobile()));
@@ -404,7 +404,7 @@ public class ChannelController extends BaseApiController {
 		Channel parentChannel = channelService.getById(channel.getParentId());
 		if(null != parentChannel && null != parentChannel.getCommRate()) {
 			 if(channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+				 return AjaxResult.error("佣金比例不能高于上级代理的佣金比例");
 			 }
 		}
 		channel.setLevel(0);
@@ -413,9 +413,9 @@ public class ChannelController extends BaseApiController {
 		try {
 			channelService.saveChannel(channel,ChannelRoleEnum.SALESITE);
 		} catch (Exception e) {
-			return AjaxResult.error("经销商'" + channel.getName() + "'新增失败"+e.getMessage());
+			return AjaxResult.error("门店'" + channel.getName() + "'新增失败"+e.getMessage());
 		}
-		return AjaxResult.success("经销商'" + channel.getName() + "'新增成功");
+		return AjaxResult.success("门店'" + channel.getName() + "'新增成功");
 	}
 
 	/**
@@ -435,11 +435,11 @@ public class ChannelController extends BaseApiController {
 		// 1、校验修改子渠道是否为当前用户的子渠道
 		Channel oldChannel = channelService.getById(channel.getChannelId());
 		if(null == oldChannel || null == oldChannel.getChannelId()) {
-			return AjaxResult.error("经销商'" + oldChannel.getName() + "'编辑失败,渠道ID异常");
+			return AjaxResult.error("门店'" + oldChannel.getName() + "'编辑失败");
 		}
 		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 		if(!oldChannel.getParentId().equals(channelId)) {
-			return AjaxResult.error("经销商'" + oldChannel.getName() + "'编辑失败,非当前用户子渠道");
+			return AjaxResult.error("门店'" + oldChannel.getName() + "'编辑失败");
 		}
 		// 2.校验名称是否重复、手机号是否存在(渠道表);
 		if(!channel.getName().equals(oldChannel.getName())) {
@@ -449,7 +449,7 @@ public class ChannelController extends BaseApiController {
 			queryWrapper.eq(Channel::getLevel, 0);
 			int nameCount = channelService.count(queryWrapper);
 			if(nameCount > 0) {
-				return AjaxResult.error("经销商名称" + channel.getName() + "已存在!");
+				return AjaxResult.error("门店名称" + channel.getName() + "已存在!");
 			}
 		}
 		boolean mobileChange = false;  // 手机号码是否有变更
@@ -468,16 +468,16 @@ public class ChannelController extends BaseApiController {
 		Channel parentChannel = channelService.getById(oldChannel.getParentId());
 		if(null != parentChannel && null != parentChannel.getCommRate()) {
 			 if(channel.getCommRate().compareTo(parentChannel.getCommRate()) > 0) {
-				 return AjaxResult.error("佣金比例不能高于父渠道的佣金比例");
+				 return AjaxResult.error("佣金比例不能高于上级代理的佣金比例");
 			 }
 		}
 		try {
 			channel.setUserId(oldChannel.getUserId());
 			channelService.updateChannel(channel, mobileChange);
 		} catch (Exception e) {
-			return AjaxResult.error("经销商'" + channel.getName() + "'编辑失败");
+			return AjaxResult.error("门店'" + channel.getName() + "'编辑失败");
 		}
-		return AjaxResult.success("经销商'" + channel.getName() + "'编辑成功");
+		return AjaxResult.success("门店'" + channel.getName() + "'编辑成功");
 	}
 
 
@@ -500,7 +500,7 @@ public class ChannelController extends BaseApiController {
 			return error(ErrorCodeEnum.ERROR_CODE_1001);
 		}
 		if(!parentlId.equals(queryChannel.getParentId())) {
-			return AjaxResult.error(queryChannel.getName() + "非当前用户的经销商, 认证审核失败");
+			return AjaxResult.error(queryChannel.getName() + "非当前用户的门店, 认证审核失败");
 		}
 		try {
 			if(channel.getVerifyStatus() == ChannelVerifyStatusEnum.ACCEPT) {
@@ -510,9 +510,9 @@ public class ChannelController extends BaseApiController {
 			}
 			channelService.updateById(channel);
 		} catch (Exception e) {
-			return AjaxResult.error("经销商'" + channel.getName() + "'认证审核失败");
+			return AjaxResult.error("门店'" + channel.getName() + "'认证审核失败");
 		}
-		return AjaxResult.success("经销商'" + channel.getName() + "'认证审核成功");
+		return AjaxResult.success("门店'" + channel.getName() + "'认证审核成功");
 	}
 
 	/**
@@ -532,9 +532,9 @@ public class ChannelController extends BaseApiController {
 			channel.setVerifyStatus(ChannelVerifyStatusEnum.WAIT);
 			channelService.updateById(channel);
 		} catch (Exception e) {
-			return AjaxResult.error("经销商'" + channel.getName() + "'提交认证信息失败");
+			return AjaxResult.error("门店'" + channel.getName() + "'提交认证信息失败");
 		}
-		return AjaxResult.success("经销商'" + channel.getName() + "'提交认证信息成功");
+		return AjaxResult.success("门店'" + channel.getName() + "'提交认证信息成功");
 	}
 
 
@@ -596,8 +596,8 @@ public class ChannelController extends BaseApiController {
 		}
 		return AjaxResult.success(channelVO);
 	}
-	
-	
+
+
 	/**
 	 * 场景是这里要显示待审核数量
 	 *

+ 9 - 0
mp-admin/src/test/java/com/qs/mp/service/ServiceImplTest.java

@@ -3,6 +3,7 @@ package com.qs.mp.service;
 import com.qs.mp.MpApplication;
 import com.qs.mp.admin.service.ITicketBoxSerialService;
 import com.qs.mp.framework.service.IWxUrlLinkService;
+import com.qs.mp.quartz.task.DayStatTask;
 import com.qs.mp.quartz.task.TicketBoxTask;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
@@ -34,6 +35,9 @@ public class ServiceImplTest {
   @Autowired
   private TicketBoxTask ticketBoxTask;
 
+  @Autowired
+  private DayStatTask dayStatTask;
+
   @Test
   public void testGenerateQrCode() {
     System.out.println(wxUrlLinkService.generateCode("pages/index/index", "id=1", "wxc3a684f1196f6e15"));
@@ -71,6 +75,11 @@ public class ServiceImplTest {
 
   }
 
+  @Test
+  public void testDayStat() {
+    dayStatTask.stat(null);
+  }
+
 
   public static void main(String[] args) {
     /*int n = 500;

+ 4 - 0
mp-common/src/main/java/com/qs/mp/common/enums/TicketTypeEnum.java

@@ -29,6 +29,10 @@ public enum TicketTypeEnum implements IEnum<String> {
     return value;
   }
 
+  public String getDesc() {
+    return desc;
+  }
+
   /**
    * 重写toString,单个转化成json
    * @return

+ 11 - 1
mp-common/src/main/java/com/qs/mp/common/utils/WebhookService.java

@@ -68,12 +68,22 @@ public class WebhookService {
         return OkHttpUtil.post(url, jsonStr, null);
     }
 
+    /**
+     * 系统监控
+     * @param msg
+     * @return
+     */
     public static String sendLogAlertMsg(String msg) {
 
         return sendWXRobot(wxLogMonitorUrl,msg);
     }
 
-    public static String sendMonitorData(String msg){
+    /**
+     * 业务通知
+     * @param msg
+     * @return
+     */
+    public static String sendBizData(String msg){
         if (ServerEnvEnum.PROD.getCode().equals(env)){
             return sendWXRobot(wxRobotUrl,msg);
         }

+ 196 - 0
mp-quartz/src/main/java/com/qs/mp/quartz/task/DayStatTask.java

@@ -0,0 +1,196 @@
+package com.qs.mp.quartz.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qs.mp.admin.domain.TicketBox;
+import com.qs.mp.admin.service.ITicketBoxService;
+import com.qs.mp.channel.domain.Channel;
+import com.qs.mp.channel.domain.ChannelCommission;
+import com.qs.mp.channel.domain.ChannelWithdraw;
+import com.qs.mp.channel.service.IChannelCommissionService;
+import com.qs.mp.channel.service.IChannelService;
+import com.qs.mp.channel.service.IChannelWithdrawService;
+import com.qs.mp.common.enums.CoinLogTypeEnum;
+import com.qs.mp.common.enums.TicketBoxStatusEnum;
+import com.qs.mp.common.enums.TicketTypeEnum;
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
+import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.common.utils.StringUtils;
+import com.qs.mp.common.utils.WebhookService;
+import com.qs.mp.system.domain.SysUser;
+import com.qs.mp.system.service.ISysUserService;
+import com.qs.mp.user.domain.UserCoinLog;
+import com.qs.mp.user.domain.UserExchangeOrder;
+import com.qs.mp.user.domain.UserTicketOrder;
+import com.qs.mp.user.service.IUserCoinLogService;
+import com.qs.mp.user.service.IUserExchangeOrderService;
+import com.qs.mp.user.service.IUserTicketOrderService;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 日统计任务
+ *
+ * @author zhongcp
+ * @Date 2022/3/17
+ */
+@Component("dayStatTask")
+public class DayStatTask {
+
+  protected final Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
+
+  @Autowired
+  private ISysUserService sysUserService;
+
+  @Autowired
+  private IChannelService channelService;
+
+  @Autowired
+  private ITicketBoxService ticketBoxService;
+
+  @Autowired
+  private IUserTicketOrderService userTicketOrderService;
+
+  @Autowired
+  private IChannelCommissionService channelCommissionService;
+
+  @Autowired
+  private IChannelWithdrawService channelWithdrawService;
+
+  @Autowired
+  private IUserExchangeOrderService userExchangeOrderService;
+
+  @Autowired
+  private IUserCoinLogService userCoinLogService;
+
+  @Value("${export.page-size}")
+  private int pageSize;
+
+  /**
+   * 日统计任务 2022.04.02 代理:xxx 门店:xxx 用户:xxx =============== 票组名字|线上(面值),销售:¥0.00 票组名字|线上(面值),销售:¥0.00
+   * 总销售额:¥0.00 累计分佣:¥0.00 累计提现:¥0.00 兑换订单:5689 派发盲豆:8880 兑换盲豆:6666
+   */
+  public void stat(String executeDay) {
+    LogUtil.info(logger, "...日统计定时任务开始...");
+    Date bizDay;
+    if (StringUtils.isNotBlank(executeDay)) {
+      bizDay = DateUtils.parseStrToDate(executeDay, DateUtils.YYYYMMDD);
+    } else {
+      bizDay = DateUtils.addDays(DateUtils.getToday(), -1);
+    }
+    StringBuilder sb = new StringBuilder();
+    sb.append(DateUtils.dateTime(bizDay)).append("\n");
+    int channelCnt = channelService.count(new LambdaQueryWrapper<Channel>().gt(Channel::getLevel, 0)
+        .ge(Channel::getCreatedTime, bizDay)
+        .lt(Channel::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    sb.append("新增代理:").append(channelCnt).append("\n");
+    int siteCnt = channelService.count(new LambdaQueryWrapper<Channel>().eq(Channel::getLevel, 0)
+        .ge(Channel::getCreatedTime, bizDay)
+        .lt(Channel::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    sb.append("新增门店:").append(siteCnt).append("\n");
+    int userCnt = sysUserService.count(new LambdaQueryWrapper<SysUser>()
+        .ge(SysUser::getCreateTime, bizDay)
+        .lt(SysUser::getCreateTime, DateUtils.addDays(bizDay, 1)));
+    sb.append("新增用户:").append(userCnt - siteCnt - channelCnt).append("\n");
+    sb.append("===================\n");
+
+    LambdaQueryWrapper<TicketBox> queryWrapper = new LambdaQueryWrapper<TicketBox>()
+        .nested(wrapper -> {
+          wrapper.eq(TicketBox::getType, TicketTypeEnum.ONLINE).eq(TicketBox::getStatus,
+              TicketBoxStatusEnum.PUT_ON).or().eq(TicketBox::getType, TicketTypeEnum.OFFLINE);
+        })
+        .notLike(TicketBox::getTitle, "测试票")
+        .eq(TicketBox::getIsDeleted, 0);
+
+    int totalSize = ticketBoxService.count(queryWrapper);
+    int totalPage = 1;
+    if (totalSize > pageSize) {
+      totalPage = totalSize % pageSize == 0 ? totalSize / pageSize : totalSize / pageSize + 1;
+    }
+    BigDecimal sumSaleAmt = BigDecimal.ZERO;
+    for (int i = 0; i < totalPage; i++) {
+      queryWrapper.orderByAsc(TicketBox::getBoxNo);
+      queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
+      List<TicketBox> ticketBoxList = ticketBoxService.list(queryWrapper);
+      for (TicketBox ticketBox : ticketBoxList) {
+        Map<String, Object> orderMap = userTicketOrderService.getMap(
+            new QueryWrapper<UserTicketOrder>()
+                .select("IFNULL(sum(pay_amt) ,0) as orderAmt")
+                .lambda().eq(UserTicketOrder::getBoxId, ticketBox.getBoxId())
+                .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
+                .ge(UserTicketOrder::getCreatedTime, bizDay)
+                .lt(UserTicketOrder::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+        if (null != orderMap) {
+          BigDecimal orderAmt = new BigDecimal(
+              Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
+              2, RoundingMode.DOWN);
+          sumSaleAmt = sumSaleAmt.add(orderAmt);
+          sb.append(ticketBox.getTitle()).append("|").append(ticketBox.getType().getDesc())
+              .append("(").append(
+                  new BigDecimal(ticketBox.getSalePrice()).divide(new BigDecimal(100), 2,
+                      RoundingMode.DOWN)).append("元),销售额:")
+              .append(orderAmt).append("元\n");
+        }
+      }
+    }
+    sb.append("总销售额:").append(sumSaleAmt).append("元\n");
+
+    Map<String, Object> commMap = channelCommissionService.getMap(
+        new QueryWrapper<ChannelCommission>()
+            .select("IFNULL(sum(comm_amt) ,0) as commAmt")
+            .lambda().ge(ChannelCommission::getCreatedTime, bizDay)
+            .lt(ChannelCommission::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    if (null != commMap) {
+      sb.append("累计分佣:").append(
+          new BigDecimal(Integer.valueOf(String.valueOf(commMap.get("commAmt")))).divide(
+              new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
+    }
+
+    Map<String, Object> withdrawMap = channelWithdrawService.getMap(
+        new QueryWrapper<ChannelWithdraw>()
+            .select("IFNULL(sum(money) ,0) as withdrawAmt")
+            .lambda().ge(ChannelWithdraw::getCreateTime, bizDay)
+            .lt(ChannelWithdraw::getCreateTime, DateUtils.addDays(bizDay, 1)));
+    if (null != withdrawMap) {
+      sb.append("累计提现:").append(
+          new BigDecimal(Integer.valueOf(String.valueOf(withdrawMap.get("withdrawAmt")))).divide(
+              new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
+    }
+
+    int exCnt = userExchangeOrderService.count(new LambdaQueryWrapper<UserExchangeOrder>()
+        .ge(UserExchangeOrder::getCreatedTime, bizDay)
+        .lt(UserExchangeOrder::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    sb.append("兑换订单:").append(exCnt).append("个\n");
+
+    Map<String, Object> deliverMap = userCoinLogService.getMap(new QueryWrapper<UserCoinLog>()
+        .select("IFNULL(sum(log_money) ,0) as deliverAmt")
+        .lambda().eq(UserCoinLog::getType, CoinLogTypeEnum.PRIZE)
+        .ge(UserCoinLog::getCreatedTime, bizDay)
+        .lt(UserCoinLog::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    if (null != withdrawMap) {
+      sb.append("派发盲豆:").append(Integer.valueOf(String.valueOf(deliverMap.get("deliverAmt"))))
+          .append("颗\n");
+    }
+
+    Map<String, Object> exchangeMap = userCoinLogService.getMap(new QueryWrapper<UserCoinLog>()
+        .select("IFNULL(sum(log_money) ,0) as exchangeAmt")
+        .lambda().eq(UserCoinLog::getType, CoinLogTypeEnum.EXCHANGE)
+        .ge(UserCoinLog::getCreatedTime, bizDay)
+        .lt(UserCoinLog::getCreatedTime, DateUtils.addDays(bizDay, 1)));
+    if (null != withdrawMap) {
+      sb.append("兑换盲豆:").append(0 - Integer.valueOf(String.valueOf(exchangeMap.get("exchangeAmt"))))
+          .append("颗\n");
+    }
+    WebhookService.sendBizData(sb.toString());
+    LogUtil.info(logger, "...日统计任务结束..." );
+  }
+}

+ 8 - 0
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelWithdrawServiceImpl.java

@@ -17,6 +17,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.common.enums.ChannelMoneyEnum;
 import com.qs.mp.common.enums.ChannelWithdrawStatusEnum;
 import com.qs.mp.common.utils.LogUtil;
+import com.qs.mp.common.utils.WebhookService;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -87,6 +90,11 @@ public class ChannelWithdrawServiceImpl extends ServiceImpl<ChannelWithdrawMappe
       feeMoneyLog.setRefId(String.valueOf(channelWithdraw.getId()));
       channelMoneyLogService.changeMoney(feeMoneyLog);
     }
+    StringBuilder sb = new StringBuilder();
+    sb.append("提现申请\n");
+    sb.append("申请人:").append(channel.getName()).append("\n");
+    sb.append("提现金额:").append(new BigDecimal(channelWithdraw.getMoney()).divide(new BigDecimal(100), 2, RoundingMode.DOWN)).append("元\n");
+    WebhookService.sendBizData(sb.toString());
     // 创建提现记录
     return rst;
   }

+ 16 - 14
mp-service/src/main/java/com/qs/mp/system/mapper/SysUserMapper.java

@@ -1,19 +1,21 @@
 package com.qs.mp.system.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.channel.domain.ChannelUserRel;
 import com.qs.mp.system.domain.SysUser;
 import java.util.List;
 import org.apache.ibatis.annotations.Param;
 
 /**
  * 用户表 数据层
- * 
+ *
  * @author ygp
  */
-public interface SysUserMapper
+public interface SysUserMapper  extends BaseMapper<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param sysUser 用户信息
      * @return 用户信息集合信息
      */
@@ -21,7 +23,7 @@ public interface SysUserMapper
 
     /**
      * 根据条件分页查询未已配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -29,7 +31,7 @@ public interface SysUserMapper
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -46,7 +48,7 @@ public interface SysUserMapper
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -54,7 +56,7 @@ public interface SysUserMapper
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -62,7 +64,7 @@ public interface SysUserMapper
 
     /**
      * 新增用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -70,7 +72,7 @@ public interface SysUserMapper
 
     /**
      * 修改用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -78,7 +80,7 @@ public interface SysUserMapper
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userName 用户名
      * @param avatar 头像地址
      * @return 结果
@@ -87,7 +89,7 @@ public interface SysUserMapper
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userName 用户名
      * @param password 密码
      * @return 结果
@@ -96,7 +98,7 @@ public interface SysUserMapper
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -104,7 +106,7 @@ public interface SysUserMapper
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
@@ -112,7 +114,7 @@ public interface SysUserMapper
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param userName 用户名称
      * @return 结果
      */

+ 26 - 24
mp-service/src/main/java/com/qs/mp/system/service/ISysUserService.java

@@ -1,18 +1,20 @@
 package com.qs.mp.system.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.channel.domain.ChannelBankCard;
 import com.qs.mp.system.domain.SysUser;
 import java.util.List;
 
 /**
  * 用户 业务层
- * 
+ *
  * @author ygp
  */
-public interface ISysUserService
+public interface ISysUserService  extends IService<SysUser>
 {
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -20,7 +22,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -28,7 +30,7 @@ public interface ISysUserService
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -44,7 +46,7 @@ public interface ISysUserService
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -52,7 +54,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -60,7 +62,7 @@ public interface ISysUserService
 
     /**
      * 根据用户ID查询用户所属角色组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -68,7 +70,7 @@ public interface ISysUserService
 
     /**
      * 根据用户ID查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -76,7 +78,7 @@ public interface ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param userName 用户名称
      * @return 结果
      */
@@ -100,21 +102,21 @@ public interface ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     public void checkUserAllowed(SysUser user);
 
     /**
      * 校验用户是否有数据权限
-     * 
+     *
      * @param userId 用户id
      */
     public void checkUserDataScope(Long userId);
 
     /**
      * 新增用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -122,7 +124,7 @@ public interface ISysUserService
 
     /**
      * 注册用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -130,7 +132,7 @@ public interface ISysUserService
 
     /**
      * 修改用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -138,7 +140,7 @@ public interface ISysUserService
 
     /**
      * 用户授权角色
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
@@ -146,7 +148,7 @@ public interface ISysUserService
 
     /**
      * 修改用户状态
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -154,7 +156,7 @@ public interface ISysUserService
 
     /**
      * 修改用户基本信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -162,7 +164,7 @@ public interface ISysUserService
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userName 用户名
      * @param avatar 头像地址
      * @return 结果
@@ -179,7 +181,7 @@ public interface ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -187,7 +189,7 @@ public interface ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userName 用户名
      * @param password 密码
      * @return 结果
@@ -196,7 +198,7 @@ public interface ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -204,7 +206,7 @@ public interface ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
@@ -212,7 +214,7 @@ public interface ISysUserService
 
     /**
      * 导入用户数据
-     * 
+     *
      * @param userList 用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @param operName 操作用户

+ 30 - 27
mp-service/src/main/java/com/qs/mp/system/service/impl/SysUserServiceImpl.java

@@ -1,5 +1,8 @@
 package com.qs.mp.system.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.qs.mp.channel.domain.ChannelBankCard;
+import com.qs.mp.channel.mapper.ChannelBankCardMapper;
 import com.qs.mp.common.annotation.DataScope;
 import com.qs.mp.common.constant.UserConstants;
 import com.qs.mp.common.exception.ServiceException;
@@ -28,11 +31,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 用户 业务层处理
- * 
+ *
  * @author ygp
  */
 @Service
-public class SysUserServiceImpl implements ISysUserService
+public class SysUserServiceImpl  extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService
 {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
@@ -56,7 +59,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询用户列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -69,7 +72,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询已分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -82,7 +85,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 根据条件分页查询未分配用户角色列表
-     * 
+     *
      * @param user 用户信息
      * @return 用户信息集合信息
      */
@@ -100,7 +103,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户名查询用户
-     * 
+     *
      * @param userName 用户名
      * @return 用户对象信息
      */
@@ -112,7 +115,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户ID查询用户
-     * 
+     *
      * @param userId 用户ID
      * @return 用户对象信息
      */
@@ -124,7 +127,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 查询用户所属角色组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -146,7 +149,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 查询用户所属岗位组
-     * 
+     *
      * @param userName 用户名
      * @return 结果
      */
@@ -168,7 +171,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户名称是否唯一
-     * 
+     *
      * @param userName 用户名称
      * @return 结果
      */
@@ -221,7 +224,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户是否允许操作
-     * 
+     *
      * @param user 用户信息
      */
     @Override
@@ -235,7 +238,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 校验用户是否有数据权限
-     * 
+     *
      * @param userId 用户id
      */
     @Override
@@ -255,7 +258,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -274,7 +277,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 注册用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -286,7 +289,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改保存用户信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -308,7 +311,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 用户授权角色
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
@@ -322,7 +325,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户状态
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -334,7 +337,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户基本信息
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -346,7 +349,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 修改用户头像
-     * 
+     *
      * @param userName 用户名
      * @param avatar 头像地址
      * @return 结果
@@ -364,7 +367,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param user 用户信息
      * @return 结果
      */
@@ -376,7 +379,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 重置用户密码
-     * 
+     *
      * @param userName 用户名
      * @param password 密码
      * @return 结果
@@ -389,7 +392,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户角色信息
-     * 
+     *
      * @param user 用户对象
      */
     public void insertUserRole(SysUser user)
@@ -415,7 +418,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户岗位信息
-     * 
+     *
      * @param user 用户对象
      */
     public void insertUserPost(SysUser user)
@@ -441,7 +444,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 新增用户角色信息
-     * 
+     *
      * @param userId 用户ID
      * @param roleIds 角色组
      */
@@ -467,7 +470,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 通过用户ID删除用户
-     * 
+     *
      * @param userId 用户ID
      * @return 结果
      */
@@ -484,7 +487,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 批量删除用户信息
-     * 
+     *
      * @param userIds 需要删除的用户ID
      * @return 结果
      */
@@ -505,7 +508,7 @@ public class SysUserServiceImpl implements ISysUserService
 
     /**
      * 导入用户数据
-     * 
+     *
      * @param userList 用户数据列表
      * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据
      * @param operName 操作用户