Преглед на файлове

fix 新粉人数查询优化

zoujiajian преди 2 години
родител
ревизия
54657856b9

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

@@ -81,4 +81,6 @@ public interface OrderDonMapper extends BaseMapper<OrderDon> {
 	BigDecimal selectSubChannelOrderMoney(@Param("sharedId") Long sharedId, @Param("invitedTime") Date invitedTime, @Param("limitTime") Date limitTime);
 
 	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);
 }

+ 20 - 13
netflix-dao/src/main/resources/mapper/OrderDonMapper.xml

@@ -355,25 +355,22 @@
     </select>
 
     <select id="getTagUserDataPage" resultType="com.cyksj.model.views.UserOrderDetailView">
-        select joinTime                               as `date`,
-               count(DISTINCT corpUserId)             as numOfUser,
-               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(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
                     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
-                 left 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
+                 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 joinTime
         order by joinTime desc
     </select>
@@ -482,4 +479,14 @@
         group by date_format(o.created_time,'%Y-%m-%d')
         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)
+        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
+    </select>
 </mapper>

+ 4 - 0
netflix-service/src/main/java/com/cyksj/service/corp/impl/CorpTagServiceImpl.java

@@ -423,6 +423,10 @@ public class CorpTagServiceImpl implements CorpTagService {
 	@Override
 	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);
+		});
 		return fansRecords;
 	}