zoujiajian 3 gadi atpakaļ
vecāks
revīzija
c8f36ee18c

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java

@@ -27,4 +27,7 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 	void updateHasPaymentInterestRealGoodsPayTime();
 
 	Integer getTowPayUser(@Param("start") String start, @Param("end") String end);
+
+
+	Integer getCountByCorpUserTime(@Param("start") String start, @Param("end") String end);
 }

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpUserFollowRelationMapper.java

@@ -2,10 +2,16 @@ package com.cyksj.mapper.corp;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.CorpUserFollowRelation;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author chan
  * @date 2022/3/15 上午9:49
  */
 public interface CorpUserFollowRelationMapper extends BaseMapper<CorpUserFollowRelation> {
+
+
+	Integer selectCorpEqubeBytime(@Param("start") String start, @Param("end") String end);
+
+	Integer selectCorpAccountBytime(@Param("start") String start, @Param("end") String end);
 }

+ 22 - 0
netflix-dao/src/main/java/com/cyksj/model/excel/AppIdPayBeforeDataExcel.java

@@ -0,0 +1,22 @@
+package com.cyksj.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: AppIdPayBeforeDataExcel
+ *创建者: JavaZou
+ *创建时间:2023/2/1 18:12
+ */
+@Getter
+@Setter
+public class AppIdPayBeforeDataExcel {
+
+	@ExcelProperty("平台")
+	private String title;
+
+	@ExcelProperty("人数")
+	private Integer num;
+}

+ 31 - 0
netflix-dao/src/main/resources/mapper/CorpUserFollowRelationMapper.xml

@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.cyksj.mapper.corp.CorpUserFollowRelationMapper">
+
+
+    <select id="selectCorpEqubeBytime" resultType="java.lang.Integer">
+        select count(distinct s.id)
+        from (select u.id
+              from (select distinct cu.unionid
+                    from corp_user cu
+                             left join corp_user_follow_relation cr on cu.external_userid = cr.corp_user_id
+                             left join corp_user_tag ct on ct.relation_id = cr.id
+                    where ct.tag_name = '设备' and cu.unionid != '' and cu.created_time BETWEEN #{start} and #{end}) s
+                       left join user u on u.unionid = s.unionid
+              where u.unionid != '') s
+                 left join order_don od on od.user_id = s.id where od.status = 'complete' and od.pay_time BETWEEN #{start} and #{end}
+    </select>
+
+    <select id="selectCorpAccountBytime" resultType="java.lang.Integer">
+        select count(distinct s.id)
+        from (select u.id
+              from (select distinct cu.unionid
+                    from corp_user cu
+                             left join corp_user_follow_relation cr on cu.external_userid = cr.corp_user_id
+                             left join corp_user_tag ct on ct.relation_id = cr.id
+                    where ct.tag_name = '账号' and cu.unionid != '' and cu.created_time BETWEEN #{start} and #{end}) s
+                       left join user u on u.unionid = s.unionid
+              where u.unionid != '') s
+                 left join order_don od on od.user_id = s.id where od.status = 'complete' and od.pay_time BETWEEN #{start} and #{end}
+    </select>
+</mapper>

+ 10 - 0
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -89,4 +89,14 @@
               group by user_id
               having count(*) > 1)s
     </select>
+
+    <select id="getCountByCorpUserTime" resultType="java.lang.Integer">
+        select count(distinct s.id)
+        from (select u.id
+              from `corp_user` cu
+                       inner join user u on u.unionid = cu.unionid
+              where cu.created_time BETWEEN #{start} and #{end}) s
+                 left join order_don od on od.user_id = s.id
+        where od.status = 'complete'
+    </select>
 </mapper>

+ 64 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/statistics/StatisticsDataController.java

@@ -2,6 +2,7 @@ package com.cyksj.web.controller.manage.statistics;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.json.JSONObject;
 import com.alibaba.excel.support.ExcelTypeEnum;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -10,6 +11,8 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
+import com.cyksj.mapper.corp.CorpUserFollowRelationMapper;
+import com.cyksj.mapper.corp.CorpUserMapper;
 import com.cyksj.mapper.manage.statistics.IncrExpiryTimeRecordMapper;
 import com.cyksj.mapper.manage.statistics.StatisticsUserDataMapper;
 import com.cyksj.model.entity.*;
@@ -36,6 +39,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
 
 /*
@@ -332,4 +336,64 @@ public class StatisticsDataController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(Jsons.toJson(map));
 	}
 
+	private final RegisterOrderDonMapper registerOrderDonMapper;
+	/**
+	 * 所有先注册声破天会员,再买声破天年付车票的用户数
+	 */
+	@GetMapping("/get/spotify/data")
+	public Result<Integer> getSpotifyData() {
+		List<RegisterOrderDon> orderDons = registerOrderDonMapper.selectList(Wrappers.lambdaQuery(RegisterOrderDon.class)
+				.eq(RegisterOrderDon::getPlatform, "spotify")
+				.eq(RegisterOrderDon::getStatus, RegisterOrderDon.Status.complete)
+				.ne(RegisterOrderDon::getMoney, 0));
+		Map<Long, List<RegisterOrderDon>> collect = orderDons.stream().collect(Collectors.groupingBy(RegisterOrderDon::getUserId));
+		AtomicInteger atomicInteger = new AtomicInteger();
+		collect.forEach((k,v)->{
+			v.sort(Comparator.comparing(RegisterOrderDon::getId));
+			Long userId = k;
+			Date payTime = v.get(0).getPayTime();
+			Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+					.eq(OrderDon::getStatus, OrderDon.Status.complete)
+					.eq(OrderDon::getUserId, userId)
+					.gt(OrderDon::getPayTime, payTime)
+					.eq(OrderDon::getSkuId, 14));
+			if (count > 0) {
+				atomicInteger.incrementAndGet();
+			}
+		});
+		return GatewayResponse.SUCCESS.newBuilder().toResult(atomicInteger.get());
+	}
+
+	private final CorpUserMapper corpUserMapper;
+
+	private final CorpUserFollowRelationMapper corpUserFollowRelationMapper;
+
+	/**
+	 * 月份加入的企业微信,有过已完成订单的用户数
+	 */
+	@GetMapping("/get/corpWx/user/order")
+	public Result<String> getCorpWxUsrOrder(String start, String end) {
+	/*	List<CorpUser> corpUsers = corpUserMapper.selectList(Wrappers.lambdaQuery(CorpUser.class)
+				.ne(CorpUser::getUnionid,"")
+				.between(CorpUser::getCreatedTime, start, end));
+		List<User> users = userMapper.selectList(Wrappers.lambdaQuery(User.class)
+				.in(User::getUnionid, corpUsers.stream()
+						.map(CorpUser::getUnionid).collect(Collectors.toList()))
+				.ne(User::getUnionid, ""));
+
+		Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
+				.eq(OrderDon::getStatus, OrderDon.Status.complete)
+				.in(OrderDon::getUserId, users.stream().map(User::getId)));*/
+		JSONObject jsonObject = new JSONObject();
+
+		Integer corpOrderNum = orderDonMapper.getCountByCorpUserTime(start,end);
+
+		Integer equibe = corpUserFollowRelationMapper.selectCorpEqubeBytime(start,end);
+
+		Integer account = corpUserFollowRelationMapper.selectCorpAccountBytime(start, end);
+		jsonObject.putOpt("月份企业微信订单", corpOrderNum);
+		jsonObject.putOpt("月份设备企业微信订单", equibe);
+		jsonObject.putOpt("月份账号企业微信订单", account);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(jsonObject.toString());
+	}
 }