Browse Source

fix:ios端用户总收益+补充累加登陆前游客收益(前期实现缺陷)

hidewnd 11 hours ago
parent
commit
835df57844

+ 3 - 0
yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java

@@ -92,6 +92,9 @@ public class YtAppUserListView extends PageMeta {
 
 
     @ApiModelProperty("前三日总收益")
     @ApiModelProperty("前三日总收益")
     private BigDecimal nearlyIncome;
     private BigDecimal nearlyIncome;
+
+    @ApiModelProperty("前三日总收益计算开始时间")
+    private Date nearlyBeginTime;
     /** 登录历史记录 */
     /** 登录历史记录 */
     @ApiModelProperty("登录历史记录")
     @ApiModelProperty("登录历史记录")
     private List<YtDyzLoginRecord> loginRecordList;
     private List<YtDyzLoginRecord> loginRecordList;

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

@@ -88,6 +88,10 @@ public class UserController {
         List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(userIds);
         List<YtDyzLoginRecord> dyzLogins = loginRecordMapper.getLoginRecordByIds(userIds);
         Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream()
         Map<String, List<YtDyzAdRecord>> userAdMap = adRecords.stream()
                 .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
                 .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
+        // 筛选查询游客广告记录
+        Map<String, List<YtDyzAdRecord>> userVisitorAdMap = adRecords.stream()
+                .filter(item -> AdRecordEnum.LOGIN_BEFORE.getCode().equals(item.getLoginStatus()))
+                .collect(Collectors.groupingBy(YtDyzAdRecord::getUserId));
         Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream()
         Map<String, List<YtDyzLoginRecord>> loginMap = dyzLogins.stream()
                 .collect(Collectors.groupingBy(YtDyzLoginRecord::getUserId));
                 .collect(Collectors.groupingBy(YtDyzLoginRecord::getUserId));
         for (YtAppUserListView user : result) {
         for (YtAppUserListView user : result) {
@@ -95,6 +99,20 @@ public class UserController {
                 user.setLoginRecordList(loginMap.get(user.getUserId()));
                 user.setLoginRecordList(loginMap.get(user.getUserId()));
             }
             }
             computeTodayIncome(user, userAdMap.get(user.getUserId()), param);
             computeTodayIncome(user, userAdMap.get(user.getUserId()), param);
+            // 由于ios服务端 总收益字段未累加游客广告收益,手动查询并累加至用户总收益
+            List<YtDyzAdRecord> visitorAdList = userVisitorAdMap.get(user.getUserId());
+            if (CollUtil.isNotEmpty(visitorAdList)) {
+                BigDecimal totalVisitorRevenue = visitorAdList.stream().map(YtDyzAdRecord::getRevenue)
+                        .filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
+                user.setTotalIncome(user.getTotalIncome() == null ? totalVisitorRevenue : user.getTotalIncome().add(totalVisitorRevenue));
+                if (user.getNearlyBeginTime() != null) {
+                    BigDecimal nearlyRevenue = visitorAdList.stream()
+                            .filter(item-> DateUtil.parseDate(item.getFinishTime()).before(user.getNearlyBeginTime()))
+                            .map(YtDyzAdRecord::getRevenue).filter(Objects::nonNull)
+                            .reduce(BigDecimal.ZERO, BigDecimal::add);
+                    user.setNearlyIncome(user.getNearlyIncome() == null ? nearlyRevenue : user.getNearlyIncome().add(nearlyRevenue));
+                }
+            }
         }
         }
     }
     }
 
 

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

@@ -161,7 +161,8 @@
     </select>
     </select>
     <select id="getByUserIds" resultType="com.ytpm.app.model.YtDyzAdRecord">
     <select id="getByUserIds" resultType="com.ytpm.app.model.YtDyzAdRecord">
         select
         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,2 as login_status
         from yt_dyz_ad_record
         from yt_dyz_ad_record
         where user_id in
         where user_id in
         <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
         <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
@@ -169,7 +170,8 @@
         </foreach>
         </foreach>
         union
         union
         select
         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, 1 as login_status
         from yt_dyz_ad_record_visitor
         from yt_dyz_ad_record_visitor
         where ad_source_type != 1 and user_id in
         where ad_source_type != 1 and user_id in
         <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">
         <foreach collection="userIds.split(',')" open="(" close=")" separator="," item="item">

+ 4 - 1
yt-ios-lemon/lemon-ios-service/src/main/resources/mapper/AppUserMapper.xml

@@ -304,7 +304,10 @@
     </select>
     </select>
     <select id="queryAll" resultType="com.ytpm.app.view.YtAppUserListView">
     <select id="queryAll" resultType="com.ytpm.app.view.YtAppUserListView">
         select
         select
-        user_id, app_id,phone,device_id, ditch_id, nick_name,head_img, power, registry_time, last_login_time, last_login_ip, login_days, total_video, total_income, red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ios_id, platform_id
+        user_id, app_id,phone,device_id, ditch_id, nick_name,head_img, power, registry_time, last_login_time,
+        last_login_ip, login_days, total_video, total_income, red_packet_balance, red_packet_amount,
+        points_balance, points_total, withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ios_id, platform_id,
+        nearly_income, nearly_begin_time
         from yt_dyz_user
         from yt_dyz_user
         where 1 = 1
         where 1 = 1
         <if test="userId != null and userId !=''">
         <if test="userId != null and userId !=''">