فهرست منبع

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

Mp server test

See merge request quanshu/mp-server!705
zhong chunping 2 سال پیش
والد
کامیت
d7a8f3c3e9

+ 15 - 6
mp-admin/src/main/java/com/qs/mp/web/controller/api/admin/IndexMgrController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.param.IndexQueryParam;
 import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
+import com.qs.mp.admin.domain.param.IndexTicketSiteTopQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.channel.domain.Channel;
 import com.qs.mp.channel.domain.ChannelOrder;
@@ -753,11 +754,11 @@ public class IndexMgrController extends BaseApiController {
 
 		IndexQueryParam queryParam = getQueryParam(indeQueryParam);
 		List<IndexVO> list = new ArrayList<IndexVO>();
-		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
-		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
-		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
-		queryWrapper.gt("t1.`status`", 0);
-		queryWrapper.isNotNull("t1.channel_id");
+//		QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();
+//		queryWrapper.ge(null != queryParam && null != queryParam.getStartTime(), "t1.created_time", queryParam.getStartTime());
+//		queryWrapper.le(null != queryParam && null != queryParam.getEndTime(), "t1.created_time", queryParam.getEndTime());
+//		queryWrapper.gt("t1.`status`", 0);
+//		queryWrapper.isNotNull("t1.channel_id");
 
 //		Long channelId = SecurityUtils.getLoginUser().getChannelId();
 //		if(null != channelId && 0 != channelId) {
@@ -769,7 +770,15 @@ public class IndexMgrController extends BaseApiController {
 //			}
 //		}
 
-		list = userTicketOrderService.selectIndexTicketSiteTop(queryWrapper);
+		IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam = new IndexTicketSiteTopQueryParam();
+		indexTicketSiteTopQueryParam.setStartTime(queryParam.getStartTime());
+		indexTicketSiteTopQueryParam.setEndTime(queryParam.getEndTime());
+		indexTicketSiteTopQueryParam.setTicketOrderStatus(0);
+		indexTicketSiteTopQueryParam.setChannelOrderStatus(0);
+		indexTicketSiteTopQueryParam.setChannelOrderType(1);
+		list = userTicketOrderService.selectIndexTicketSiteTopByTicketOrderAndChannelOrder(indexTicketSiteTopQueryParam);
+
+//		list = userTicketOrderService.selectIndexTicketSiteTop(queryWrapper);
 		List<Map<String,Object>> mapList = new ArrayList<>();
 		if(null != list && list.size() > 0) {
 			for(IndexVO indexVo : list) {

+ 7 - 0
mp-common/pom.xml

@@ -22,6 +22,13 @@
 
     <dependencies>
 
+        <!--dingtalk-->
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>alibaba-dingtalk-service-sdk</artifactId>
+            <version>2.0.0</version>
+        </dependency>
+
         <!-- redisson -->
         <dependency>
             <groupId>org.redisson</groupId>

+ 16 - 8
mp-common/src/main/java/com/qs/mp/common/utils/WebhookService.java

@@ -1,19 +1,26 @@
 package com.qs.mp.common.utils;
 
 import com.alibaba.fastjson.JSON;
+import com.dingtalk.api.DefaultDingTalkClient;
+import com.dingtalk.api.DingTalkClient;
+import com.dingtalk.api.request.OapiRobotSendRequest;
+import com.dingtalk.api.response.OapiRobotSendResponse;
 import com.qs.mp.common.enums.ServerEnvEnum;
 import com.qs.mp.common.utils.http.OkHttpUtil;
+import com.taobao.api.ApiException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
+
 @Component
 public class WebhookService {
 
     private static Logger logger = LoggerFactory.getLogger(WebhookService.class);
-    //private String dingToken = "https://oapi.dingtalk.com/robot/send?access_token=a2f955b2c685e4449ac98fd4a41b9ba1238a6badb58aba4da9c6fc50714fc43d";
-    //final static String alertUrl = "https://oapi.dingtalk.com/robot/send?access_token=79bd929c6cdec2150dbd2d5fdb5b4a499c9ad8137da511eab85bc7d381af9d7a";
+//    private String dingToken = "https://oapi.dingtalk.com/robot/send?access_token=a2f955b2c685e4449ac98fd4a41b9ba1238a6badb58aba4da9c6fc50714fc43d";
+    final static String alertUrl = "https://oapi.dingtalk.com/robot/send?access_token=942c2e951c794fa9683acaad5b9be13e61224fd797093dd580cc65ca776977e7";
     //final static String url = "https://oapi.dingtalk.com/robot/send?access_token=a2f955b2c685e4449ac98fd4a41b9ba1238a6badb58aba4da9c6fc50714fc43d";
     final static String wxLogMonitorUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4275487c-8706-4676-ae21-e74db900fcb6";
 
@@ -24,10 +31,9 @@ public class WebhookService {
     public void setEnv(String serverEnv) {
         env = serverEnv;
     }
-    /*
-    public static void sendDing(String msg) {
+    /*public static void sendDing(String msg) {
         sendDing(url, msg, null);
-    }
+    }*/
 
     public static void sendAlertDing(String msg) {
         sendDing(alertUrl, msg, null);
@@ -53,7 +59,7 @@ public class WebhookService {
             logger.error("钉钉消息发送失败");
         }
 
-    }*/
+    }
 
 
     public static String sendWXRobot(String url , String msg) {
@@ -77,8 +83,10 @@ public class WebhookService {
      * @return
      */
     public static String sendLogAlertMsg(String msg) {
-
-        return sendWXRobot(wxLogMonitorUrl,msg);
+        // 钉钉机器人发送
+        sendAlertDing(msg);
+        return "success";
+//        return sendWXRobot(wxLogMonitorUrl,msg);
     }
 
     /**

+ 65 - 21
mp-quartz/src/main/java/com/qs/mp/quartz/task/DayStatTask.java

@@ -4,14 +4,8 @@ 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.ChannelCouponVerifyLog;
-import com.qs.mp.channel.domain.ChannelWithdraw;
-import com.qs.mp.channel.service.IChannelCommissionService;
-import com.qs.mp.channel.service.IChannelCouponVerifyLogService;
-import com.qs.mp.channel.service.IChannelService;
-import com.qs.mp.channel.service.IChannelWithdrawService;
+import com.qs.mp.channel.domain.*;
+import com.qs.mp.channel.service.*;
 import com.qs.mp.common.enums.ChannelWithdrawStatusEnum;
 import com.qs.mp.common.enums.CoinLogTypeEnum;
 import com.qs.mp.common.enums.CouponDiscountTypeEnum;
@@ -35,6 +29,8 @@ import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,6 +75,9 @@ public class DayStatTask {
   @Autowired
   private IChannelCouponVerifyLogService channelCouponVerifyLogService;
 
+  @Autowired
+  private IChannelOrderService channelOrderService;
+
   @Value("${export.page-size}")
   private int pageSize;
 
@@ -129,6 +128,9 @@ public class DayStatTask {
     }
     BigDecimal sumSaleAmt = BigDecimal.ZERO;
     BigDecimal sumAllSaleAmt = BigDecimal.ZERO;
+    // 预付的金额统计
+    BigDecimal sumPreSaleAmt = BigDecimal.ZERO;
+    BigDecimal sumAllPreSaleAmt = BigDecimal.ZERO;
     for (int i = 0; i < totalPage; i++) {
       queryWrapper.orderByAsc(TicketBox::getBoxNo);
       queryWrapper.last("limit " + (i * pageSize) + ", " + pageSize);
@@ -141,11 +143,30 @@ public class DayStatTask {
                 .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
                 .ge(UserTicketOrder::getPayTime, bizDay)
                 .lt(UserTicketOrder::getPayTime, 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);
+
+        // 预付的金额统计
+        QueryWrapper<ChannelOrder> channelOrderQueryWrapper = new QueryWrapper<>();
+        channelOrderQueryWrapper.eq("t2.box_id", ticketBox.getBoxId());
+        channelOrderQueryWrapper.gt("t1.type" , 1);
+        channelOrderQueryWrapper.gt("t1.status" , 0);
+        channelOrderQueryWrapper.ge("t1.pay_time" , bizDay);
+        channelOrderQueryWrapper.lt("t1.pay_time" , DateUtils.addDays(bizDay, 1));
+        int preSaleAmt = channelOrderService.selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper);
+
+
+        if (null != orderMap || preSaleAmt > 0) {
+          BigDecimal orderAmt = BigDecimal.ZERO;
+          if (Objects.nonNull(orderMap)) {
+            orderAmt = new BigDecimal(
+                    Integer.valueOf(String.valueOf(orderMap.get("orderAmt")))).divide(new BigDecimal(100),
+                    2, RoundingMode.DOWN);
+            sumSaleAmt = sumSaleAmt.add(orderAmt);
+          }
+
+
+          // 设置预付票金额
+          BigDecimal preOrderAmt = new BigDecimal(preSaleAmt).divide(new BigDecimal(100),2,RoundingMode.DOWN);
+          sumPreSaleAmt = sumPreSaleAmt.add(preOrderAmt);
 
           Map<String, Object> allOrderMap = userTicketOrderService.getMap(
               new QueryWrapper<UserTicketOrder>()
@@ -153,26 +174,49 @@ public class DayStatTask {
                   .lambda().eq(UserTicketOrder::getBoxId, ticketBox.getBoxId())
                   .eq(UserTicketOrder::getStatus, UserTicketOrderStatusEnum.FINISHED)
                   .lt(UserTicketOrder::getPayTime, DateUtils.addDays(bizDay, 1)));
-          BigDecimal allOrderAmt = new BigDecimal(
-              Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
-              2, RoundingMode.DOWN);
-          sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
+          BigDecimal allOrderAmt = BigDecimal.ZERO;
+          if (Objects.nonNull(allOrderMap)) {
+            allOrderAmt = new BigDecimal(
+                Integer.valueOf(String.valueOf(allOrderMap.get("orderAmt")))).divide(new BigDecimal(100),
+                2, RoundingMode.DOWN);
+            sumAllSaleAmt = sumAllSaleAmt.add(allOrderAmt);
+          }
+
+          // 预付累积金额
+          QueryWrapper<ChannelOrder> channelOrderQueryWrapper1 = new QueryWrapper<>();
+          channelOrderQueryWrapper1.eq("t2.box_id", ticketBox.getBoxId());
+          channelOrderQueryWrapper1.gt("t1.type" , 1);
+          channelOrderQueryWrapper1.gt("t1.status" , 0);
+          channelOrderQueryWrapper1.lt("t1.pay_time" , DateUtils.addDays(bizDay, 1));
+          int allPreSaleAmt = channelOrderService.selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper1);
+
+          // 设置预付票累积金额
+          BigDecimal allPreOrderAmt = new BigDecimal(allPreSaleAmt).divide(new BigDecimal(100),2,RoundingMode.DOWN);
+          sumAllPreSaleAmt = sumAllPreSaleAmt.add(allPreOrderAmt);
+
+
+
+
           // 只输出当日销量大于0的票组
-          if (orderAmt.compareTo(BigDecimal.ZERO) > 0) {
+          if (orderAmt.compareTo(BigDecimal.ZERO) > 0 || preOrderAmt.compareTo(BigDecimal.ZERO) > 0) {
             sbDetail.append(ticketBox.getTitle()).append("|").append(ticketBox.getType().getDesc())
                 .append("(").append(
                     new BigDecimal(ticketBox.getSalePrice()).divide(new BigDecimal(100), 2,
-                        RoundingMode.DOWN)).append("元),累计销售额:")
+                        RoundingMode.DOWN)).append("元),累计零售销售额:")
                 .append(allOrderAmt).append("元,当日:")
                 .append(orderAmt).append("元\n");
+
+            sbDetail.append("累计预付销售额:")
+                    .append(allPreOrderAmt).append("元,当日:")
+                    .append(preOrderAmt).append("元\n");
             sbDetail.append("------------------------\n");
           }
         }
       }
     }
 
-    sb.append("累计销售额:").append(sumAllSaleAmt).append("元,当日:").append(sumSaleAmt).append("元\n");
-
+    sb.append("累计零售销售额:").append(sumAllSaleAmt).append("元,当日:").append(sumSaleAmt).append("元\n");
+    sb.append("累计预付销售额:").append(sumAllPreSaleAmt).append("元,当日:").append(sumPreSaleAmt).append("元\n");
     Map<String, Object> commMap = channelCommissionService.getMap(
         new QueryWrapper<ChannelCommission>()
             .select("IFNULL(sum(comm_amt) ,0) as commAmt")

+ 31 - 0
mp-service/src/main/java/com/qs/mp/admin/domain/param/IndexTicketSiteTopQueryParam.java

@@ -0,0 +1,31 @@
+package com.qs.mp.admin.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Cup
+ * @date 2022/6/9
+ */
+@ApiModel("后台首页经销商盲票销售统计查询入参类")
+@Data
+public class IndexTicketSiteTopQueryParam {
+
+    @ApiModelProperty(value = "自定义开始时间",required=false)
+    private Date startTime;
+
+    @ApiModelProperty(value = "自定义截止时间",required=false)
+    private Date endTime;
+
+    @ApiModelProperty("盲票订单状态")
+    private Integer ticketOrderStatus;
+
+    @ApiModelProperty("经销商订单状态")
+    private Integer channelOrderStatus;
+
+    @ApiModelProperty("经销商订单类型")
+    private Integer channelOrderType;
+}

+ 6 - 0
mp-service/src/main/java/com/qs/mp/channel/mapper/ChannelOrderMapper.java

@@ -45,4 +45,10 @@ public interface ChannelOrderMapper extends BaseMapper<ChannelOrder> {
 	 */
     List<IndexVO> selectIndexChannelOrderDailyInfoList(@Param(Constants.WRAPPER) QueryWrapper<ChannelOrder> wrapper);
 
+	/**
+	 * 预付金额统计
+	 * @param channelOrderQueryWrapper
+	 * @return
+	 */
+    int selectPreSaleAmtByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<ChannelOrder> channelOrderQueryWrapper);
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/channel/service/IChannelOrderService.java

@@ -97,4 +97,10 @@ public interface IChannelOrderService extends IService<ChannelOrder> {
 	 */
 	List<IndexVO> selectIndexChannelOrderDailyInfoList(QueryWrapper<ChannelOrder> wrapper);
 
+	/**
+	 * 预付金额统计
+	 * @param channelOrderQueryWrapper
+	 * @return
+	 */
+    int selectPreSaleAmtByQueryWrapper(QueryWrapper<ChannelOrder> channelOrderQueryWrapper);
 }

+ 4 - 1
mp-service/src/main/java/com/qs/mp/channel/service/impl/ChannelOrderServiceImpl.java

@@ -410,5 +410,8 @@ public class ChannelOrderServiceImpl extends
         return getBaseMapper().selectIndexChannelOrderDailyInfoList(wrapper);
     }
 
-
+    @Override
+    public int selectPreSaleAmtByQueryWrapper(QueryWrapper<ChannelOrder> channelOrderQueryWrapper) {
+        return getBaseMapper().selectPreSaleAmtByQueryWrapper(channelOrderQueryWrapper);
+    }
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/UserTicketOrderMapper.java

@@ -2,6 +2,7 @@ package com.qs.mp.user.mapper;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
+import com.qs.mp.admin.domain.param.IndexTicketSiteTopQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
 import com.qs.mp.admin.domain.vo.UserTicketOrderDetailVO;
@@ -109,4 +110,12 @@ public interface UserTicketOrderMapper extends BaseMapper<UserTicketOrder> {
 	 * @return
 	 */
     List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(@Param("param") IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam );
+
+	/**
+	 * 统计经销商交易额
+	 * @param indexTicketSiteTopQueryParam
+	 * @return
+	 */
+    List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(@Param("param") IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam);
+
 }

+ 8 - 0
mp-service/src/main/java/com/qs/mp/user/service/IUserTicketOrderService.java

@@ -2,6 +2,7 @@ package com.qs.mp.user.service;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
+import com.qs.mp.admin.domain.param.IndexTicketSiteTopQueryParam;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.IndexVO;
 import com.qs.mp.admin.domain.vo.TicketCntVO;
@@ -165,4 +166,11 @@ public interface IUserTicketOrderService extends IService<UserTicketOrder> {
      * @return
      */
     List<IndexVO> selectIndexTicketBoxTopByTicketOrderAndChannelOrder(IndexTicketBoxTopQueryParam indexTicketBoxTopQueryParam );
+
+    /**
+     * 统计经销商交易额
+     * @param indexTicketSiteTopQueryParam
+     * @return
+     */
+    List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam);
 }

+ 6 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/UserTicketOrderServiceImpl.java

@@ -10,6 +10,7 @@ import com.qs.mp.admin.domain.Ticket;
 import com.qs.mp.admin.domain.TicketBox;
 import com.qs.mp.admin.domain.TicketPackage;
 import com.qs.mp.admin.domain.param.IndexTicketBoxTopQueryParam;
+import com.qs.mp.admin.domain.param.IndexTicketSiteTopQueryParam;
 import com.qs.mp.admin.domain.param.UserTicketOrderQueryParam;
 import com.qs.mp.admin.domain.vo.*;
 import com.qs.mp.admin.service.ITicketBoxService;
@@ -574,6 +575,11 @@ public class UserTicketOrderServiceImpl extends
     return getBaseMapper().selectIndexTicketBoxTopByTicketOrderAndChannelOrder(indexTicketBoxTopQueryParam);
   }
 
+  @Override
+  public List<IndexVO> selectIndexTicketSiteTopByTicketOrderAndChannelOrder(IndexTicketSiteTopQueryParam indexTicketSiteTopQueryParam) {
+    return getBaseMapper().selectIndexTicketSiteTopByTicketOrderAndChannelOrder(indexTicketSiteTopQueryParam);
+  }
+
   @Override
   public UserTicketOrderDetailVO detail(String orderId) {
     QueryWrapper<UserTicketOrder> queryWrapper = new QueryWrapper<>();

+ 6 - 0
mp-service/src/main/resources/mapper/channel/ChannelOrderMapper.xml

@@ -60,4 +60,10 @@
         group by time
     </select>
 
+    <select id="selectPreSaleAmtByQueryWrapper" resultType="int">
+        select IFNULL(sum(t1.pay_amt) ,0) as payAmt
+        from mp_channel_order t1
+         left join mp_channel_order_item t2 on t1.order_id = t2.order_id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 26 - 0
mp-service/src/main/resources/mapper/user/UserTicketOrderMapper.xml

@@ -208,4 +208,30 @@
 		ORDER BY payAmt DESC
 		limit 10
 	</select>
+
+    <select id="selectIndexTicketSiteTopByTicketOrderAndChannelOrder" resultType="com.qs.mp.admin.domain.vo.IndexVO">
+		select SUM(a.pay_amt) as payAmt, b.`name`
+		from
+			(select t1.channel_id,
+					SUM(t1.pay_amt) AS pay_amt
+			 from mp_user_ticket_order t1
+			 where t1.created_time between #{param.startTime} and #{param.endTime}
+			   and t1.status > #{param.ticketOrderStatus}
+			   and t1.channel_id is not null
+			 GROUP BY t1.channel_id
+
+			 union
+
+			 select a1.channel_id,
+					SUM(a1.pay_amt) as pay_amt
+			 from mp_channel_order a1
+			 where a1.created_time between #{param.startTime} and #{param.endTime}
+			   and a1.status > #{param.channelOrderStatus}
+			   and a1.type > #{param.channelOrderType}
+			 group by a1.channel_id) a
+				left join mp_channel b on a.channel_id = b.channel_id
+		group by a.channel_id,b.name
+		order by payAmt desc
+		limit 10;
+	</select>
 </mapper>