Browse Source

fix:实现查询广告记录统计数接口

zack 1 tháng trước cách đây
mục cha
commit
33ac1ef88d

+ 24 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/controller/UserController.java

@@ -2,6 +2,7 @@ package com.ytpm.lemonios.controller;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ytpm.advertise.enums.AdSourceTypeEnum;
@@ -192,6 +193,29 @@ public class UserController {
         return ResultTable.resultTableOk(new PageInfo<>(adrecords));
     }
 
+    /**
+     * 查询广告记录统计数
+     */
+    @GetMapping("/adRecords/count/month")
+    public Result<Integer> queryRecordMonthCount(@RequestParam(name = "userId") String userId,
+                                                 @RequestParam(name = "adSourceType", required = false) Integer adSourceType,
+                                                 @RequestParam(name = "startTime", required = false) String startTime) {
+        Date time;
+        // 统计起始时间为空,则默认查询当月信息
+        if (StrUtil.isEmpty(startTime)) {
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(new Date());
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            calendar.set(Calendar.HOUR_OF_DAY, 0);
+            calendar.set(Calendar.MINUTE, 0);
+            calendar.set(Calendar.SECOND, 0);
+            time = calendar.getTime();
+        } else {
+            time = DateUtil.parse(startTime, "yyyy-MM-dd HH:mm:ss");
+        }
+        return Result.resultObjOk(adRecordMapper.getRecordMonthCount(userId, adSourceType, time));
+    }
+
     @PostMapping("/queryUserByTime")
     public List<YtDyzUser> queryUserByTime(@RequestBody AppUserQueryParam appUserQueryParam) {
         List<YtDyzUser> ytDyzUsers = appUserMapper.queryAllByTime(appUserQueryParam.getStartTime(), appUserQueryParam.getEndTime(),appUserQueryParam.getAppIdList());

+ 8 - 0
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/dao/AdRecordMapper.java

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 @Mapper
@@ -67,4 +68,11 @@ public interface AdRecordMapper {
      * 保存游客广告记录
      */
     void updateOneVisitor(YtDyzAdRecord adRecord);
+
+    /**
+     * 查询用户广告记录统计数
+     */
+    Integer getRecordMonthCount(@Param("userId") String userId,
+                                @Param("adSourceType") Integer adSourceType,
+                                @Param("startTime") Date startTime);
 }

+ 0 - 8
yt-ios-lemon/lemon-ios-service/src/main/java/com/ytpm/lemonios/service/impl/AppUserServiceImpl.java

@@ -1,13 +1,11 @@
 package com.ytpm.lemonios.service.impl;
 
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
 import com.ytpm.agent.enums.UserStatusEnum;
 import com.ytpm.agent.model.YtDitch;
 import com.ytpm.app.model.YtAppDefaultConfig;
-import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzAnswerRecord;
 import com.ytpm.app.model.YtDyzLoginRecord;
 import com.ytpm.app.model.YtDyzUser;
@@ -27,8 +25,6 @@ import com.ytpm.lemonios.dao.LoginRecordMapper;
 import com.ytpm.lemonios.dao.QuestionMapper;
 import com.ytpm.lemonios.redis.RedisService;
 import com.ytpm.lemonios.service.AppUserService;
-import com.ytpm.risk.view.RiskConfigView;
-import com.ytpm.risk.view.RiskTemplateView;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cloud.context.config.annotation.RefreshScope;
@@ -36,16 +32,12 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 @Service
 @RefreshScope

+ 24 - 4
yt-ios-lemon/lemon-ios-service/src/main/resources/mapper/AdRecordMapper.xml

@@ -158,12 +158,20 @@
     </select>
     <select id="getByUserIds" resultType="com.ytpm.app.model.YtDyzAdRecord">
         select
-            record_id, user_id,app_id, nick_name, placement_id, ad_source_id, revenue, network_form_id, network_name, network_placement_id, finish_time, begin_time,result_json,ad_source_type,ad_source_index,ecpm
+        record_id, user_id,app_id, nick_name, placement_id, ad_source_id, revenue, network_form_id, network_name, network_placement_id, finish_time, begin_time,result_json,ad_source_type,ad_source_index,ecpm
         from yt_dyz_ad_record
         where user_id in
-              <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
-                  #{item}
-              </foreach>
+        <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
+        union
+        select
+        record_id, user_id,app_id, nick_name, placement_id, ad_source_id, revenue, network_form_id, network_name, network_placement_id, finish_time, begin_time,result_json,ad_source_type,ad_source_index,ecpm
+        from yt_dyz_ad_record_visitor
+        where ad_source_type != 1 and user_id in
+        <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
+            #{item}
+        </foreach>
         order by finish_time
     </select>
     <select id="getHourRevenue" resultType="com.ytpm.middle.view.AppRevenueHourVO">
@@ -234,4 +242,16 @@
             and finish_time <![CDATA[<=]]> #{lastDay}
         </if>
     </select>
+
+    <select id="getRecordMonthCount" resultType="java.lang.Integer">
+        SELECT count(record_id) as counts
+        FROM yt_dyz_ad_record
+        where user_id= #{userId} and revenue > 0
+        <if test="adSourceType != null and adSourceType!=888">
+            and ad_source_type = #{adSourceType}
+        </if>
+        <if test="startTime != null">
+            and finish_time > #{startTime}
+        </if>
+    </select>
 </mapper>