zoujiajian 1 жил өмнө
parent
commit
03e1477afe

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

@@ -2,6 +2,7 @@ package com.cyksj.mapper.mirrorshop;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.UserMirrorShop;
+import com.cyksj.model.views.UserMirrorShopOrderDataStatisticsView;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
@@ -22,4 +23,6 @@ public interface UserMirrorShopMapper extends BaseMapper<UserMirrorShop> {
 	BigDecimal selectUserMirrorShopTakeMoney(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
 
 	Map<String, Object> selectUserMirrorShopApplyMoney(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
+
+	UserMirrorShopOrderDataStatisticsView selectOrderBrokenLineMoney(@Param("mpId") long mpId, @Param("first") String first, @Param("end") String end);
 }

+ 26 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserMirrorShopOrderDataStatisticsView.java

@@ -0,0 +1,26 @@
+package com.cyksj.model.views;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserMirrorShopOrderDataStatisticsView
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 15:33
+ */
+@Getter
+@Setter
+public class UserMirrorShopOrderDataStatisticsView {
+	private String firstDate;
+
+	private String lastDate;
+
+	/**
+	 * 平台订单数据
+	 */
+	private Map<Long, List<UserMirrorShopOrderView>> goodsData;
+}

+ 41 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserMirrorShopOrderView.java

@@ -0,0 +1,41 @@
+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;
+
+/**
+ * 项目名: yhlxj2
+ * 文件名: UserMirrorShopOrderView
+ * 创建者: JavaZou
+ * 创建时间:2024/11/12 15:30
+ */
+@Getter
+@Setter
+@SearchBean(tables = "(select o.id,o.goods_id,o.money,o.created_time from order_don o inner join user_mirror_shop_order_relate uor on uor.order_id = o.id :mid: where o.status not in ('close','noPayment') :time:) od" +
+		" left join goods_don g on g.id = od.goods_id" +
+		" inner join user_mirror_shop_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 UserMirrorShopOrderView {
+
+	@DbField("od.goods_id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("cast(sum(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;
+}

+ 17 - 0
netflix-dao/src/main/resources/mapper/UserMirrorShopMapper.xml

@@ -50,4 +50,21 @@
             and created_time &lt; #{endDate}
         </if>
     </select>
+
+    <select id="selectOrderBrokenLineMoney" resultType="com.cyksj.model.views.UserMirrorShopOrderDataStatisticsView">
+        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 user_mirror_shop_order_relate uor on uor.order_id = o.id and uor.mp_id = #{mpId} where
+        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 user_mirror_shop_distribute_waiting_send_points dp on dp.order_id = od.id
+        group by date_format(od.created_time,'%Y-%m-%d'))s
+    </select>
 </mapper>

+ 44 - 0
netflix-web/src/main/java/com/cyksj/web/controller/manage/mirrorshop/manage/CmsUserMirrorShopDataController.java

@@ -25,7 +25,9 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * admin/镜像店铺后台/数据
@@ -97,6 +99,48 @@ public class CmsUserMirrorShopDataController {
 		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineCpsUserWMoneyView);
 	}
 
+	/**
+	 * 数据中心折线图
+	 */
+	@GetMapping("/get/data/brokenLine")
+	public Result<UserMirrorShopOrderDataStatisticsView> getDataBrokenLine(Long firstDate, Long lastDate) {
+		long yhShopUserId = StpUserMirrorShopManageUser.getLoginIdAsLong();
+		UserMirrorShop userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
+				.eq(UserMirrorShop::getUserId, yhShopUserId)
+				.last("limit 1"));
+		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");
+		}
+		UserMirrorShopOrderDataStatisticsView brokenLineObjView = Optional.ofNullable(userMirrorShopMapper.selectOrderBrokenLineMoney(userMirrorShop.getId(), first, end))
+				.orElse(new UserMirrorShopOrderDataStatisticsView());
+
+		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());
+			if (StrUtil.isNotEmpty(timeSql)) {
+				builder.put("time", timeSql);
+			}
+			builder.put("mid", String.format(" and mp_id = %s", userMirrorShop.getId()));
+			List<UserMirrorShopOrderView> views = beanSearcher.searchAll(UserMirrorShopOrderView.class,builder.build());
+			Map<Long, List<UserMirrorShopOrderView>> goodsMap = views.stream().collect(Collectors.groupingBy(UserMirrorShopOrderView::getGoodsId));
+			brokenLineObjView.setGoodsData(goodsMap);
+		}
+		return GatewayResponse.SUCCESS.newBuilder().toResult(brokenLineObjView);
+	}
+
 	/**
 	 * 店铺分销订单收入统计
 	 */