zoujiajian пре 2 година
родитељ
комит
88467ac60c

+ 1 - 1
netflix-dao/src/main/java/com/cyksj/mapper/corp/CorpUserTagMapper.java

@@ -20,7 +20,7 @@ public interface CorpUserTagMapper extends BaseMapper<CorpUserTag> {
 
 	List<CorpUserTagExcelData> exportUserTagDetail(@Param("tagIds") String[] tagIds, @Param("groupIds") String[] groupIds, @Param("wxCorpId") Long wxCorpId);
 
-	UserOrderDetailView countTagUser(@Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime);
+	UserOrderDetailView countTagUser(@Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("thisDate") String thisDate);
 
 	List<Long> getTagIdByCorpUserId(Long corpUserId);
 }

+ 2 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/coupon/CouponDistributePopularizeMapper.java

@@ -23,4 +23,6 @@ public interface CouponDistributePopularizeMapper extends BaseMapper<CouponDistr
 	Coupon selectDiscountCouponByUserId(@Param("distributeId") Long distributeId, @Param("skuId") Long skuId);
 
 	void batchInsert(@Param("list") List<CouponDistributePopularize> couponRelates);
+
+	String getCouponCodeByUid(long userId);
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/manage/distribute/UserDistributeMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.DistributeMoneyApply;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserDistribute;
+import com.cyksj.model.views.CpsOrderDataStatisticsView;
 import com.cyksj.model.views.UserDistributeViews;
 import org.apache.ibatis.annotations.Param;
 
@@ -34,4 +35,6 @@ public interface UserDistributeMapper extends BaseMapper<UserDistribute> {
 	Integer getDistributeGoodsRateByUidAndGid(@Param("userId") Long userId, @Param("goodsId") Long goodsId);
 
 	DistributeMoneyApply selectRelationBusiness(Long userId);
+
+	CpsOrderDataStatisticsView selectOrderBrokenLineMoney(@Param("cpsUserId") long cpsUserId, @Param("first") String first, @Param("end") String end);
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/UserDistributePopularize.java

@@ -1,5 +1,7 @@
 package com.cyksj.model.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -21,6 +23,9 @@ public class UserDistributePopularize extends BaseEntity{
 
 	private String code;
 
+	@TableField(updateStrategy = FieldStrategy.IGNORED)
+	private Long goodsId;
+
 	private String remark;
 
 	private Boolean deleted;

+ 27 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderDataStatisticsView.java

@@ -0,0 +1,27 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CpsOrderDataStatisticsView
+ * 创建者: JavaZou
+ * 创建时间:2024/3/21 14:54
+ */
+@Getter
+@Setter
+public class CpsOrderDataStatisticsView {
+
+	private String firstDate;
+
+	private String lastDate;
+
+	/**
+	 * 平台订单数据
+	 */
+	private Map<Long, List<CpsOrderView>> goodsData;
+}

+ 40 - 0
netflix-dao/src/main/java/com/cyksj/model/views/CpsOrderView.java

@@ -0,0 +1,40 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.math.BigDecimal;
+
+/**
+ * 项目名: yhlxj
+ * 文件名: CpsOrderView
+ * 创建者: JavaZou
+ * 创建时间:2024/3/21 14:55
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select o.id,o.goods_id,o.money,o.is_dp,o.ori_money,o.created_time from order_don o inner join (select user_id from user_distribute_shared where :sharedId:) us on us.user_id = o.user_id where o.is_fixed_distribute is true and o.status not in ('close','noPayment') :time:) od left join goods_don g on g.id = od.goods_id" +
+		" inner join distribute_waiting_send_points dp on dp.order_id = od.id",
+		groupBy = "od.goods_id,g.title,date_format(od.created_time,'%Y-%m-%d')")
+public class CpsOrderView {
+
+	@DbField("od.goods_id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("cast(sum(if(od.is_dp and od.ori_money != 0,od.ori_money,od.money))/100 as decimal(10,2))")
+	private BigDecimal distributeOrderMoney;
+
+	@DbField("count(od.id)")
+	private Integer orders;
+
+	/**
+	 * 日期
+	 */
+	@DbField("date_format(od.created_time,'%Y-%m-%d')")
+	private String date;
+}

+ 11 - 2
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributePopularizeView.java

@@ -18,10 +18,10 @@ import java.util.Date;
  */
 @Getter
 @Setter
-@SearchBean(tables = "(select id,name,remark,code,created_time from user_distribute_popularize where deleted is true :userId:) dp left join order_don od on od.cps_popularize_id = dp.id" +
+@SearchBean(tables = "(select id,name,remark,code,created_time,goods_id from user_distribute_popularize where deleted is true :userId:) dp left join order_don od on od.cps_popularize_id = dp.id" +
 		" and od.status not in ('close','noPayment') and od.relation_id != 0 and is_fixed_distribute is true" +
 		" left join distribute_waiting_send_points dsp on dsp.order_id = od.id and dsp.send_status in ('success','waiting')",
-		groupBy = "dp.id,dp.name,dp.code,dp.remark,dp.created_time")
+		groupBy = "dp.id,dp.name,dp.code,dp.remark,dp.created_time,dp.goods_id")
 public class UserDistributePopularizeView {
 	@DbField("dp.id")
 	private Long id;
@@ -33,6 +33,9 @@ public class UserDistributePopularizeView {
 	@JsonIgnore
 	private String code;
 
+	@DbField("dp.goods_id")
+	private Long goodsId;
+
 	@DbIgnore
 	private String popularizeLink;
 
@@ -53,4 +56,10 @@ public class UserDistributePopularizeView {
 
 	@DbField("dp.created_time")
 	private Date createTime;
+
+	/**
+	 * 优惠码
+	 */
+	@DbIgnore
+	private String couponCode;
 }

+ 3 - 0
netflix-dao/src/main/resources/mapper/CorpUserTagMapper.xml

@@ -72,6 +72,9 @@
         </if>
         <if test="endTime != null">
             and ct.created_time &lt; #{endTime}
+        </if>
+        <if test="thisDate != null">
+            and date_format(ct.created_time,'%Y-%m-%d') = #{thisDate}
         </if>) s
         left join corp_user_follow_relation cufr on cufr.id = s.relation_id
         left join corp_user_auth ca on ca.external_userid = cufr.corp_user_id

+ 7 - 0
netflix-dao/src/main/resources/mapper/CouponDistributePopularizeMapper.xml

@@ -10,4 +10,11 @@
             (#{item.couponId},#{item.distributeId},#{item.exCode},now(),now())
         </foreach>
     </insert>
+
+    <select id="getCouponCodeByUid" resultType="java.lang.String">
+        select group_concat(cp.ex_code)
+        from (select id from user_distribute ud where user_id = #{userId} and deleted is true limit 1) s
+                 inner join coupon_distribute_popularize cp on cp.distribute_id = s.id
+            and cp.deleted is true and cp.is_general is false
+    </select>
 </mapper>

+ 16 - 0
netflix-dao/src/main/resources/mapper/UserDistributeMapper.xml

@@ -97,4 +97,20 @@
         from (select business_id from user_distribute where user_id = #{userId} and deleted is true limit 1) ud
                  inner join cms_user cu on cu.id = ud.business_id
     </select>
+
+    <select id="selectOrderBrokenLineMoney" resultType="com.cyksj.model.views.CpsOrderDataStatisticsView">
+        select min(curdate) as firstDate,max(curdate) as lastDate from (select date_format(od.created_time,'%Y-%m-%d') as curdate
+        from (select o.id,o.goods_id,o.created_time from order_don o inner join
+        (select user_id from user_distribute_shared where shared_id = #{cpsUserId}) us on us.user_id = o.user_id where
+        o.is_fixed_distribute is true and o.status not in ('close','noPayment')
+        <if test="first != null">
+            and o.created_time >= #{first}
+        </if>
+        <if test="end != null">
+            and o.created_time &lt; #{end}
+        </if>)od
+        left join goods_don g on g.id = od.goods_id
+        inner join distribute_waiting_send_points dp on dp.order_id = od.id
+        group by date_format(od.created_time,'%Y-%m-%d'))s
+    </select>
 </mapper>

+ 6 - 1
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpTagServiceImpl.java

@@ -424,12 +424,17 @@ public class CorpTagServiceImpl implements CorpTagService {
 	public UserOrderDetailView getTagUserData(Integer start, Integer limit, String tagIdStr, String startTime, String endTime) {
 		UserOrderDetailView u = orderDonMapper.getTagUserData(tagIdStr, startTime, endTime);
 
-		UserOrderDetailView u2 = corpUserTagMapper.countTagUser(tagIdStr, startTime, endTime);
+		UserOrderDetailView u2 = corpUserTagMapper.countTagUser(tagIdStr, startTime, endTime,null);
 
 		u.setNumOfUser(u2.getNumOfUser());
 		u.setDelNumOfUser(u2.getDelNumOfUser());
 		u.setOrderRate(u.getNumOfUser() == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(u.getNumOfEpOrder()).divide(BigDecimal.valueOf(u.getNumOfUser()), 2, RoundingMode.HALF_DOWN));
 		Page<UserOrderDetailView> records = orderDonMapper.getTagUserDataPage(new Page<>(start, limit), tagIdStr, startTime, endTime);
+		records.getRecords().forEach(e->{
+			String date = e.getDate();
+			UserOrderDetailView userOrderDetailView = corpUserTagMapper.countTagUser(tagIdStr, null, null, date);
+			e.setNumOfUser(userOrderDetailView.getNumOfUser());
+		});
 
 		u.setRecords(records);
 		return u;

+ 1 - 0
netflix-service/src/main/java/com/cyksj/service/cps/impl/CpsPopularizeServiceImpl.java

@@ -78,6 +78,7 @@ public class CpsPopularizeServiceImpl implements CpsPopularizeService {
 				.set(UserDistributePopularize::getName, name)
 				.set(UserDistributePopularize::getRemark, remark)
 				.eq(UserDistributePopularize::getId, popularizeId)
+				.set(UserDistributePopularize::getGoodsId, popularize.getGoodsId())
 				.eq(UserDistributePopularize::getUserId, userId));
 	}
 

+ 2 - 135
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsBackLoginController.java

@@ -1,7 +1,5 @@
 package com.cyksj.web.controller.cps;
 
-import cn.hutool.core.date.DateTime;
-import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -14,36 +12,25 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.config.wxlogin.WxOpenPlatYHLXLoginConfig;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonMapper;
 import com.cyksj.mapper.UserMapper;
 import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
 import com.cyksj.model.dto.AuthRedirect;
 import com.cyksj.model.dto.AuthToken;
 import com.cyksj.model.dto.CpsAuthDto;
 import com.cyksj.model.dto.GzhOAuth2UserInfo;
-import com.cyksj.model.entity.*;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.entity.UserDistribute;
 import com.cyksj.model.request.LoginReq;
-import com.cyksj.model.views.*;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.authorization.AuthorizationService;
 import com.cyksj.service.cps.CpsManageService;
 import com.cyksj.service.wechat.WeChatService;
 import com.cyksj.web.util.StpCpsManageUser;
-import com.ejlchina.searcher.BeanSearcher;
-import com.ejlchina.searcher.SearchResult;
-import com.ejlchina.searcher.util.MapBuilder;
-import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.List;
-import java.util.Map;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /*
  *项目名: netflix
@@ -57,12 +44,6 @@ import java.util.stream.Collectors;
 public class CpsBackLoginController {
 	private final CpsManageService cpsManageService;
 
-	private final BeanSearcher beanSearcher;
-
-	private final HttpServletRequest request;
-
-	private final GoodsDonMapper goodsDonMapper;
-
 	private final RedisService redisService;
 
 	private final static Sequence SEQUENCE = new Sequence(0);
@@ -169,118 +150,4 @@ public class CpsBackLoginController {
 		redisService.del(key);
 		return GatewayResponse.SUCCESS.newBuilder().toResult(o.toString());
 	}
-
-
-	/**
-	 * 个人分销平台数据详情
-	 */
-	@GetMapping("/get/distribute/detail")
-	public Result<CpsUserDistributeDetailView> getDistributeDetail() {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		User user = beanSearcher.searchFirst(User.class, MapUtils.builder().field(User::getId, cpsUserId).onlySelect(User::getPoints).build());
-		BigDecimal thresholdPoints = BigDecimal.valueOf(1000);
-		BigDecimal wApplyMoney = user.getPoints().divide(thresholdPoints, 2, RoundingMode.DOWN);
-		//已提现
-		Number gotApplyMoney = beanSearcher.searchSum(DistributeMoneyApply.class, MapUtils.builder()
-				.field(DistributeMoneyApply::getUserId, cpsUserId)
-				.field(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success.name())
-				.build(), "money");
-		Number reMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.success.name()).build(), "points");
-		Number wMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.waiting.name()).build(), "points");
-		List<UserDistributeRateView> rateViews = beanSearcher.searchAll(UserDistributeRateView.class, MapUtils.builder()
-				.put("distribute_id", String.format("and distribute_id = (select id from user_distribute where user_id = %s and deleted is true limit 1)", cpsUserId))
-				.orderBy(UserDistributeRateView::getRate).desc()
-				.build());
-		CpsUserDistributeDetailView detailView = new CpsUserDistributeDetailView();
-		Map<String, List<UserDistributeRateView>> collect = rateViews.stream().filter(ct -> StrUtil.isNotBlank(ct.getCategoryName())).collect(Collectors.groupingBy(UserDistributeRateView::getCategoryName));
-		detailView.setRateViews(collect);
-		detailView.setWMoney(BigDecimal.valueOf(wMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
-		detailView.setReMoney(BigDecimal.valueOf(reMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
-
-		detailView.setWApplyMoney(wApplyMoney);
-		detailView.setGotApplyMoney(BigDecimal.valueOf(gotApplyMoney.doubleValue()).divide(BigDecimal.valueOf(100)));
-		return GatewayResponse.SUCCESS.newBuilder().toResult(detailView);
-	}
-
-	/**
-	 * 待入账数据统计
-	 */
-	@GetMapping("/get/wMoney/statisticsData")
-	public Result<BrokenLineCpsUserWMoneyView> getWMoneyStatisticsDataView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		DateTime first = null;
-		DateTime end = null;
-		if (firstDate != null) {
-			first = DateUtil.date(firstDate);
-		}
-		if (lastDate != null) {
-			end = DateUtil.date(lastDate);
-		}
-		BrokenLineCpsUserWMoneyView brokenLineCpsUserWMoneyView = Optional.ofNullable(cpsManageService.getWMoneyStatisticsDate(cpsUserId, first, end)).orElse(new BrokenLineCpsUserWMoneyView());
-		List<CpsUserWMoneyStatisticsDataView> dataView = cpsManageService.getWMoneyStatisticsDataView(cpsUserId, first, end);
-		brokenLineCpsUserWMoneyView.setDataView(dataView);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineCpsUserWMoneyView);
-	}
-
-	/**
-	 * 分销订单收入统计
-	 */
-	@GetMapping("/get/distribute/orders/statistics")
-	public Result<SearchResult<UserDistributeOrdersStatisticsView>> getUserDistributeOrdersStatisticsView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		String first = null;
-		String end = null;
-		String timeSql = StrUtil.EMPTY;
-		if (firstDate != null) {
-			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time >= '%s'", first);
-		}
-		if (lastDate != null) {
-			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time < '%s'", end);
-		}
-		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
-		if (StrUtil.isNotEmpty(timeSql)) {
-			builder.put("time", timeSql);
-		}
-		SearchResult<UserDistributeOrdersStatisticsView> search = beanSearcher.search(UserDistributeOrdersStatisticsView.class, builder.build());
-		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-	}
-
-	/**
-	 * 分销订单收入详细
-	 */
-	@GetMapping("/get/distribute/orders/detail")
-	public Result<SearchResult<UserDistributeOrdersDetailView>> getUserDistributeOrdersDetailView(Long firstDate, Long lastDate) {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		String first = null;
-		String end = null;
-		String timeSql = StrUtil.EMPTY;
-		if (firstDate != null) {
-			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time >= '%s'", first);
-		}
-		if (lastDate != null) {
-			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
-			timeSql += String.format(" and o.created_time < '%s'", end);
-		}
-		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
-		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
-		if (StrUtil.isNotEmpty(timeSql)) {
-			builder.put("time", timeSql);
-		}
-		SearchResult<UserDistributeOrdersDetailView> search = beanSearcher.search(UserDistributeOrdersDetailView.class, builder.build());
-		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
-	}
-
-	/**
-	 * 分销商品列表
-	 */
-	@GetMapping("/get/goods")
-	public Result<List<GoodsDon>> getGoodsList() {
-		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
-		List<GoodsDon> goodsDons = goodsDonMapper.getDistributeGoodsDetail(cpsUserId);
-		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
-	}
 }

+ 208 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsDistribtueDataController.java

@@ -0,0 +1,208 @@
+package com.cyksj.web.controller.cps;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
+import com.cyksj.dto.Result;
+import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.GoodsDonMapper;
+import com.cyksj.mapper.manage.distribute.UserDistributeMapper;
+import com.cyksj.model.entity.DistributeMoneyApply;
+import com.cyksj.model.entity.DistributeWaitingSendPoints;
+import com.cyksj.model.entity.GoodsDon;
+import com.cyksj.model.entity.User;
+import com.cyksj.model.views.*;
+import com.cyksj.service.cps.CpsManageService;
+import com.cyksj.web.util.StpCpsManageUser;
+import com.ejlchina.searcher.BeanSearcher;
+import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.util.MapBuilder;
+import com.ejlchina.searcher.util.MapUtils;
+import lombok.RequiredArgsConstructor;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: CpsDistribtueDataController
+ * 创建者: JavaZou
+ * 创建时间:2024/3/19 11:42
+ * 分销数据控制层
+ */
+@RestController
+@RequestMapping("/cps/manage")
+@RequiredArgsConstructor
+public class CpsDistribtueDataController {
+
+	private final BeanSearcher beanSearcher;
+
+	private final HttpServletRequest request;
+
+	private final GoodsDonMapper goodsDonMapper;
+
+	private final CpsManageService cpsManageService;
+
+	private final UserDistributeMapper userDistributeMapper;
+
+	/**
+	 * 个人分销平台数据详情
+	 */
+	@GetMapping("/get/distribute/detail")
+	public Result<CpsUserDistributeDetailView> getDistributeDetail() {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		User user = beanSearcher.searchFirst(User.class, MapUtils.builder().field(User::getId, cpsUserId).onlySelect(User::getPoints).build());
+		BigDecimal thresholdPoints = BigDecimal.valueOf(1000);
+		BigDecimal wApplyMoney = user.getPoints().divide(thresholdPoints, 2, RoundingMode.DOWN);
+		//已提现
+		Number gotApplyMoney = beanSearcher.searchSum(DistributeMoneyApply.class, MapUtils.builder()
+				.field(DistributeMoneyApply::getUserId, cpsUserId)
+				.field(DistributeMoneyApply::getVerifyStatus, DistributeMoneyApply.Status.success.name())
+				.build(), "money");
+		Number reMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.success.name()).build(), "points");
+		Number wMoneyPoints = beanSearcher.searchSum(DistributeWaitingSendPoints.class, MapUtils.builder().field(DistributeWaitingSendPoints::getSharedId, cpsUserId).field(DistributeWaitingSendPoints::getSendStatus, DistributeWaitingSendPoints.Status.waiting.name()).build(), "points");
+		List<UserDistributeRateView> rateViews = beanSearcher.searchAll(UserDistributeRateView.class, MapUtils.builder()
+				.put("distribute_id", String.format("and distribute_id = (select id from user_distribute where user_id = %s and deleted is true limit 1)", cpsUserId))
+				.orderBy(UserDistributeRateView::getRate).desc()
+				.build());
+		CpsUserDistributeDetailView detailView = new CpsUserDistributeDetailView();
+		Map<String, List<UserDistributeRateView>> collect = rateViews.stream().filter(ct -> StrUtil.isNotBlank(ct.getCategoryName())).collect(Collectors.groupingBy(UserDistributeRateView::getCategoryName));
+		detailView.setRateViews(collect);
+		detailView.setWMoney(BigDecimal.valueOf(wMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
+		detailView.setReMoney(BigDecimal.valueOf(reMoneyPoints.doubleValue()).divide(thresholdPoints, 2, RoundingMode.DOWN));
+
+		detailView.setWApplyMoney(wApplyMoney);
+		detailView.setGotApplyMoney(BigDecimal.valueOf(gotApplyMoney.doubleValue()).divide(BigDecimal.valueOf(100)));
+		return GatewayResponse.SUCCESS.newBuilder().toResult(detailView);
+	}
+
+	/**
+	 * 待入账数据统计
+	 */
+	@GetMapping("/get/wMoney/statisticsData")
+	public Result<BrokenLineCpsUserWMoneyView> getWMoneyStatisticsDataView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		DateTime first = null;
+		DateTime end = null;
+		if (firstDate != null) {
+			first = DateUtil.date(firstDate);
+		}
+		if (lastDate != null) {
+			end = DateUtil.date(lastDate);
+		}
+		BrokenLineCpsUserWMoneyView brokenLineCpsUserWMoneyView = Optional.ofNullable(cpsManageService.getWMoneyStatisticsDate(cpsUserId, first, end)).orElse(new BrokenLineCpsUserWMoneyView());
+		List<CpsUserWMoneyStatisticsDataView> dataView = cpsManageService.getWMoneyStatisticsDataView(cpsUserId, first, end);
+		brokenLineCpsUserWMoneyView.setDataView(dataView);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineCpsUserWMoneyView);
+	}
+
+	/**
+	 * 分销订单收入统计
+	 */
+	@GetMapping("/get/distribute/orders/statistics")
+	public Result<SearchResult<UserDistributeOrdersStatisticsView>> getUserDistributeOrdersStatisticsView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		String timeSql = StrUtil.EMPTY;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time >= '%s'", first);
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time < '%s'", end);
+		}
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+		if (StrUtil.isNotEmpty(timeSql)) {
+			builder.put("time", timeSql);
+		}
+		SearchResult<UserDistributeOrdersStatisticsView> search = beanSearcher.search(UserDistributeOrdersStatisticsView.class, builder.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 分销订单收入详细
+	 */
+	@GetMapping("/get/distribute/orders/detail")
+	public Result<SearchResult<UserDistributeOrdersDetailView>> getUserDistributeOrdersDetailView(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		String timeSql = StrUtil.EMPTY;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time >= '%s'", first);
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+			timeSql += String.format(" and o.created_time < '%s'", end);
+		}
+		MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+		builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+		if (StrUtil.isNotEmpty(timeSql)) {
+			builder.put("time", timeSql);
+		}
+		SearchResult<UserDistributeOrdersDetailView> search = beanSearcher.search(UserDistributeOrdersDetailView.class, builder.build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 分销商品列表
+	 */
+	@GetMapping("/get/goods")
+	public Result<List<GoodsDon>> getGoodsList() {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		List<GoodsDon> goodsDons = goodsDonMapper.getDistributeGoodsDetail(cpsUserId);
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
+	}
+
+	/**
+	 * 数据中心折线图
+	 */
+	@GetMapping("/get/data/brokenLine")
+	public Result<CpsOrderDataStatisticsView> getDataBrokenLine(Long firstDate, Long lastDate) {
+		long cpsUserId = StpCpsManageUser.getLoginIdAsLong();
+		String first = null;
+		String end = null;
+		if (firstDate != null) {
+			first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd");
+		}
+		if (lastDate != null) {
+			end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd");
+		}
+		CpsOrderDataStatisticsView brokenLineObjView = Optional.ofNullable(userDistributeMapper.selectOrderBrokenLineMoney(cpsUserId, first, end))
+				.orElse(new CpsOrderDataStatisticsView());
+
+		if (brokenLineObjView != null) {
+			String timeSql = StrUtil.EMPTY;
+			if (firstDate != null) {
+				first = DateUtil.format(DateTime.of(firstDate), "yyyy-MM-dd HH:mm:ss");
+				timeSql += String.format(" and o.created_time >= '%s'", first);
+			}
+			if (lastDate != null) {
+				end = DateUtil.format(DateTime.of(lastDate), "yyyy-MM-dd HH:mm:ss");
+				timeSql += String.format(" and o.created_time < '%s'", end);
+			}
+			MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
+			builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+			if (StrUtil.isNotEmpty(timeSql)) {
+				builder.put("time", timeSql);
+			}
+			builder.put("sharedId", String.format("shared_id = %s", cpsUserId));
+			List<CpsOrderView> views = beanSearcher.searchAll(CpsOrderView.class,builder.build());
+			Map<Long, List<CpsOrderView>> goodsMap = views.stream().collect(Collectors.groupingBy(CpsOrderView::getGoodsId));
+			brokenLineObjView.setGoodsData(goodsMap);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineObjView);
+	}
+}

+ 32 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsPopularizeController.java

@@ -5,6 +5,8 @@ import com.cyksj.common.EnvCommonService;
 import com.cyksj.common.annotation.NoSubmit;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
+import com.cyksj.mapper.manage.coupon.CouponDistributePopularizeMapper;
+import com.cyksj.model.entity.GoodsDon;
 import com.cyksj.model.entity.User;
 import com.cyksj.model.entity.UserDistributePopularize;
 import com.cyksj.model.views.UserDistributePopularizeView;
@@ -13,6 +15,7 @@ import com.cyksj.service.user.UserService;
 import com.cyksj.web.util.StpCpsManageUser;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.SearchResult;
+import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapBuilder;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
@@ -20,6 +23,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.util.List;
 import java.util.Optional;
 
 /*
@@ -40,6 +44,8 @@ public class CpsPopularizeController {
 
 	private final EnvCommonService envCommonService;
 
+	private final CouponDistributePopularizeMapper couponDistributePopularizeMapper;
+
 	private final UserService userService;
 
 	/**
@@ -76,6 +82,8 @@ public class CpsPopularizeController {
 			user.setShowId(userService.getUserShowId(user.getId()));
 		}
 		view.setPopularizeLink(String.format(envCommonService.DISTRIBUTE_DEFAULT_URL_PREFIX, user.getShowId()));
+		//优惠码
+		view.setCouponCode(couponDistributePopularizeMapper.getCouponCodeByUid(cpsUserId));
 		return GatewayResponse.SUCCESS.newBuilder().toResult(view);
 	}
 
@@ -113,4 +121,28 @@ public class CpsPopularizeController {
 		cpsPopularizeService.deleteById(cpsUserId, id);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}
+
+	/**
+	 * 获取所有平台列表
+	 */
+	@GetMapping("/get/all/goods")
+	public Result<List<GoodsDon>> getAllGoodsList(Boolean isNoBuyout) {
+		MapBuilder mapBuilder = MapUtils.flatBuilder(request.getParameterMap());
+		//过滤买断制 平台
+		String conditionSql;
+		if (isNoBuyout != null && isNoBuyout) {
+			mapBuilder.field(GoodsDon::getSpecialType).op(Operator.IsNull);
+			conditionSql = "(select count(*) from goods_don_sku sku where sku.goods_id = g.id and sku.months = 300) = 0";
+		} else {
+			conditionSql = "(special_type is null or special_type != 'giftCard')";
+		}
+		conditionSql += "  and exists (select id from goods_don_sku sku where sku.goods_id = g.id limit 1)";
+		List<GoodsDon> goodsDons = beanSearcher.searchAll(GoodsDon.class, mapBuilder
+				.put("condition", conditionSql)
+				.field(GoodsDon::getType, 1)
+				.field(GoodsDon::getStatus, 1)
+				.field(GoodsDon::getDeleted, true)
+				.onlySelect(GoodsDon::getId, GoodsDon::getCategory, GoodsDon::getType, GoodsDon::getTitle, GoodsDon::getSecondType).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(goodsDons);
+	}
 }