Browse Source

cps后台展示优惠码,增加数据中心折线图

zoujiajian 2 năm trước cách đây
mục cha
commit
d8a9084fa3

+ 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);
 }

+ 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;
+}

+ 6 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserDistributePopularizeView.java

@@ -53,4 +53,10 @@ public class UserDistributePopularizeView {
 
 	@DbField("dp.created_time")
 	private Date createTime;
+
+	/**
+	 * 优惠码
+	 */
+	@DbIgnore
+	private String couponCode;
 }

+ 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>

+ 40 - 0
netflix-web/src/main/java/com/cyksj/web/controller/cps/CpsBackLoginController.java

@@ -283,4 +283,44 @@ public class CpsBackLoginController {
 		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);
+	}
 }

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

@@ -5,6 +5,7 @@ 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.User;
 import com.cyksj.model.entity.UserDistributePopularize;
 import com.cyksj.model.views.UserDistributePopularizeView;
@@ -40,6 +41,8 @@ public class CpsPopularizeController {
 
 	private final EnvCommonService envCommonService;
 
+	private final CouponDistributePopularizeMapper couponDistributePopularizeMapper;
+
 	private final UserService userService;
 
 	/**
@@ -76,6 +79,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);
 	}