Browse Source

多数据源聚集,风控相关修改

marxjaw 2 tháng trước cách đây
mục cha
commit
8b9d7ee20b

+ 6 - 4
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java

@@ -70,12 +70,14 @@ public class YtAppUserServiceImpl implements YtAppUserService {
     public ResultTable<YtAppUserListView> selectAppUserList(YtAppUserListParam param, AgentUserInfo userInfo) {
         //查询当前用户的所有应用
         List<YtApp> ytApps = appMapper.queryAll(userInfo.getUserId());
-        if(CollUtil.isEmpty(ytApps)) {
-            return ResultTable.resultTableOk(new PageInfo<>(Collections.emptyList()));
+        if(StrUtil.isBlank(param.getAppIds())){
+            if(CollUtil.isEmpty(ytApps)) {
+                return ResultTable.resultTableOk(new PageInfo<>(Collections.emptyList()));
+            }
+            String appIds = ytApps.stream().map(YtApp::getAppId).collect(Collectors.joining(","));
+            param.setAppIds(appIds);
         }
-        String appIds = ytApps.stream().map(YtApp::getAppId).collect(Collectors.joining(","));
         Map<String, YtApp> appMap = ytApps.stream().collect(Collectors.toMap(YtApp::getAppId, o->o));
-        param.setAppIds(CharSequenceUtil.isBlank(param.getAppIds())?appIds:param.getAppIds());
         ResultTable<YtAppUserListView> resultTable = appFeign.queryAll(param);
         setUserExtInfo(resultTable,appMap);
         return resultTable;

+ 6 - 0
yt-app/app-feign/src/main/java/com/ytpm/feign/AppFeign.java

@@ -90,4 +90,10 @@ public interface AppFeign {
 
     @PostMapping("/user/unLockUser")
     void unLockUser(@RequestParam("userIds")String userIds);
+
+    /**
+     * 锁定用户
+     */
+    @GetMapping("/user/lockUser")
+    YtDyzUser lockUser(@RequestParam(name="userId")String userId,@RequestParam("userStatus")Integer userStatus);
 }

+ 59 - 6
yt-app/app-service/src/main/java/com/ytpm/controller/dyz/UserController.java

@@ -30,6 +30,8 @@ import com.ytpm.dao.qnmjz.QnmUserMapper;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
+import com.ytpm.risk.enums.BannedTypeEnum;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -50,6 +52,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
+@Slf4j
 @RestController
 @RequestMapping("/user")
 public class UserController {
@@ -126,7 +129,6 @@ public class UserController {
             }
 
         }
-                ;
         dyzUserList.clear();
         qnUserList.clear();
         nfUserList.clear();
@@ -236,11 +238,16 @@ public class UserController {
      */
     @PostMapping("/getUserList")
     public ResultTable<YtDyzUser> getUserList(@RequestBody AppUserParam param) {
+        List<YtDyzUser> resultList = new ArrayList<>();
         List<YtDyzUser> userList = appUserMapper.getUserList(param);
-        for (YtDyzUser user : userList) {
-            user.setLoginRecordList(loginRecordMapper.getLoginRecords(user.getUserId()));
-        }
-        return ResultTable.resultTableOk(new PageInfo<>(userList));
+        if(CollUtil.isNotEmpty(userList)){resultList.addAll(userList);}
+        List<YtDyzUser> qnuserList = qnUserMapper.queryUserList(param);
+        if(CollUtil.isNotEmpty(qnuserList)){resultList.addAll(qnuserList);}
+        List<YtDyzUser> nfuserList = nfUserMapper.queryUserList(param);
+        if(CollUtil.isNotEmpty(nfuserList)){resultList.addAll(nfuserList);}
+        List<YtDyzUser> qnmuserList = qnmUserMapper.queryUserList(param);
+        if(CollUtil.isNotEmpty(qnmuserList)){resultList.addAll(qnmuserList);}
+        return ResultTable.resultTableOk(new PageInfo<>(resultList));
     }
 
     @PostMapping("/getUserAll")
@@ -327,6 +334,52 @@ public class UserController {
     }
     @PostMapping("/unLockUser")
     public void unLockUser(@RequestParam("userIds")String userIds){
-        appUserMapper.unlockUser(userIds);
+        List<YtDyzUser> dyzUsers = appUserMapper.queryByUserIds(userIds);
+        if(CollUtil.isNotEmpty(dyzUsers)){
+            appUserMapper.unlockUser(userIds);
+            return;
+        }
+        dyzUsers = qnUserMapper.queryByUserIds(userIds);
+        if(CollUtil.isNotEmpty(dyzUsers)){
+            qnUserMapper.unlockUser(userIds);
+            return;
+        }
+        dyzUsers = nfUserMapper.queryByUserIds(userIds);
+        if(CollUtil.isNotEmpty(dyzUsers)){
+            nfUserMapper.unlockUser(userIds);
+            return;
+        }
+        dyzUsers = qnmUserMapper.queryByUserIds(userIds);
+        if(CollUtil.isNotEmpty(dyzUsers)){
+            qnmUserMapper.unlockUser(userIds);
+        }
+    }
+    @GetMapping("/lockUser")
+    public YtDyzUser lockUser(@RequestParam("userId")String userId,@RequestParam("userStatus")Integer userStatus){
+        YtDyzUser dyzUser = appUserMapper.selectPrimaryKey(userId);
+        YtDyzUser newUser = new YtDyzUser();
+        newUser.setUserId(userId);
+        newUser.setUserStatus(userStatus);
+        newUser.setRiskReason(BannedTypeEnum.CHANNEL.getDesc()+"禁止登录");
+        if(Objects.nonNull(dyzUser)){
+            appUserMapper.updateUser(newUser);
+            return dyzUser;
+        }
+        dyzUser = qnUserMapper.selectPrimaryKey(userId);
+        if(Objects.nonNull(dyzUser)){
+            qnUserMapper.updateUser(newUser);
+            return dyzUser;
+        }
+        dyzUser = nfUserMapper.selectPrimaryKey(userId);
+        if(Objects.nonNull(dyzUser)){
+            nfUserMapper.updateUser(newUser);
+            return dyzUser;
+        }
+        dyzUser = qnmUserMapper.selectPrimaryKey(userId);
+        if(Objects.nonNull(dyzUser)){
+            qnmUserMapper.updateUser(newUser);
+            return dyzUser;
+        }
+        return null;
     }
 }

+ 3 - 1
yt-app/app-service/src/main/java/com/ytpm/dao/dyz/AppUserMapper.java

@@ -172,5 +172,7 @@ public interface AppUserMapper {
      */
     void delByAppId(@Param("appId")String appId);
 
-    void unlockUser(@Param("appId")String userIds);
+    void unlockUser(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryByUserIds(@Param("userIds")String userIds);
 }

+ 7 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/nofeeds/NFUserMapper.java

@@ -3,6 +3,7 @@ package com.ytpm.dao.nofeeds;
 import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
+import com.ytpm.app.param.AppUserParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.HourCountView;
 import com.ytpm.app.view.WxDefaultConfig;
@@ -145,4 +146,10 @@ public interface NFUserMapper {
      * 根据应用查询风控用户数
      */
     int countBannedByAppIds(@Param("appIds")String appIds);
+
+    void unlockUser(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryByUserIds(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryUserList(AppUserParam param);
 }

+ 6 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/qnjz/QNUserMapper.java

@@ -3,6 +3,7 @@ package com.ytpm.dao.qnjz;
 import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
+import com.ytpm.app.param.AppUserParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.HourCountView;
 import com.ytpm.app.view.WxDefaultConfig;
@@ -145,4 +146,9 @@ public interface QNUserMapper {
      * 根据应用查询风控用户数
      */
     int countBannedByAppIds(@Param("appIds")String appIds);
+    void unlockUser(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryByUserIds(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryUserList(AppUserParam param);
 }

+ 6 - 0
yt-app/app-service/src/main/java/com/ytpm/dao/qnmjz/QnmUserMapper.java

@@ -3,6 +3,7 @@ package com.ytpm.dao.qnmjz;
 import com.ytpm.app.model.YtAppDefaultConfig;
 import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
+import com.ytpm.app.param.AppUserParam;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.HourCountView;
 import com.ytpm.app.view.WxDefaultConfig;
@@ -130,4 +131,9 @@ public interface QnmUserMapper {
      * 查询用户排行榜数据
      */
     List<UserRankingListVO> getUserRanking(@Param("sortBy") int sortBy,@Param("limit") int limit);
+    void unlockUser(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryByUserIds(@Param("userIds")String userIds);
+
+    List<YtDyzUser> queryUserList(AppUserParam param);
 }

+ 65 - 11
yt-app/app-service/src/main/resources/mapper/dyz/AppUserMapper.xml

@@ -159,15 +159,6 @@
         </set>
         where user_id = #{userId}
     </update>
-    <update id="unlockUser">
-        update yt_dyz_user
-        set user_status = 1
-        where user_status > 1
-          and user_id in
-        <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-    </update>
     <delete id="delByAppId">
         delete from yt_app_default_config where app_id = #{appId}
     </delete>
@@ -221,7 +212,43 @@
         from yt_dyz_user
         where user_id = #{userId}
     </select>
-    <select id="getUserList" resultType="com.ytpm.app.model.YtDyzUser">
+    <resultMap id="UserMap" type="com.ytpm.app.model.YtDyzUser">
+        <id column="user_id" property="userId" />
+        <result column="head_img" property="headImg" />
+        <result column="nick_name" property="nickName" />
+        <result column="phone" property="phone" />
+        <result column="device_id" property="deviceId" />
+        <result column="registry_time" property="registryTime" />
+        <result column="last_login_time" property="lastLoginTime" />
+        <result column="last_login_ip" property="lastLoginIp" />
+        <result column="login_days" property="loginDays" />
+        <result column="total_video" property="totalVideo" />
+        <result column="total_income" property="totalIncome" />
+        <result column="red_packet_balance" property="redPacketBalance" />
+        <result column="red_packet_amount" property="redPacketAmount" />
+        <result column="points_balance" property="pointsBalance" />
+        <result column="points_total" property="pointsTotal" />
+        <result column="withdraw_total" property="withdrawTotal" />
+        <result column="sign_days" property="signDays" />
+        <result column="user_status" property="userStatus" />
+        <result column="risk_reason" property="riskReason" />
+        <result column="wx_open_id" property="wxOpenId" />
+        <result column="ditch_id" property="ditchId" />
+        <result column="app_id" property="appId" />
+        <result column="platform_id" property="platformId" />
+        <result column="power" property="power" />
+        <collection property="loginRecordList" ofType="com.ytpm.app.model.YtDyzLoginRecord">
+            <result column="record_id" property="recordId" />
+            <result column="user_id" property="userId" />
+            <result column="login_time" property="loginTime" />
+            <result column="device_brand" property="deviceBrand" />
+            <result column="device_model" property="deviceModel" />
+            <result column="login_ip" property="loginIp" />
+            <result column="operator" property="operator" />
+            <result column="ip_addr" property="ipAddr" />
+        </collection>
+    </resultMap>
+    <select id="getUserList" resultMap="UserMap">
         select
             du.user_id,
             du.head_img,
@@ -246,8 +273,16 @@
             du.ditch_id,
             du.app_id,
             du.platform_id,
-            du.power
+            du.power,
+            lr.record_id,
+            lr.login_time,
+            lr.device_brand,
+            lr. device_model,
+            lr.login_ip,
+            lr.operator,
+            lr.ip_addr
         from yt_dyz_user du
+        left join yt_dyz_login_record lr on du.user_id = lr.user_id
         <where>
             <if test="userIds != null and userIds != ''">
                 and du.user_id in
@@ -262,6 +297,7 @@
                 and du.last_login_time <![CDATA[<=]]> #{loginTimeEnd}
             </if>
         </where>
+        group by du.user_id
     </select>
 
     <select id="queryAllByTime" resultType="com.ytpm.app.model.YtDyzUser">
@@ -526,4 +562,22 @@
         </if>
         group by `time`
     </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
+        from yt_dyz_user
+        where user_id in
+        <foreach collection="userIds.split(',')" separator="," item="item"  open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <update id="unlockUser">
+        update yt_dyz_user
+        set user_status = 1
+        where user_status > 1
+        and user_id in
+        <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
 </mapper>

+ 105 - 0
yt-app/app-service/src/main/resources/mapper/nofeeds/NFUserMapper.xml

@@ -440,4 +440,109 @@
         sum( ar.revenue ) DESC
         limit #{limit}
     </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
+        from yt_dyz_user
+        where user_id in
+        <foreach collection="userIds.split(',')" separator="," item="item"  open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <update id="unlockUser">
+        update yt_dyz_user
+        set user_status = 1
+        where user_status > 1
+        and user_id in
+        <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+    <resultMap id="UserMap" type="com.ytpm.app.model.YtDyzUser">
+        <id column="user_id" property="userId" />
+        <result column="head_img" property="headImg" />
+        <result column="nick_name" property="nickName" />
+        <result column="phone" property="phone" />
+        <result column="device_id" property="deviceId" />
+        <result column="registry_time" property="registryTime" />
+        <result column="last_login_time" property="lastLoginTime" />
+        <result column="last_login_ip" property="lastLoginIp" />
+        <result column="login_days" property="loginDays" />
+        <result column="total_video" property="totalVideo" />
+        <result column="total_income" property="totalIncome" />
+        <result column="red_packet_balance" property="redPacketBalance" />
+        <result column="red_packet_amount" property="redPacketAmount" />
+        <result column="points_balance" property="pointsBalance" />
+        <result column="points_total" property="pointsTotal" />
+        <result column="withdraw_total" property="withdrawTotal" />
+        <result column="sign_days" property="signDays" />
+        <result column="user_status" property="userStatus" />
+        <result column="risk_reason" property="riskReason" />
+        <result column="wx_open_id" property="wxOpenId" />
+        <result column="ditch_id" property="ditchId" />
+        <result column="app_id" property="appId" />
+        <result column="platform_id" property="platformId" />
+        <result column="power" property="power" />
+        <collection property="loginRecordList" ofType="com.ytpm.app.model.YtDyzLoginRecord">
+            <result column="record_id" property="recordId" />
+            <result column="user_id" property="userId" />
+            <result column="login_time" property="loginTime" />
+            <result column="device_brand" property="deviceBrand" />
+            <result column="device_model" property="deviceModel" />
+            <result column="login_ip" property="loginIp" />
+            <result column="operator" property="operator" />
+            <result column="ip_addr" property="ipAddr" />
+        </collection>
+    </resultMap>
+    <select id="queryUserList" resultMap="UserMap">
+        select
+        du.user_id,
+        du.head_img,
+        du.nick_name,
+        du.phone,
+        du.device_id,
+        du.registry_time,
+        du.last_login_time,
+        du.last_login_ip,
+        du.login_days,
+        du.total_video,
+        du.total_income,
+        du.red_packet_balance,
+        du.red_packet_amount,
+        du.points_balance,
+        du.points_total,
+        du.withdraw_total,
+        du.sign_days,
+        du.user_status,
+        du.risk_reason,
+        du.wx_open_id,
+        du.ditch_id,
+        du.app_id,
+        du.platform_id,
+        du.power,
+        lr.record_id,
+        lr.login_time,
+        lr.device_brand,
+        lr. device_model,
+        lr.login_ip,
+        lr.operator,
+        lr.ip_addr
+        from yt_dyz_user du
+        left join yt_dyz_login_record lr on du.user_id = lr.user_id
+        <where>
+            <if test="userIds != null and userIds != ''">
+                and du.user_id in
+                <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="loginTimeBegin != null">
+                and du.last_login_time <![CDATA[>=]]> #{loginTimeBegin}
+            </if>
+            <if test="loginTimeEnd != null">
+                and du.last_login_time <![CDATA[<=]]> #{loginTimeEnd}
+            </if>
+        </where>
+        group by du.user_id
+    </select>
 </mapper>

+ 106 - 0
yt-app/app-service/src/main/resources/mapper/qnjz/QNUserMapper.xml

@@ -440,4 +440,110 @@
             sum( ar.revenue ) DESC
         limit #{limit}
     </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
+        from yt_dyz_user
+        where user_id in
+        <foreach collection="userIds.split(',')" separator="," item="item"  open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <update id="unlockUser">
+        update yt_dyz_user
+        set user_status = 1
+        where user_status > 1
+        and user_id in
+        <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+    <resultMap id="UserMap" type="com.ytpm.app.model.YtDyzUser">
+        <id column="user_id" property="userId" />
+        <result column="head_img" property="headImg" />
+        <result column="nick_name" property="nickName" />
+        <result column="phone" property="phone" />
+        <result column="device_id" property="deviceId" />
+        <result column="registry_time" property="registryTime" />
+        <result column="last_login_time" property="lastLoginTime" />
+        <result column="last_login_ip" property="lastLoginIp" />
+        <result column="login_days" property="loginDays" />
+        <result column="total_video" property="totalVideo" />
+        <result column="total_income" property="totalIncome" />
+        <result column="red_packet_balance" property="redPacketBalance" />
+        <result column="red_packet_amount" property="redPacketAmount" />
+        <result column="points_balance" property="pointsBalance" />
+        <result column="points_total" property="pointsTotal" />
+        <result column="withdraw_total" property="withdrawTotal" />
+        <result column="sign_days" property="signDays" />
+        <result column="user_status" property="userStatus" />
+        <result column="risk_reason" property="riskReason" />
+        <result column="wx_open_id" property="wxOpenId" />
+        <result column="ditch_id" property="ditchId" />
+        <result column="app_id" property="appId" />
+        <result column="platform_id" property="platformId" />
+        <result column="power" property="power" />
+        <collection property="loginRecordList" ofType="com.ytpm.app.model.YtDyzLoginRecord">
+            <result column="record_id" property="recordId" />
+            <result column="user_id" property="userId" />
+            <result column="login_time" property="loginTime" />
+            <result column="device_brand" property="deviceBrand" />
+            <result column="device_model" property="deviceModel" />
+            <result column="login_ip" property="loginIp" />
+            <result column="operator" property="operator" />
+            <result column="ip_addr" property="ipAddr" />
+        </collection>
+    </resultMap>
+    <select id="queryUserList" resultMap="UserMap">
+        select
+        du.user_id,
+        du.head_img,
+        du.nick_name,
+        du.phone,
+        du.device_id,
+        du.registry_time,
+        du.last_login_time,
+        du.last_login_ip,
+        du.login_days,
+        du.total_video,
+        du.total_income,
+        du.red_packet_balance,
+        du.red_packet_amount,
+        du.points_balance,
+        du.points_total,
+        du.withdraw_total,
+        du.sign_days,
+        du.user_status,
+        du.risk_reason,
+        du.wx_open_id,
+        du.ditch_id,
+        du.app_id,
+        du.platform_id,
+        du.power,
+        lr.record_id,
+        lr.login_time,
+        lr.device_brand,
+        lr. device_model,
+        lr.login_ip,
+        lr.operator,
+        lr.ip_addr
+        from yt_dyz_user du
+        left join yt_dyz_login_record lr on du.user_id = lr.user_id
+        <where>
+            <if test="userIds != null and userIds != ''">
+                and du.user_id in
+                <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="loginTimeBegin != null">
+                and du.last_login_time <![CDATA[>=]]> #{loginTimeBegin}
+            </if>
+            <if test="loginTimeEnd != null">
+                and du.last_login_time <![CDATA[<=]]> #{loginTimeEnd}
+            </if>
+        </where>
+        group by du.user_id
+    </select>
+
 </mapper>

+ 105 - 0
yt-app/app-service/src/main/resources/mapper/qnmjz/QnmUserMapper.xml

@@ -413,4 +413,109 @@
             sum( ar.revenue ) DESC
         limit #{limit}
     </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
+        from yt_dyz_user
+        where user_id in
+        <foreach collection="userIds.split(',')" separator="," item="item"  open="(" close=")">
+            #{item}
+        </foreach>
+    </select>
+    <update id="unlockUser">
+        update yt_dyz_user
+        set user_status = 1
+        where user_status > 1
+        and user_id in
+        <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+    <resultMap id="UserMap" type="com.ytpm.app.model.YtDyzUser">
+        <id column="user_id" property="userId" />
+        <result column="head_img" property="headImg" />
+        <result column="nick_name" property="nickName" />
+        <result column="phone" property="phone" />
+        <result column="device_id" property="deviceId" />
+        <result column="registry_time" property="registryTime" />
+        <result column="last_login_time" property="lastLoginTime" />
+        <result column="last_login_ip" property="lastLoginIp" />
+        <result column="login_days" property="loginDays" />
+        <result column="total_video" property="totalVideo" />
+        <result column="total_income" property="totalIncome" />
+        <result column="red_packet_balance" property="redPacketBalance" />
+        <result column="red_packet_amount" property="redPacketAmount" />
+        <result column="points_balance" property="pointsBalance" />
+        <result column="points_total" property="pointsTotal" />
+        <result column="withdraw_total" property="withdrawTotal" />
+        <result column="sign_days" property="signDays" />
+        <result column="user_status" property="userStatus" />
+        <result column="risk_reason" property="riskReason" />
+        <result column="wx_open_id" property="wxOpenId" />
+        <result column="ditch_id" property="ditchId" />
+        <result column="app_id" property="appId" />
+        <result column="platform_id" property="platformId" />
+        <result column="power" property="power" />
+        <collection property="loginRecordList" ofType="com.ytpm.app.model.YtDyzLoginRecord">
+            <result column="record_id" property="recordId" />
+            <result column="user_id" property="userId" />
+            <result column="login_time" property="loginTime" />
+            <result column="device_brand" property="deviceBrand" />
+            <result column="device_model" property="deviceModel" />
+            <result column="login_ip" property="loginIp" />
+            <result column="operator" property="operator" />
+            <result column="ip_addr" property="ipAddr" />
+        </collection>
+    </resultMap>
+    <select id="queryUserList" resultMap="UserMap">
+        select
+        du.user_id,
+        du.head_img,
+        du.nick_name,
+        du.phone,
+        du.device_id,
+        du.registry_time,
+        du.last_login_time,
+        du.last_login_ip,
+        du.login_days,
+        du.total_video,
+        du.total_income,
+        du.red_packet_balance,
+        du.red_packet_amount,
+        du.points_balance,
+        du.points_total,
+        du.withdraw_total,
+        du.sign_days,
+        du.user_status,
+        du.risk_reason,
+        du.wx_open_id,
+        du.ditch_id,
+        du.app_id,
+        du.platform_id,
+        du.power,
+        lr.record_id,
+        lr.login_time,
+        lr.device_brand,
+        lr. device_model,
+        lr.login_ip,
+        lr.operator,
+        lr.ip_addr
+        from yt_dyz_user du
+        left join yt_dyz_login_record lr on du.user_id = lr.user_id
+        <where>
+            <if test="userIds != null and userIds != ''">
+                and du.user_id in
+                <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="loginTimeBegin != null">
+                and du.last_login_time <![CDATA[>=]]> #{loginTimeBegin}
+            </if>
+            <if test="loginTimeEnd != null">
+                and du.last_login_time <![CDATA[<=]]> #{loginTimeEnd}
+            </if>
+        </where>
+        group by du.user_id
+    </select>
 </mapper>

+ 1 - 0
yt-common/src/main/java/com/ytpm/general/RepMessage.java

@@ -29,6 +29,7 @@ public class RepMessage {
     public static final String LOGOUT_FAIL = "用户注销失败";
     public static final String UUID_EMPTY = "验证码生成失败! UUID:";
     public static final String OBJECT_ALREADY_EXIST = "查询对象已存在";
+    public static final String LOCK_FAIL = "锁定用户失败!";
 
     public static final String COLLECTION_EMPTY = "集合数据不能为空";
     public static final String PAYMENT_ATTACH_EMPTY = "缴费凭证不能为空";

+ 2 - 0
yt-common/src/main/java/com/ytpm/risk/param/RiskUserStatusParam.java

@@ -23,6 +23,8 @@ public class RiskUserStatusParam {
     private String reason;
     @ApiModelProperty("封禁类型")
     private Integer bannedType;
+    @ApiModelProperty("封禁期限")
+    private Integer bannedLimit;
     @ApiModelProperty("操作人")
     private String operator;
     @ApiModelProperty("操作人名称")

+ 22 - 41
yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -71,7 +71,6 @@ import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.Random;
 import java.util.Set;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -216,18 +215,8 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
      */
     @Override
     public Result<?> lockUser(String userId,String appId, AgentUserInfo userInfo) {
-        YtDyzUser appUser =  appFeign.getUserInfo(userId).getData();
-        if(Objects.isNull(appUser)){
-            return Result.resultOk(RepMessage.LOCK_USER_SUCCESS);
-        }
-        if(UserStatusEnum.LOCK.getCode().equals(appUser.getUserStatus())){
-            return Result.resultErr(RepMessage.ALREADY_RISK_USER);
-        }
-        YtDyzUser user = new YtDyzUser();
-        user.setUserId(userId);
-        user.setUserStatus(UserStatusEnum.LOCK.getCode());
-        user.setRiskReason(BannedTypeEnum.CHANNEL.getDesc()+"禁止登录");
-        appFeign.updateUserInfo(user);
+        YtDyzUser lockBody = appFeign.lockUser(userId,UserStatusEnum.LOCK.getCode());
+        if(Objects.isNull(lockBody)) return Result.resultErr(RepMessage.LOCK_FAIL);
         RiskBannedParam param = new RiskBannedParam();
         param.setUserId(userId);
         param.setAppId(appId);
@@ -236,7 +225,9 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
         param.setOperator(userInfo.getUserId());
         param.setAgentId(userInfo.getUserId());
         param.setBannedType(BannedTypeEnum.CHANNEL.getCode());
-        addBannedRecord(Collections.singletonList(user.getUserId()),param);
+        addBannedRecord(Collections.singletonList(userId),param);
+        //预设24小时过期key 用于解锁用户
+        redisService.setTimeOutHoursStr("unlock_"+userId,appId,24);
         return Result.resultOk(RepMessage.LOCK_USER_SUCCESS);
     }
 
@@ -246,16 +237,13 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Result<?> banned(RiskBannedParam param) {
-        YtDyzUser appUser = appFeign.getUserInfo(param.getUserId()).getData();
-        if(Objects.isNull(appUser)||UserStatusEnum.RISK.getCode().equals(appUser.getUserStatus())){
-            return Result.resultOk(RepMessage.ALREADY_RISK_USER);
-        }
-        YtDyzUser user = new YtDyzUser();
-        user.setUserId(param.getUserId());
-        user.setUserStatus(UserStatusEnum.RISK.getCode());
-        user.setRiskReason(BannedTypeEnum.CHANNEL.getDesc()+"封禁账号");
-        appFeign.updateUserInfo(user);
+        YtDyzUser appUser = appFeign.lockUser(param.getUserId(),UserStatusEnum.RISK.getCode());
+        if(Objects.isNull(appUser)){
+            return Result.resultErr(RepMessage.LOCK_FAIL);
+        }
         addBannedRecord(Collections.singletonList(param.getUserId()),param);
+        //预设24小时过期key 用于解锁用户
+        redisService.setTimeOutHoursStr("unlock_"+param.getUserId(),param.getAppId(),param.getBannedLimit() * 24L);
         return Result.resultOk(RepMessage.ALREADY_RISK_USER);
     }
 
@@ -355,12 +343,8 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Result<?> changeUserStatus(RiskUserStatusParam param) {
-        YtDyzUser user = appFeign.getUserInfo(param.getUserId()).getData();
-        if(param.getUserStatus().equals(user.getUserStatus())){
-            return Result.resultOk(RepMessage.USER_STATUS_MODIFY);
-        }
         //如果原账号状态正常且本次操作状态不正常
-        modifyAppUserInfo(user,param);
+        modifyAppUserInfo(param.getUserId(),param);
         return Result.resultOk(RepMessage.USER_STATUS_MODIFY);
     }
 
@@ -663,15 +647,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
             appFeign.updateUserInfo(next);
         },300,TimeUnit.MILLISECONDS);
         //修改为解锁用户存入redis 24小时后进行解锁
-        redisService.setTimeOutHoursStr("unlock_"+dyzUser.getUserId(),dyzUser.getAppId(),24);
-        //创建一次性定时任务用于24小时后解锁用户
-//        scheduled.schedule(()->{
-//            YtDyzUser user = new YtDyzUser();
-//            user.setUserId(dyzUser.getUserId());
-//            user.setUserStatus(UserStatusEnum.NORMAL.getCode());
-//            appFeign.updateUserInfo(user);
-//            scheduled.shutdown();
-//        },24, TimeUnit.HOURS);
+        redisService.setTimeOutHoursStr("unlock_"+dyzUser.getUserId(),dyzUser.getAppId(), 24);
         scheduled.shutdown();
         throw new CustomerException(errMsg);
     }
@@ -679,13 +655,16 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
     /**
      * 修改用户信息
      */
-    private void modifyAppUserInfo(YtDyzUser user, RiskUserStatusParam param) {
+    private void modifyAppUserInfo(String userId, RiskUserStatusParam param) {
         YtDyzUser appUser = new YtDyzUser();
         appUser.setUserId(param.getUserId());
         appUser.setUserStatus(param.getUserStatus());
         switch (param.getUserStatus()){
             case 2:
                 appUser.setRiskReason(param.getReason());
+                appFeign.lockUser(appUser.getUserId(),UserStatusEnum.LOCK.getCode());
+                //修改为解锁用户存入redis 24小时后进行解锁
+                redisService.setTimeOutHoursStr("unlock_"+userId,param.getAppId(),24);
                 break;
             case 3: //增加封禁记录
                 RiskBannedParam bannedParam = new RiskBannedParam();
@@ -693,15 +672,17 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
                 bannedParam.setUserId(param.getUserId());
                 bannedParam.setBannedReason(param.getReason());
                 appUser.setRiskReason(param.getReason());
-                addBannedRecord(Collections.singletonList(user.getUserId()),bannedParam);
+                addBannedRecord(Collections.singletonList(userId),bannedParam);
+                appFeign.lockUser(appUser.getUserId(),UserStatusEnum.RISK.getCode());
+                redisService.setTimeOutHoursStr("unlock_"+userId,param.getAppId(),param.getBannedLimit()*24L);
                 break;
             default: //解禁
-                YtPlatformBanned banned = riskManageMapper.getLastBanned(user.getUserId());
+                YtPlatformBanned banned = riskManageMapper.getLastBanned(userId);
                 if(Objects.nonNull(banned)){
                     addDeblockingRecord(banned,param);
                 }
+                appFeign.unLockUser(appUser.getUserId());
         }
-        appFeign.updateUserInfo(appUser);
     }
 
     /**