Просмотр исходного кода

feat: android服务支持母包封禁

hidewnd 2 месяцев назад
Родитель
Сommit
0870cfb69a

+ 28 - 5
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -11,6 +11,8 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ytpm.agent.enums.UserStatusEnum;
+import com.ytpm.agent.model.YtApp;
 import com.ytpm.agent.model.YtPlatformBanned;
 import com.ytpm.agent.model.YtPlatformDeblocking;
 import com.ytpm.agent.model.YtPlatformUserApp;
@@ -23,6 +25,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.RepMessage;
 import com.ytpm.general.Result;
@@ -53,8 +56,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -76,7 +81,9 @@ public class RiskServiceImpl implements RiskService {
     @Autowired
     private RiskMapper riskMapper;
     @Autowired
-    private AgentAppMapper appMapper;
+    private AgentAppMapper agentAppMapper;
+    @Resource
+    private AppMapper appMapper;
     @Autowired
     private AgentDictMapper dictMapper;
     @Autowired
@@ -113,8 +120,24 @@ public class RiskServiceImpl implements RiskService {
         if(StrUtil.isBlank(param.getUserIds())){
             return Result.resultErr("请选择封禁用户");
         }
-        String[] split = param.getUserIds().split(",");
-        for (String userId : split) { // 为避免大量解锁的key再同一时间过期, 这里采用随机数
+        List<String> userIds = Arrays.asList(param.getUserIds().split(","));
+
+        // 母包封禁
+        if (param.getIfSuperiorBanned() != null && param.getIfSuperiorBanned() == 1) {
+            YtApp ytApp = appMapper.selectPrimary(param.getAppId());
+            YtPlatformUserApp platformUserApp = ytApp == null ? null : agentAppMapper.selectByPrimaryKey(ytApp.getSuperiorId());
+            if (platformUserApp != null) {
+                Object obj = feignInvoker.invoke(platformUserApp.getServiceName(), "queryAllDitchUser",
+                        param.getUserIds());
+                if (obj != null) {
+                    List<YtDyzUser> dyzUsers = JSONArray.parseArray(JSON.toJSONString(obj), YtDyzUser.class);
+                    userIds = dyzUsers.stream()
+                            .filter(user-> UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus()))
+                            .map(YtDyzUser::getUserId).collect(Collectors.toList());
+                }
+            }
+        }
+        for (String userId : userIds) { // 为避免大量解锁的key再同一时间过期, 这里采用随机数
             redisService.setTimeOutStr("lock_"+userId,param.getAppId(),RandomUtil.randomInt(500, 2000));
             addBannedRecord(userId,curUser,param.getAppId(),param.getBannedLimit()*24, param.getBannedReason());
             //预设20-24小时过期key 用于解锁用户
@@ -166,7 +189,7 @@ public class RiskServiceImpl implements RiskService {
         PageHelper.startPage(param.getPage(),param.getLimit());
         List<RiskBannedListView> bannedList = riskMapper.getBannedList(param);
         if(CollUtil.isNotEmpty(bannedList)){
-            List<YtPlatformUserApp> issuedAppList = appMapper.getIssuedAppList(param.getAgentId());
+            List<YtPlatformUserApp> issuedAppList = agentAppMapper.getIssuedAppList(param.getAgentId());
             if(CollUtil.isEmpty(issuedAppList)){
                 return ResultTable.resultTableOk(new PageInfo<>(bannedList));
             }
@@ -189,7 +212,7 @@ public class RiskServiceImpl implements RiskService {
         PageHelper.startPage(param.getPage(),param.getLimit());
         List<RiskDeblockingListView> deblockingList = riskMapper.getDeblockingList(param);
         if(CollUtil.isNotEmpty(deblockingList)){
-            List<YtPlatformUserApp> issuedAppList = appMapper.getIssuedAppList(param.getAgentId());
+            List<YtPlatformUserApp> issuedAppList = agentAppMapper.getIssuedAppList(param.getAgentId());
             if(CollUtil.isEmpty(issuedAppList)){
                 return ResultTable.resultTableOk(new PageInfo<>(deblockingList));
             }

+ 3 - 0
yt-common/src/main/java/com/ytpm/risk/param/RiskBannedParam.java

@@ -33,4 +33,7 @@ public class RiskBannedParam {
     private String agentId;
     @ApiModelProperty("用户ID,拼接")
     private String userIds;
+
+    @ApiModelProperty("是否母包封禁")
+    private Integer ifSuperiorBanned;
 }

+ 6 - 1
yt-question/yt-question-feign/src/main/java/com/ytpm/question/base/BaseFeign.java

@@ -21,7 +21,6 @@ import com.ytpm.general.ResultTable;
 import com.ytpm.middle.view.DashboardRankingListVO;
 import com.ytpm.middle.view.DashboardRevenueVO;
 import com.ytpm.middle.view.DashboardRiskVO;
-import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -138,4 +137,10 @@ public interface BaseFeign {
      */
     @PostMapping("/user/batchAudit")
     void batchAudit(@RequestBody AuditCheckParam auditCheckParam);
+
+    /**
+     * 批量查询用户下所有渠道
+     */
+    @GetMapping("/user/queryAllDitchUser")
+    List<YtDyzUser> queryAllDitchUser(@RequestParam("userIds") String userIds);
 }

+ 12 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/controller/UserController.java

@@ -27,6 +27,7 @@ import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.general.StatusCode;
+import com.ytpm.question.config.datasource.DynamicDataSource;
 import com.ytpm.question.dao.AdRecordMapper;
 import com.ytpm.question.dao.AppUserMapper;
 import com.ytpm.question.dao.LoginRecordMapper;
@@ -435,4 +436,15 @@ public class UserController {
         }
 
     }
+
+    @GetMapping("/queryAllDitchUser")
+    public List<YtDyzUser> queryAllDitchUser(@RequestParam("userIds") String userIds) {
+        List<YtDyzUser> dyzUsers = appUserMapper.queryByUserIds(userIds);
+        if (CollUtil.isNotEmpty(dyzUsers)) {
+            List<String> deviceIds = dyzUsers.stream().map(YtDyzUser::getDeviceId)
+                    .distinct().collect(Collectors.toList());
+            dyzUsers = appUserMapper.selectUserByDeviceIds(deviceIds);
+        }
+        return dyzUsers;
+    }
 }

+ 6 - 0
yt-question/yt-question-service/src/main/java/com/ytpm/question/dao/AppUserMapper.java

@@ -211,4 +211,10 @@ public interface AppUserMapper {
 
     void updateTotal(@Param("userId") String userId, @Param("videoCount") int videoCount, @Param("revenue") BigDecimal revenue);
 
+    /**
+     * 通过设备ID查询关联用户
+     * @param deviceIds
+     * @return
+     */
+    List<YtDyzUser> selectUserByDeviceIds(@Param("deviceIds") List<String> deviceIds);
 }

+ 14 - 1
yt-question/yt-question-service/src/main/resources/mapper/AppUserMapper.xml

@@ -660,7 +660,9 @@
     </select>
     <select id="queryByUserIds" 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, 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 user_id in
         <foreach collection="userIds.split(',')" separator="," item="item"  open="(" close=")">
@@ -768,6 +770,17 @@
         where device_id = #{deviceId}
         limit 1
     </select>
+    <select id="selectUserByDeviceIds" 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,
+        nearly_income, nearly_begin_time
+        from yt_dyz_user
+        where device_id in
+        <foreach collection="deviceIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
     <update id="unlockUser">
         update yt_dyz_user
         set user_status = 1