소스 검색

Merge remote-tracking branch 'origin/master'

marxjaw 1 개월 전
부모
커밋
5e27a57109
25개의 변경된 파일378개의 추가작업 그리고 66개의 파일을 삭제
  1. 10 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppMapper.java
  2. 18 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/RiskMapper.java
  3. 9 2
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/AgentDitchServiceImpl.java
  4. 20 4
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java
  5. 22 1
      yt-agent/agent-service/src/main/resources/mapper/AppMapper.xml
  6. 57 0
      yt-agent/agent-service/src/main/resources/mapper/RiskMapper.xml
  7. 3 0
      yt-common/src/main/java/com/ytpm/agent/param/AppParam.java
  8. 3 0
      yt-common/src/main/java/com/ytpm/agent/view/AgentAppView.java
  9. 3 0
      yt-common/src/main/java/com/ytpm/app/model/YtAppDefaultConfig.java
  10. 4 0
      yt-common/src/main/java/com/ytpm/app/model/YtDyzUser.java
  11. 2 1
      yt-common/src/main/java/com/ytpm/app/view/WxDefaultConfig.java
  12. 3 0
      yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java
  13. 1 1
      yt-common/src/main/java/com/ytpm/handle/AbstractLoginService.java
  14. 45 0
      yt-common/src/main/java/com/ytpm/risk/model/YtRiskTemplateLog.java
  15. 36 0
      yt-common/src/main/java/com/ytpm/risk/param/RiskTemplateLogParam.java
  16. 44 0
      yt-common/src/main/java/com/ytpm/risk/view/RiskTemplateLogView.java
  17. 6 5
      yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/ApkServiceImpl.java
  18. 2 2
      yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AdServiceImpl.java
  19. 9 5
      yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/VisitorLoginServiceImpl.java
  20. 61 28
      yt-question/yt-question-service/src/main/resources/mapper/AppUserMapper.xml
  21. 9 0
      yt-risk/risk-manage/pom.xml
  22. 3 11
      yt-risk/risk-manage/src/main/java/com/ytpm/RiskManageApplication.java
  23. 1 1
      yt-risk/risk-manage/src/main/java/com/ytpm/config/SchedulerConfig.java
  24. 5 5
      yt-risk/risk-manage/src/main/java/com/ytpm/handle/CustomerExceptionHandler.java
  25. 2 0
      yt-risk/risk-manage/src/main/resources/bootstrap.yml

+ 10 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppMapper.java

@@ -47,4 +47,14 @@ public interface AppMapper {
     YtApp getByDitchIdAndSuperiorId(@Param("ditchId") Long ditchId, @Param("superiorId") String superiorId);
 
     List<YtApp> getBySuperiorId(@Param("superiorId") String superiorId);
+
+    /**
+     * 批量删除应用
+     */
+    void deleteAppIds(@Param("ids") List<String> ids);
+
+    /**
+     * 删除指定应用所有风控规则
+     */
+    void deleteRisks(@Param("ids") List<String> ids);
 }

+ 18 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/RiskMapper.java

@@ -6,13 +6,16 @@ import com.ytpm.agent.model.YtPlatformDeblocking;
 import com.ytpm.agent.view.AgentAppClassView;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
+import com.ytpm.risk.model.YtRiskTemplateLog;
 import com.ytpm.risk.param.RiskBannedListParam;
 import com.ytpm.risk.param.RiskConfigParam;
 import com.ytpm.risk.param.RiskDeblockingListParam;
 import com.ytpm.risk.param.RiskRelativeAppParam;
+import com.ytpm.risk.param.RiskTemplateLogParam;
 import com.ytpm.risk.view.RiskBannedListView;
 import com.ytpm.risk.view.RiskConfigListView;
 import com.ytpm.risk.view.RiskDeblockingListView;
+import com.ytpm.risk.view.RiskTemplateLogView;
 import com.ytpm.risk.view.RiskTemplateView;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -113,4 +116,19 @@ public interface RiskMapper {
      * 根据APP 查询当月的封禁数据
      */
     List<YtPlatformBanned> queryMonthBanned(@Param("appIdList") List<String> appIdList);
+
+    /**
+     * 根据模板ID查询模板配置信息
+     */
+    List<YtRiskConfig> selectRiskConfig(@Param("templateId") String templateId);
+
+    /**
+     * 新增模板配置修改记录
+     */
+    void addRiskTemplateLog(@Param("logs") List<YtRiskTemplateLog> logs);
+
+    /**
+     * 查询风控配置修改记录
+     */
+    List<RiskTemplateLogView> selectTemplateLog(RiskTemplateLogParam param);
 }

+ 9 - 2
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/AgentDitchServiceImpl.java

@@ -6,7 +6,6 @@ import com.ytpm.agent.model.YtApp;
 import com.ytpm.agent.model.YtDitch;
 import com.ytpm.agent.param.DitchListParam;
 import com.ytpm.agent.view.AgentDitchView;
-import com.ytpm.agent.view.AgentUserInfo;
 import com.ytpm.dao.AgentDitchMapper;
 import com.ytpm.dao.AppMapper;
 import com.ytpm.general.RepMessage;
@@ -18,6 +17,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 
@@ -59,7 +59,7 @@ public class AgentDitchServiceImpl implements AgentDitchService {
         //同时修改app中的渠道类型名称
         Long ditchId = param.getDitchId();
         YtApp ytApp = appMapper.selectByDitchId(ditchId);
-        if(Objects.nonNull(ytApp)){
+        if (ytApp != null) {
             ytApp.setDitchName(param.getDitchName());
             appMapper.updateOne(ytApp);
         }
@@ -72,6 +72,13 @@ public class AgentDitchServiceImpl implements AgentDitchService {
         ytDitch.setIsDelete(1);
         ytDitch.setDitchId(ditchId);
         agentDitchMapper.update(ytDitch);
+        // 20250917 删除渠道后 同步删除渠道下应用(假删除)及应用风控配置(真删除)
+        YtApp ytApp = appMapper.selectByDitchId(ditchId);
+        if(ytApp != null){
+            List<String> ids = Collections.singletonList(ytApp.getAppId());
+            appMapper.deleteAppIds(ids);
+            appMapper.deleteRisks(ids);
+        }
         return Result.resultOk(RepMessage.DELETE_SUCCESS);
     }
 }

+ 20 - 4
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -23,9 +23,7 @@ import com.ytpm.app.param.AppUserParam;
 import com.ytpm.custom.CustomField;
 import com.ytpm.dao.AgentAppMapper;
 import com.ytpm.dao.AgentDictMapper;
-import com.ytpm.dao.AppMapper;
 import com.ytpm.dao.RiskMapper;
-import com.ytpm.general.PageMeta;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
@@ -33,6 +31,7 @@ import com.ytpm.handle.CustomerException;
 import com.ytpm.risk.enums.BannedTypeEnum;
 import com.ytpm.risk.model.YtRiskConfig;
 import com.ytpm.risk.model.YtRiskTemplate;
+import com.ytpm.risk.model.YtRiskTemplateLog;
 import com.ytpm.risk.param.RiskBannedListParam;
 import com.ytpm.risk.param.RiskBannedParam;
 import com.ytpm.risk.param.RiskConfigListParam;
@@ -50,13 +49,11 @@ import com.ytpm.util.RedisService;
 import com.ytpm.utils.FeignClientInvoker;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.extern.slf4j.Slf4j;
-import org.aspectj.weaver.loadtime.Agent;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.lang.reflect.Field;
-import java.lang.reflect.Type;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -272,9 +269,15 @@ public class RiskServiceImpl implements RiskService {
         if(Objects.isNull(old)){
             return Result.resultErr(RepMessage.OBJECT_NOT_EXIST);
         }
+        // 获取原有配置信息
+        List<YtRiskConfig> configs = riskMapper.selectRiskConfig(param.getTemplateId());
+        Map<String, String> valueMap = configs.stream().collect(Collectors.toMap(
+                YtRiskConfig::getConfigId, YtRiskConfig::getConfigVal,
+                (o1, o2) -> o2));
         //修改配置值
         List<RiskConfigListParam> configList = param.getConfigList();
         StringBuilder content = new StringBuilder();
+        List<YtRiskTemplateLog> logs = new ArrayList<>();
         for (RiskConfigListParam listParam : configList) {
             YtRiskConfig config = new YtRiskConfig();
             config.setConfigId(listParam.getConfigId());
@@ -284,6 +287,18 @@ public class RiskServiceImpl implements RiskService {
             if(CharSequenceUtil.isNotBlank(format)){
                 content.append(format).append(",");
             }
+            String oldValue = valueMap.get(listParam.getConfigId());
+            if (!StrUtil.emptyIfNull(oldValue).equals(StrUtil.emptyIfNull(listParam.getConfigVal()))) {
+                YtRiskTemplateLog log = new  YtRiskTemplateLog();;
+                log.setTemplateId(old.getTemplateId());
+                log.setTemplateCode(old.getTemplateCode());
+                log.setConfigId(listParam.getConfigId());
+                log.setOldValue(oldValue);
+                log.setNewValue(listParam.getConfigVal());
+                log.setOperator(param.getChannelId());
+                log.setOperatorName(param.getChannelId());
+                logs.add(log);
+            }
         }
         //同步修改配置模版内容
         YtRiskTemplate template = new YtRiskTemplate();
@@ -292,6 +307,7 @@ public class RiskServiceImpl implements RiskService {
         template.setUpdateTime(new Date());
         template.setUpdateUserId(param.getChannelId());
         riskMapper.updateByTempId(template);
+        riskMapper.addRiskTemplateLog(logs);
         return Result.resultOk(RepMessage.MODIFY_SUCCESS);
     }
 

+ 22 - 1
yt-agent/agent-service/src/main/resources/mapper/AppMapper.xml

@@ -128,6 +128,27 @@
     <update id="deleteApp">
         update yt_app set enabled = 0 where app_id = #{appId}
     </update>
+    <update id="deleteAppIds">
+        update yt_app set enabled = 0
+        where app_id in <foreach collection="ids" item="id" open="(" separator="," close=")" >#{id}</foreach>
+    </update>
+    <delete id="deleteRisks">
+        delete from yt_risk_config where config_id in (
+            select yt_risk_template_config.config_id
+            from yt_risk_template_config
+            left join yt_risk_template on yt_risk_template_config.template_id = yt_risk_template.template_id
+            where yt_risk_template.app_id in <foreach collection="ids" item="appId" open="(" separator="," close=")">#{appId}</foreach>
+        );
+        delete from yt_risk_template_config where template_id in (
+            select yt_risk_template.template_id
+            from yt_risk_template
+            where yt_risk_template.app_id in <foreach collection="ids" item="appId" open="(" separator="," close=")">#{appId}</foreach>
+        );
+        delete from yt_cofig_app
+        where app_id in <foreach collection="ids" item="appId" open="(" separator="," close=")">#{appId}</foreach>;
+        delete from yt_risk_template
+        where app_id in <foreach collection="ids" item="appId" open="(" separator="," close=")">#{appId}</foreach>;
+    </delete>
     <select id="selectPrimary" resultType="com.ytpm.agent.model.YtApp">
         select
             app_id,ditch_id, ditch_name,  app_key, app_name,user_id, app_type, apk_url, qr_code, version_code, update_tips, enabled,superior_id
@@ -145,7 +166,7 @@
         select
             app_id, ditch_id, ditch_name, app_key, app_name,user_id, app_type, apk_url, qr_code, version_code, update_tips, enabled,ditch_name,ditch_id
         from yt_app
-        where ditch_id = #{ditchId}
+        where ditch_id = #{ditchId} and enabled = 1
     </select>
     <select id="getAppList" resultType="com.ytpm.middle.view.AppListVO">
         select

+ 57 - 0
yt-agent/agent-service/src/main/resources/mapper/RiskMapper.xml

@@ -312,6 +312,32 @@
             )
         </foreach>
     </insert>
+    <insert id="addRiskTemplateLog">
+        insert into yt_risk_template_log
+        (
+        template_id,
+        config_id,
+        template_code,
+        old_value,
+        new_value,
+        operator,
+        operator_time,
+        operator_name
+        )
+        values
+        <foreach collection="logs" item="item" separator="," index="index">
+        (
+            #{item.templateId},
+            #{item.configId},
+            #{item.templateCode},
+            #{item.oldValue},
+            #{item.newValue},
+            #{item.operator},
+            now(),
+            #{item.operatorName}
+        )
+        </foreach>
+    </insert>
 
     <select id="selectOneTemplate" resultType="com.ytpm.risk.model.YtRiskTemplate">
         select
@@ -432,4 +458,35 @@
             </if>
         </where>
     </select>
+    <select id="selectRiskConfig" resultType="com.ytpm.risk.model.YtRiskConfig">
+        SELECT
+            rt.template_id,
+            rt.template_code,
+            rt.template_name,
+            rt.template_content,
+            rt.effect_node,
+            rt.enabled,
+            rc.config_id,
+            rc.field_name,
+            rc.field_desc,
+            rc.config_type,
+            rc.config_val,
+            rc.multy
+        FROM yt_risk_template rt
+        LEFT JOIN yt_risk_template_config rtc ON rt.template_id = rtc.template_id
+        LEFT JOIN yt_risk_config rc ON rtc.config_id = rc.config_id
+        WHERE rt.template_id = #{templateId}
+    </select>
+    <select id="selectTemplateLog" resultType="com.ytpm.risk.view.RiskTemplateLogView">
+        select config_id, template_code, old_value, new_value, operator, operator_time, operator_name
+        from yt_risk_template_log
+        where template_id = #{templateId}
+        <if test="configId != null">
+            and config_id = #{configId}
+        </if>
+        <if test="operator != null">
+            and operator = #{operator}
+        </if>
+        order by operator_time desc
+    </select>
 </mapper>

+ 3 - 0
yt-common/src/main/java/com/ytpm/agent/param/AppParam.java

@@ -85,4 +85,7 @@ public class AppParam {
 
     @ApiModelProperty("启动页等待时间(秒)")
     private Integer startWaitTime;
+
+    @ApiModelProperty("是否允许自动刷新")
+    private Integer canAllowAutoRefresh;
 }

+ 3 - 0
yt-common/src/main/java/com/ytpm/agent/view/AgentAppView.java

@@ -173,5 +173,8 @@ public class AgentAppView {
     @ApiModelProperty("原生(信息流)间隔时长(秒)")
     private Integer flowIntervalTime;
 
+    @ApiModelProperty("是否允许自动刷新")
+    private Integer canAllowAutoRefresh;
+
 
 }

+ 3 - 0
yt-common/src/main/java/com/ytpm/app/model/YtAppDefaultConfig.java

@@ -77,6 +77,9 @@ public class YtAppDefaultConfig {
     @ApiModelProperty("启动页等待时间(秒)")
     private Integer startWaitTime;
 
+    @ApiModelProperty("是否允许自动刷新")
+    private Integer canAllowAutoRefresh;
+
     public YtAppDefaultConfig(Object o, String appName, String wxAppId, String wxSecret, String appId, String appKey, int appType,String ditchId) {
         this.configId = Objects.isNull(o)?null: Integer.parseInt(o.toString());
         this.configName = appName;

+ 4 - 0
yt-common/src/main/java/com/ytpm/app/model/YtDyzUser.java

@@ -62,6 +62,10 @@ public class YtDyzUser extends PageMeta {
     /** 总收益 */
     @ApiModelProperty("总收益")
     private BigDecimal totalIncome;
+
+    @ApiModelProperty("前三日总收益")
+    private BigDecimal nearlyIncome;
+
     /** 红包余额 */
     @CustomField(node = 1)
     @ApiModelProperty("红包余额")

+ 2 - 1
yt-common/src/main/java/com/ytpm/app/view/WxDefaultConfig.java

@@ -70,5 +70,6 @@ public class WxDefaultConfig {
     @ApiModelProperty("启动页等待时间(秒)")
     private Integer startWaitTime;
 
-
+    @ApiModelProperty("是否允许自动刷新")
+    private Integer canAllowAutoRefresh;
 }

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

@@ -89,6 +89,9 @@ public class YtAppUserListView extends PageMeta {
     private String communicationOperator;
     @ApiModelProperty("今日收益")
     private BigDecimal todayIncome;
+
+    @ApiModelProperty("前三日总收益")
+    private BigDecimal nearlyIncome;
     /** 登录历史记录 */
     @ApiModelProperty("登录历史记录")
     private List<YtDyzLoginRecord> loginRecordList;

+ 1 - 1
yt-common/src/main/java/com/ytpm/handle/AbstractLoginService.java

@@ -148,7 +148,7 @@ public abstract class AbstractLoginService {
             beforeDeadWithUserCrud(loginParam, ytDyzUser, paramMap);
             //如果当前登录是本日第一次登录则登录天数+1
             //202550916 游客登陆不记录登陆信息
-//            deadWithUserCrud(loginParam, ytDyzUser, paramMap);
+            deadWithUserCrud(loginParam, ytDyzUser, paramMap);
         }
         // 保存游客广告信息
         WxDefaultConfig defaultConfig = (WxDefaultConfig) paramMap.get("defaultConfig");

+ 45 - 0
yt-common/src/main/java/com/ytpm/risk/model/YtRiskTemplateLog.java

@@ -0,0 +1,45 @@
+package com.ytpm.risk.model;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * @author lih
+ * @date 2025-09-18 17:30
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@ApiModel("风控配置修改记录表")
+public class YtRiskTemplateLog {
+
+    @ApiModelProperty("模板ID")
+    private String templateId;
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("风控编码")
+    private String templateCode;
+
+    @ApiModelProperty("原风控值")
+    private String oldValue;
+
+    @ApiModelProperty("修改后风控值")
+    private String newValue;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作人姓名")
+    private String operatorName;
+
+    @ApiModelProperty("操作时间")
+    private Date operatorTime;
+}

+ 36 - 0
yt-common/src/main/java/com/ytpm/risk/param/RiskTemplateLogParam.java

@@ -0,0 +1,36 @@
+package com.ytpm.risk.param;
+
+
+import com.ytpm.general.PageMeta;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author lih
+ * @date 2025-09-19 11:09
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("风控配置修改记录入参")
+@EqualsAndHashCode(callSuper = true)
+public class RiskTemplateLogParam extends PageMeta implements Serializable {
+
+    @ApiModelProperty("模板ID")
+    private String templateId;
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("是否查询自身记录 (1是 0 否)")
+    private Integer querySelf;
+
+    @ApiModelProperty("操作人Id")
+    private String operator;
+}

+ 44 - 0
yt-common/src/main/java/com/ytpm/risk/view/RiskTemplateLogView.java

@@ -0,0 +1,44 @@
+package com.ytpm.risk.view;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author lih
+ * @date 2025-09-19 11:06
+ */
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("易推风控配置修改记录")
+public class RiskTemplateLogView implements Serializable {
+
+    @ApiModelProperty("配置ID")
+    private String configId;
+
+    @ApiModelProperty("风控编码")
+    private String templateCode;
+
+    @ApiModelProperty("原风控值")
+    private String oldValue;
+
+    @ApiModelProperty("修改后风控值")
+    private String newValue;
+
+    @ApiModelProperty("操作人")
+    private String operator;
+
+    @ApiModelProperty("操作人姓名")
+    private String operatorName;
+
+    @ApiModelProperty("操作时间")
+    private Date operatorTime;
+}

+ 6 - 5
yt-middle/middle-platform/src/main/java/com/ytpm/middle/service/impl/ApkServiceImpl.java

@@ -60,10 +60,10 @@ public class ApkServiceImpl implements ApkService {
     @Value("${risk.config.initAdCompletedCount:10}")
     private String initAdCompletedCount;
 
-    @Value("${risk.config.initFirstCount:3}")
+    @Value("${risk.config.initFirstCount:4}")
     private String initFirstCount;
 
-    @Value("${risk.config.initAverageRevenue:0.05}")
+    @Value("${risk.config.initAverageRevenue:0.12}")
     private String initAverageRevenue;
 
     @Value("${risk.config.initMonthCount:1}")
@@ -72,10 +72,10 @@ public class ApkServiceImpl implements ApkService {
     @Value("${risk.config.initMonthTaskLimit:80}")
     private String initMonthTaskLimit;
 
-    @Value("${risk.config.initHourCount:24}")
+    @Value("${risk.config.initHourCount:3}")
     private String initHourCount;
 
-    @Value("${risk.config.initHourTaskLimit:5}")
+    @Value("${risk.config.initHourTaskLimit:10}")
     private String initHourTaskLimit;
 
     @Value("${risk.config.visitor.initEcpmLimit:20}")
@@ -143,6 +143,7 @@ public class ApkServiceImpl implements ApkService {
                 view.setLowValueTip(config.getLowValueTip());
                 view.setBrushTip(config.getBrushTip());
                 view.setFlowIntervalTime(config.getFlowIntervalTime());
+                view.setCanAllowAutoRefresh(config.getCanAllowAutoRefresh());
             }
             if(CharSequenceUtil.isBlank(view.getApkUrl()))continue;
             String substring = view.getApkUrl().substring(view.getApkUrl().lastIndexOf("/")+1).toLowerCase(Locale.ENGLISH);
@@ -212,7 +213,7 @@ public class ApkServiceImpl implements ApkService {
         config.setBrushTip(param.getBrushTip());
         config.setCanCacheVideo(param.getCanCacheVideo());
         config.setStartWaitTime(param.getStartWaitTime());
-
+        config.setCanAllowAutoRefresh(param.getCanAllowAutoRefresh());
         feignInvoker.invoke(app.getServiceName(), "updateAppConfig",config);
     }
 

+ 2 - 2
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/AdServiceImpl.java

@@ -77,8 +77,8 @@ public class AdServiceImpl implements AdService {
     @Transactional(rollbackFor = Exception.class)
     public Result<?> saveRecord(DyzAdRecordParam param) {
         YtDyzUser user = appUserMapper.selectPrimaryKey(param.getUserId());
-        log.info(StrUtil.format("[saveRecord]:{} ", param.getBeginTime()));
-        if (Objects.isNull(user)) {
+        log.warn(StrUtil.format("[saveRecord] userId:{} revenue:{} ", param.getUserId(), param.getRevenue()));
+        if(Objects.isNull(user)){
             return Result.resultOk(RepMessage.SAVE_SUCCESS);
         }
         if (!UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus())) {

+ 9 - 5
yt-question/yt-question-service/src/main/java/com/ytpm/question/service/impl/VisitorLoginServiceImpl.java

@@ -141,10 +141,10 @@ public class VisitorLoginServiceImpl extends AbstractLoginService {
         newUser.setPhone(loginParam.getPhone());
         newUser.setDeviceId(loginParam.getDeviceId());
         //如果当前登录是本日第一次登录则登录天数+1
-        int loginCount = loginRecordMapper.getTodayLoginCount(old.getUserId());
-        if (loginCount < 1) {
-            newUser.setLoginDays(old.getLoginDays() + 1);
-        }
+//        int loginCount = loginRecordMapper.getTodayLoginCount(old.getUserId());
+//        if (loginCount < 1) {
+//            newUser.setLoginDays(old.getLoginDays() + 1);
+//        }
         appUserMapper.updateUser(newUser);
     }
 
@@ -184,6 +184,7 @@ public class VisitorLoginServiceImpl extends AbstractLoginService {
         List<DyzAdRecordParam> preAdList = visitorLoginParam.getPreAdList();
         List<String> adRecordIds = new ArrayList<>();
         if (CollUtil.isNotEmpty(preAdList)) {
+            BigDecimal totalRevenue = BigDecimal.ZERO;
             for (DyzAdRecordParam adRecordParam : preAdList) {
                 if (adRecordParam == null) {
                     continue;
@@ -194,9 +195,12 @@ public class VisitorLoginServiceImpl extends AbstractLoginService {
                 adRecordParam.setLoginStatus(AdRecordEnum.LOGIN_BEFORE.getCode());
                 String recordId = adService.saveRecordAndChangeUser(adRecordParam, ytDyzUser);
                 adRecordIds.add(recordId);
+                totalRevenue = adRecordParam.getRevenue() == null ? totalRevenue : totalRevenue.add(adRecordParam.getRevenue());
             }
+            log.info(StrUtil.format("[visitor adRecords] userId:{} recordCount:{} revenue:{} ",
+                    ytDyzUser.getUserId(), adRecordIds.size(), totalRevenue));
         }
-        if (CollUtil.isEmpty(adRecordIds)) {
+        if(CollUtil.isEmpty(adRecordIds)) {
             throw new CustomerException(StrUtil.emptyToDefault(defaultConfig.getLowValueTip(), RepMessage.RISK_VISITOR_LOWER_VALUE));
         }
         ytDyzUser.setPreAdRecordList(adService.queryRecordByIds(adRecordIds));

+ 61 - 28
yt-question/yt-question-service/src/main/resources/mapper/AppUserMapper.xml

@@ -12,6 +12,7 @@
          login_days,
          total_video,
          total_income,
+         nearly_income,
          red_packet_balance,
          red_packet_amount,
          points_balance,
@@ -37,6 +38,7 @@
                 #{loginDays},
                 #{totalVideo},
                 #{totalIncome},
+                #{nearlyIncome},
                 #{redPacketBalance},
                 #{redPacketAmount},
                 #{pointsBalance},
@@ -162,7 +164,10 @@
                 start_wait_time = #{startWaitTime},
             </if>
             <if test="canCacheVideo != null">
-                can_cache_video = #{canCacheVideo}
+                can_cache_video = #{canCacheVideo},
+            </if>
+            <if test="canAllowAutoRefresh != null">
+                can_allow_auto_refresh = #{canAllowAutoRefresh}
             </if>
         </set>
         where app_id = #{appId}
@@ -206,6 +211,9 @@
             <if test="totalIncome != null">
                 total_income = #{totalIncome},
             </if>
+            <if test="nearlyIncome != null">
+                nearly_income = #{nearlyIncome},
+            </if>
             <if test="redPacketBalance != null">
                 red_packet_balance = #{redPacketBalance},
             </if>
@@ -247,14 +255,20 @@
     </delete>
     <select id="getYtAppUser" resultType="com.ytpm.app.model.YtDyzUser">
         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, 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, nearly_income,
+            red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total,
+            sign_days, user_status, risk_reason, wx_open_id, platform_id
         from yt_dyz_user
         where wx_open_id = #{openid}
           and ditch_id = #{ditchId}
     </select>
     <select id="queryAll" resultType="com.ytpm.app.view.YtAppUserListView">
         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, 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, nearly_income,
+        red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total,
+        sign_days, user_status, risk_reason, wx_open_id, platform_id
         from yt_dyz_user
         where 1 = 1
         <if test="userId != null and userId !=''">
@@ -291,7 +305,9 @@
     </select>
     <select id="selectPrimaryKey" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_id,app_id,phone,device_id, ditch_id, head_img, nick_name, 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, platform_id, power
+            user_id,app_id,phone,device_id, ditch_id, head_img, nick_name, 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, platform_id, power, nearly_income
         from yt_dyz_user
         where user_id = #{userId}
     </select>
@@ -307,6 +323,7 @@
         <result column="login_days" property="loginDays" />
         <result column="total_video" property="totalVideo" />
         <result column="total_income" property="totalIncome" />
+        <result column="nearly_income" property="nearlyIncome" />
         <result column="red_packet_balance" property="redPacketBalance" />
         <result column="red_packet_amount" property="redPacketAmount" />
         <result column="points_balance" property="pointsBalance" />
@@ -344,6 +361,7 @@
         du.login_days,
         du.total_video,
         du.total_income,
+        du.nearly_income,
         du.red_packet_balance,
         du.red_packet_amount,
         du.points_balance,
@@ -385,11 +403,10 @@
 
     <select id="queryAllByTime" resultType="com.ytpm.app.model.YtDyzUser">
         SELECT
-        user_id,app_id,phone,device_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, platform_id
+        user_id,app_id,phone,device_id, nick_name, head_img, power,
+        registry_time,last_login_time, last_login_ip, login_days, total_video, total_income, nearly_income,
+        red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total,
+        sign_days, user_status, risk_reason, wx_open_id, platform_id
         FROM yt_dyz_user
         <where>
             <if test="startTime != null">
@@ -448,7 +465,8 @@
             taku_app_id, taku_key, taku_banner_pid, taku_native_pid, taku_reward_pid, taku_interstitial_pid,
             can_use_root, can_use_adb, can_use_float, can_accumulation,
             ditch_id, power_wait_time, interstitial_interval_time,
-            low_value_tip, brush_tip,flow_interval_time,task_limit_tip,start_wait_time,can_cache_video
+            low_value_tip, brush_tip,flow_interval_time,task_limit_tip,start_wait_time,
+            can_cache_video,can_allow_auto_refresh
         from yt_app_default_config
         where app_type = #{appType}
     </select>
@@ -458,7 +476,8 @@
             answer_path,power_path,can_simulator, taku_app_id, taku_key, taku_banner_pid, taku_native_pid,
             taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,
             ditch_id, power_wait_time, interstitial_interval_time,
-            low_value_tip, brush_tip,flow_interval_time,task_limit_tip,start_wait_time,can_cache_video
+            low_value_tip, brush_tip,flow_interval_time,task_limit_tip,start_wait_time,
+            can_cache_video,can_allow_auto_refresh
         from yt_app_default_config
         where app_id = #{appId}
     </select>
@@ -468,22 +487,23 @@
             answer_path,power_path,can_simulator, taku_app_id, taku_key, taku_banner_pid, taku_native_pid,
             taku_reward_pid, taku_interstitial_pid, can_use_root, can_use_adb, can_use_float, can_accumulation,
             ditch_id, power_wait_time, interstitial_interval_time,
-            low_value_tip, brush_tip, flow_interval_time,task_limit_tip,start_wait_time,can_cache_video
+            low_value_tip, brush_tip, flow_interval_time,task_limit_tip,start_wait_time,
+            can_cache_video,can_allow_auto_refresh
         from yt_app_default_config
         where app_id = #{appId}
     </select>
     <select id="queryByOpenid" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_id,phone,device_id, head_img, nick_name, 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, ditch_id, app_id, platform_id, power
+            user_id,phone,device_id, head_img, nick_name, registry_time, last_login_time, last_login_ip, login_days,
+            total_video, total_income, nearly_income, red_packet_balance, red_packet_amount, points_balance, points_total,
+            withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id, power
         from yt_dyz_user
         where wx_open_id = #{openid}
     </select>
     <select id="getByDeviceId" resultType="java.lang.String">
-        select
-            platform_id
+        select platform_id
         from yt_dyz_user
-        where device_id = #{deviceId}
-          and wx_open_id = #{openid}
+        where device_id = #{deviceId} and wx_open_id = #{openid}
         limit 1
     </select>
     <select id="getConfigByIds" resultType="com.ytpm.app.view.WxDefaultConfig">
@@ -500,8 +520,7 @@
         </foreach>
     </select>
     <select id="getAdCount" resultType="java.lang.Integer">
-        select
-        sum(total_video)
+        select sum(total_video)
         from yt_dyz_user
         where app_id in
         <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
@@ -509,8 +528,7 @@
         </foreach>
     </select>
     <select id="getRevenueCount" resultType="java.math.BigDecimal">
-        select
-        sum(total_income)
+        select sum(total_income)
         from yt_dyz_user
         where app_id in
         <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
@@ -721,7 +739,10 @@
     </select>
     <select id="getMonthRegistryUser" resultType="com.ytpm.app.model.YtDyzUser">
         select
-        user_id, head_img, nick_name, 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, ditch_id, app_id, platform_id, power, phone, device_id
+        user_id, head_img, nick_name, registry_time, last_login_time, last_login_ip, login_days,
+        total_video, total_income, nearly_income, red_packet_balance, red_packet_amount, points_balance, points_total,
+        withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id,
+        power, phone, device_id
         from yt_dyz_user
         where app_id in
         <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
@@ -750,20 +771,25 @@
     </select>
     <select id="getLastRegistryUser" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_id, head_img, nick_name, 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, ditch_id, app_id, platform_id, power, phone, device_id, phone_json
+            user_id, head_img, nick_name, registry_time, last_login_time, last_login_ip, login_days,
+            total_video, total_income, nearly_income, red_packet_balance, red_packet_amount, points_balance, points_total,
+            withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id,
+            power, phone, device_id, phone_json
         from yt_dyz_user
         where device_id = #{deviceId}
     </select>
 
     <select id="getByDeviceAndDitch" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_id, head_img, nick_name, 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, ditch_id, app_id, platform_id, power, phone, device_id, phone_json
+            user_id, head_img, nick_name, registry_time, last_login_time, last_login_ip, login_days,
+            total_video, total_income, nearly_income, red_packet_balance, red_packet_amount, points_balance, points_total,
+            withdraw_total, sign_days, user_status, risk_reason, wx_open_id, ditch_id, app_id, platform_id,
+            power, phone, device_id, phone_json
         from yt_dyz_user
         where device_id = #{deviceId} and ditch_id = #{ditchId} limit 1
     </select>
     <select id="getPlatformByDeviceId" resultType="java.lang.String">
-        select
-            platform_id
+        select platform_id
         from yt_dyz_user
         where device_id = #{deviceId}
         limit 1
@@ -779,8 +805,15 @@
     </update>
     <update id="updateTotal">
         UPDATE yt_dyz_user
-        SET total_video = COALESCE(total_video, 0) + #{videoCount},
-            total_income = COALESCE(total_income, 0) + #{revenue}
+        SET nearly_income = 0, nearly_begin_time = NOW()
         WHERE user_id = #{userId}
+          AND last_login_time <![CDATA[ < ]]>  DATE_SUB(NOW(), INTERVAL 3 DAY)
+          AND IFNULL(nearly_begin_time, NOW()) <![CDATA[ < ]]> DATE_SUB(NOW(), INTERVAL 3 DAY);
+        UPDATE yt_dyz_user SET nearly_begin_time = NOW() WHERE user_id = #{userId} AND nearly_begin_time IS NULL;
+        UPDATE yt_dyz_user
+        SET total_video = COALESCE(total_video, 0) + #{videoCount},
+            total_income = COALESCE(total_income, 0) + #{revenue},
+            nearly_income = COALESCE(nearly_income, 0) + #{revenue}
+        WHERE user_id = #{userId};
     </update>
 </mapper>

+ 9 - 0
yt-risk/risk-manage/pom.xml

@@ -52,6 +52,15 @@
             <artifactId>yt-question-feign</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.ytpm</groupId>
+            <artifactId>lemon-ios-feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 3 - 11
yt-risk/risk-manage/src/main/java/com/ytpm/RiskManageApplication.java

@@ -5,23 +5,15 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.context.annotation.Bean;
-import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.ThreadPoolExecutor;
-
 @RestController
 @SpringBootApplication
 @EnableDiscoveryClient
 @MapperScan(basePackages = "com.ytpm.dao")
-@EnableFeignClients(basePackages = {"com.ytpm.feign","com.ytpm.*.feign","com.ytpm.*.*.feign"})
-public class RiskManageApplication
-{
-    public static void main( String[] args )
-    {
+@EnableFeignClients(basePackages = {"com.ytpm.feign", "com.ytpm.*.feign"})
+public class RiskManageApplication {
+    public static void main(String[] args) {
         SpringApplication.run(RiskManageApplication.class, args);
     }
 }

+ 1 - 1
yt-risk/risk-manage/src/main/java/com/ytpm/config/SchedulerConfig.java

@@ -19,7 +19,7 @@ public class SchedulerConfig {
             t.setDaemon(true);
             return t;
         };
-        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(2, factory, new ThreadPoolExecutor.DiscardPolicy());
+        ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5, factory, new ThreadPoolExecutor.DiscardPolicy());
         executor.setRemoveOnCancelPolicy(true);
         return executor;
     }

+ 5 - 5
yt-risk/risk-manage/src/main/java/com/ytpm/handle/CustomerExceptionHandler.java

@@ -159,14 +159,14 @@ public class CustomerExceptionHandler implements HandlerExceptionResolver {
 
     @ResponseBody
     @ExceptionHandler(MaxUploadSizeExceededException.class)
-    public Result handlerFileUploadException(MaxUploadSizeExceededException ex) {
-        log.error("抛出异常信息,异常信息为:ex={}", ex);
-        return new Result(StatusCode.ERROR, "文件超出限制(10MB)");
+    public Result<?> handlerFileUploadException(MaxUploadSizeExceededException ex) {
+        log.error("抛出异常信息,异常信息为:ex={}", ex.getMessage(), ex);
+        return new Result<>(StatusCode.ERROR, "文件超出限制(10MB)");
     }
 
     @Override
     public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
-        log.error(" 系统异常,异常信息为:e={}", e.getMessage());
+        log.error(" 系统异常,异常信息为:e={}", e.getMessage(), e);
         ModelAndView mv = new ModelAndView(new MappingJackson2JsonView());
         if (e instanceof MultipartException) {
             mv.addObject("message", "系统异常");
@@ -181,7 +181,7 @@ public class CustomerExceptionHandler implements HandlerExceptionResolver {
     @ResponseBody
     @ExceptionHandler(CustomerException.class)
     public Result<?> handleCustomerException(Exception ex) {
-        log.error("自定义校验异常信息捕获,异常信息为:ex={}", ex);
+        log.error("自定义校验异常信息捕获,异常信息为:ex={}", ex.getMessage(), ex);
         String msg = ex.getMessage();
         return new Result<>(StatusCode.ACCESS_ERR, msg);
     }

+ 2 - 0
yt-risk/risk-manage/src/main/resources/bootstrap.yml

@@ -1,5 +1,7 @@
 server:
   port: 25522
+  tomcat:
+    max-threads: 500
 spring:
   main:
     allow-bean-definition-overriding: true