瀏覽代碼

fix 修改标签查询用户数订单数

zoujiajian 2 年之前
父節點
當前提交
84284dadce

+ 4 - 2
netflix-dao/src/main/java/com/cyksj/mapper/OrderDonMapper.java

@@ -66,7 +66,7 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 
 	BrokenLineObjView selectDsPlatBrokenLineMoney(@Param("sharedId") Long sharedId, @Param("first") String first, @Param("end") String end);
 
-	UserOrderDetailView getTagUserData(@Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("consumeStTime") String consumeStTime, @Param("consumeEtTime") String consumeEtTime);
+	UserOrderDetailView getTagUserOrdersData(@Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("consumeStTime") String consumeStTime, @Param("consumeEtTime") String consumeEtTime);
 
 	Page<UserOrderDetailView> getTagUserDataPage(@Param("page") Page<UserOrderDetailView> page, @Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("consumeStTime") String consumeStTime, @Param("consumeEtTime") String consumeEtTime);
 
@@ -82,5 +82,7 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 
 	Page<UserOrderDetailView> getPastRecord(@Param("objectPage") Page<Object> objectPage, @Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("consumeStTime") String consumeStTime, @Param("consumeEtTime") String consumeEtTime);
 
-	Integer getNumOfTagFansUser(@Param("date") String date, @Param("tagIdStr") String tagIdStr);
+	UserOrderDetailView getNumOfTagFansUser(@Param("date") String date, @Param("tagIdStr") String tagIdStr, @Param("startTime") String startTime, @Param("endTime") String endTime);
+
+	UserOrderDetailView getFansToDayOrdersView(@Param("tagIdStr") String tagIdStr, @Param("date") String date);
 }

+ 49 - 27
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -319,7 +319,7 @@
         </if>
     </select>
 
-    <select id="getTagUserData" resultType="com.cyksj.model.views.UserOrderDetailView">
+    <select id="getTagUserOrdersData" resultType="com.cyksj.model.views.UserOrderDetailView">
         select count(if(status != 'refund', 1, NULL)) as numOfOrder,
                cast((sum(money) - sum(ifnull(refund_money, 0))) / 100 as decimal(10,2)) as orderMoney,
                count(if(status != 'refund' and o.goods_id = 15,1,NULL)) as numOfEpOrder,
@@ -334,43 +334,35 @@
         where tag_id = #{tagIdStr}
         group by ct.relation_id
         <if test="startTime != null">
-            having min(ct.created_time) >= #{startTime}
+            having date_format(min(ct.created_time), '%Y-%m-%d') >= #{startTime}
         </if>
         <if test="endTime != null">
-            and min(ct.created_time) &lt; #{endTime}
+            and date_format(min(ct.created_time), '%Y-%m-%d') &lt; #{endTime}
         </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
         left join corp_user cu on cu.id = ca.corp_user_id) s
-        left join order_don o on o.user_id = s.user_id and o.user_id != 0
+        inner join order_don o on o.user_id = s.user_id and o.user_id != 0
         and o.status not in ('close', 'noPayment')
         and o.money > 0
         and date_format(o.created_time, '%Y-%m-%d') >= joinTime
         <if test="consumeStTime != null">
-            and o.created_time >= #{consumeStTime}
+            and date_format(o.created_time, '%Y-%m-%d') >= #{consumeStTime}
         </if>
         <if test="consumeEtTime != null">
-            and o.created_time &lt; #{consumeEtTime}
+            and date_format(o.created_time, '%Y-%m-%d') &lt; #{consumeEtTime}
         </if>
     </select>
 
     <select id="getTagUserDataPage" resultType="com.cyksj.model.views.UserOrderDetailView">
-        select joinTime                                                                             as `date`,
-               count(if(status != 'refund', 1, NULL))                                               as numOfOrder,
-               cast((ifnull(sum(money), 0) - sum(ifnull(refund_money, 0))) / 100 as decimal(10, 2)) as orderMoney
-        from (select cu.id as corpUserId, cu.user_id, date_format(s.created_time, '%Y-%m-%d') joinTime
-              from (select relation_id, min(ct.created_time) as created_time
+        select joinTime as `date`,
+               count(distinct corp_user_id) as numOfUser
+        from (select cufr.corp_user_id, date_format(s.created_time, '%Y-%m-%d') joinTime
+              from (select relation_id, min(created_time) as created_time
                     from `corp_user_tag` ct
                     where tag_id = #{tagIdStr}
-                    group by ct.relation_id) 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
-                       left join corp_user cu on cu.id = ca.corp_user_id) s
-                 inner join order_don o
-                            on o.user_id = s.user_id and o.user_id != 0
-            and o.status not in ('close','noPayment')
-            and date_format(o.created_time, '%Y-%m-%d') = joinTime
-            and o.money > 0
+                    group by relation_id) s
+                       inner join corp_user_follow_relation cufr on cufr.id = s.relation_id) s
         group by joinTime
         order by joinTime desc
     </select>
@@ -480,13 +472,43 @@
         order by date_format(o.created_time,'%Y-%m-%d') desc
     </select>
 
-    <select id="getNumOfTagFansUser" resultType="java.lang.Integer">
-        select count(distinct cufr.corp_user_id)
+    <select id="getNumOfTagFansUser" resultType="com.cyksj.model.views.UserOrderDetailView">
+        select count(distinct cufr.corp_user_id) as numOfUser,
+        count(distinct if(cufr.status = 0,cufr.corp_user_id,NULL)) as delNumOfUser
         from (select relation_id
-              from `corp_user_tag` ct
-              where tag_id = #{tagIdStr}
-              group by relation_id
-              HAVING date_format(min(ct.created_time), '%Y-%m-%d') = #{date}) s
-                 inner join corp_user_follow_relation cufr on cufr.id = s.relation_id
+        from `corp_user_tag` ct
+        where tag_id = #{tagIdStr}
+        group by relation_id
+        <if test="startTime != null">
+            having min(ct.created_time) >= #{startTime}
+        </if>
+        <if test="endTime != null">
+            and min(ct.created_time) &lt; #{endTime}
+        </if>
+        <if test="date != null">
+            HAVING date_format(min(ct.created_time), '%Y-%m-%d') = #{date}
+        </if>
+        ) s
+        inner join corp_user_follow_relation cufr on cufr.id = s.relation_id
+    </select>
+
+    <select id="getFansToDayOrdersView" resultType="com.cyksj.model.views.UserOrderDetailView">
+        select count(if(status != 'refund', 1, NULL))                                               as numOfOrder,
+               cast((ifnull(sum(money), 0) - sum(ifnull(refund_money, 0))) / 100 as decimal(10, 2)) as orderMoney
+        from (select cu.user_id
+              from (select relation_id
+                    from `corp_user_tag` ct
+                    where tag_id = #{tagIdStr}
+                    group by ct.relation_id
+                    having date_format(min(created_time), '%Y-%m-%d') = #{date}) 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
+                       left join corp_user cu on cu.id = ca.corp_user_id
+              where cu.user_id != 0) s
+                 left join order_don o
+                           on o.user_id = s.user_id
+                               and o.status not in ('close', 'noPayment')
+                               and date_format(o.created_time, '%Y-%m-%d') = #{date}
+                               and o.money > 0
     </select>
 </mapper>

+ 16 - 8
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpTagServiceImpl.java

@@ -424,8 +424,11 @@ public class CorpTagServiceImpl implements CorpTagService {
 	public Page<UserOrderDetailView> getTagUserData(Integer start, Integer limit, String tagIdStr, String startTime, String endTime, String consumeStTime, String consumeEtTime) {
 		Page<UserOrderDetailView> fansRecords = orderDonMapper.getTagUserDataPage(new Page<>(start, limit), tagIdStr, startTime, endTime, consumeStTime, consumeEtTime);
 		fansRecords.getRecords().forEach(e->{
-			Integer numOfUser = orderDonMapper.getNumOfTagFansUser(e.getDate(), tagIdStr);
-			e.setNumOfUser(numOfUser);
+			//查询当日订单数
+			UserOrderDetailView u2 = orderDonMapper.getFansToDayOrdersView(tagIdStr, e.getDate());
+
+			e.setNumOfOrder(u2.getNumOfOrder());
+			e.setOrderMoney(u2.getOrderMoney());
 		});
 		return fansRecords;
 	}
@@ -444,12 +447,17 @@ public class CorpTagServiceImpl implements CorpTagService {
 
 	@Override
 	public UserOrderDetailView tagUserHeadData(String tagIdStr, String startTime, String endTime, String consumeStTime, String consumeEtTime) {
-		UserOrderDetailView u = orderDonMapper.getTagUserData(tagIdStr, startTime, endTime, consumeStTime, consumeEtTime);
-		//被删除用户数
-		Integer delNumOfUser = corpUserTagMapper.getDelCorpUserNum(tagIdStr, startTime, endTime);
-		u.setDelNumOfUser(delNumOfUser);
+		//被删除用户数,用户数
+		UserOrderDetailView userOrderDetailView = orderDonMapper.getNumOfTagFansUser(null, tagIdStr, startTime, endTime);
+
+		//订单情况
+		UserOrderDetailView headView = orderDonMapper.getTagUserOrdersData(tagIdStr, startTime, endTime, consumeStTime, consumeEtTime);
+
+		headView.setNumOfUser(userOrderDetailView.getNumOfUser());
+		headView.setDelNumOfUser(userOrderDetailView.getDelNumOfUser());
+
 
-		u.setOrderRate(u.getNumOfUser() == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(u.getNumOfEpOrder()).divide(BigDecimal.valueOf(u.getNumOfUser()), 2, RoundingMode.HALF_DOWN));
-		return u;
+		headView.setOrderRate(headView.getNumOfUser() == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(headView.getNumOfEpOrder()).divide(BigDecimal.valueOf(headView.getNumOfUser()), 2, RoundingMode.HALF_DOWN));
+		return headView;
 	}
 }