marxjaw 4 tháng trước cách đây
mục cha
commit
71d97daa75
23 tập tin đã thay đổi với 192 bổ sung81 xóa
  1. 4 4
      yt-agent/agent-service/src/main/java/com/ytpm/controller/RiskController.java
  2. 35 23
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java
  3. 2 1
      yt-app/app-feign/src/main/java/com/ytpm/feign/AppFeign.java
  4. 16 6
      yt-app/app-service/src/main/java/com/ytpm/controller/UserController.java
  5. 25 16
      yt-app/app-service/src/main/java/com/ytpm/controller/WxController.java
  6. 7 1
      yt-app/app-service/src/main/java/com/ytpm/dao/AppUserMapper.java
  7. 21 6
      yt-app/app-service/src/main/resources/mapper/AppUserMapper.xml
  8. 31 0
      yt-common/src/main/java/com/ytpm/app/model/YtAppDefaultConfig.java
  9. 4 1
      yt-common/src/main/java/com/ytpm/app/model/YtDyzUser.java
  10. 4 0
      yt-common/src/main/java/com/ytpm/app/param/WxLoginParam.java
  11. 2 0
      yt-common/src/main/java/com/ytpm/app/param/YtAppUserListParam.java
  12. 9 1
      yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java
  13. 2 0
      yt-common/src/main/java/com/ytpm/risk/param/RiskBannedParam.java
  14. 4 1
      yt-common/src/main/java/com/ytpm/risk/view/RiskBannedListView.java
  15. 1 1
      yt-common/src/main/java/com/ytpm/util/RedisService.java
  16. 2 2
      yt-risk/risk-feign/src/main/java/com/ytpm/feign/RiskFeign.java
  17. 2 2
      yt-risk/risk-feign/src/main/java/com/ytpm/feign/fallback/RiskFeignFallBack.java
  18. 2 2
      yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskManageController.java
  19. 1 1
      yt-risk/risk-manage/src/main/java/com/ytpm/dao/RiskConfigMapper.java
  20. 2 2
      yt-risk/risk-manage/src/main/java/com/ytpm/service/RiskService.java
  21. 8 9
      yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java
  22. 7 1
      yt-risk/risk-manage/src/main/resources/mapper/RiskConfigMapper.xml
  23. 1 1
      yt-risk/risk-manage/src/main/resources/mapper/RiskManageMapper.xml

+ 4 - 4
yt-agent/agent-service/src/main/java/com/ytpm/controller/RiskController.java

@@ -40,8 +40,8 @@ public class RiskController {
      */
     @GetMapping("/lockUser")
     @ApiOperation(value = "锁定用户禁止用户登录")
-    public Result<?> lockUser(@RequestParam("userId")String userId){
-        return riskFeign.lockUser(userId);
+    public Result<?> lockUser(@RequestParam("userId")String userId,@RequestParam("appId")String appId){
+        return riskFeign.lockUser(userId,appId);
     }
 
     /**
@@ -121,8 +121,8 @@ public class RiskController {
      */
     @ApiOperation("查询配置字段选项")
     @GetMapping("/options")
-    public ResultTable<RiskConfigView> getRiskConfig() {
-        return riskFeign.getRiskConfig();
+    public ResultTable<RiskConfigView> getRiskConfig(String appIds) {
+        return riskFeign.getRiskConfig(appIds);
     }
 
     /**

+ 35 - 23
yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java

@@ -32,6 +32,8 @@ import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.service.YtAppUserService;
 import com.ytpm.util.DateUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -62,6 +64,8 @@ public class YtAppUserServiceImpl implements YtAppUserService {
     private AgentStaticsMapper staticsMapper;
     @Resource
     private AppFeign appFeign;
+    @Value("${yt.platform.appId}")
+    private String APP_ID;
 
 
     /**
@@ -71,32 +75,40 @@ public class YtAppUserServiceImpl implements YtAppUserService {
      */
     @Override
     public ResultTable<YtAppUserListView> selectAppUserList(YtAppUserListParam param, AgentUserInfo userInfo) {
-        //查询当前用户的所有应用  TODO 后续增加应用的 Feign 全路径包名
+        //查询当前用户的所有应用
         List<YtApp> ytApps = appMapper.queryAll(userInfo.getUserId());
-        //远程调用各应用查询用户数据 目前先只有好运答题王 TODO 根据包名反射创建Feign 遍历远程方法进行调用获取用户信息
-        List<YtAppUserListView> views = new ArrayList<>();
-        ResultTable<YtDyzUser> resultTable = appFeign.queryAll(param);
-        for (YtApp ytApp : ytApps) {
-            if("a684009039113d".equals(ytApp.getAppId())){
-                YtAppUserListView ytAppUserListView;
-                for (YtDyzUser datum : resultTable.getData()) {
-                    List<YtDyzLoginRecord> recordList = datum.getLoginRecordList();
-                    ytAppUserListView = new YtAppUserListView();
-                    BeanUtil.copyProperties(datum, ytAppUserListView);
-                    ytAppUserListView.setAppId(ytApp.getAppId());
-                    ytAppUserListView.setAppName(ytApp.getAppName());
-                    ytAppUserListView.setAppType(ytApp.getAppType());
-                    ytAppUserListView.setChannelId(ytApp.getChannelId());
-                    if(CollUtil.isNotEmpty(recordList)){
-                        ytAppUserListView.setDeviceRepeatCount((int) recordList.stream().map(YtDyzLoginRecord::getDeviceModel).distinct().count());
-                        ytAppUserListView.setIpRepeatCount((int)recordList.stream().map(YtDyzLoginRecord::getIpAddr).distinct().count());
-                        ytAppUserListView.setCommunicationOperator(recordList.get(0).getOperator());
-                    }
-                    views.add(ytAppUserListView);
-                }
+        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(appIds);
+        //远程调用各应用查询用户数据 目前先只有好运答题王
+        ResultTable<YtAppUserListView> resultTable = appFeign.queryAll(param);
+        setUserExtInfo(resultTable,appMap);
+        return resultTable;
+    }
+
+    /**
+     * 设置用户扩展信息
+     */
+    private void setUserExtInfo(ResultTable<YtAppUserListView> resultTable, Map<String, YtApp> appMap) {
+
+        List<YtAppUserListView> data = resultTable.getData();
+        for (YtAppUserListView datum : data) {
+            List<YtDyzLoginRecord> recordList = datum.getLoginRecordList();
+            datum = new YtAppUserListView();
+            YtApp ytApp = appMap.get(datum.getAppId());
+            if(Objects.nonNull(ytApp)) {
+                datum.setAppId(ytApp.getAppId());
+                datum.setAppName(ytApp.getAppName());
+                datum.setAppType(ytApp.getAppType());
+                datum.setChannelId(ytApp.getChannelId());
+            }
+            if(CollUtil.isNotEmpty(recordList)){
+                datum.setDeviceRepeatCount((int) recordList.stream().map(YtDyzLoginRecord::getDeviceModel).distinct().count());
+                datum.setIpRepeatCount((int)recordList.stream().map(YtDyzLoginRecord::getIpAddr).distinct().count());
+                datum.setCommunicationOperator(recordList.get(0).getOperator());
             }
         }
-        return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(views));
+        resultTable.setData(data);
     }
 
     /**

+ 2 - 1
yt-app/app-feign/src/main/java/com/ytpm/feign/AppFeign.java

@@ -4,6 +4,7 @@ import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.param.AppUserQueryParam;
+import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -17,7 +18,7 @@ import java.util.List;
 @FeignClient(name = "app-service")
 public interface AppFeign {
     @PostMapping("/user/queryAll")
-    ResultTable<YtDyzUser> queryAll(@RequestBody YtAppUserListParam param);
+    ResultTable<YtAppUserListView> queryAll(@RequestBody YtAppUserListParam param);
     @GetMapping("/user/getUserInfo")
     Result<YtDyzUser> getUserInfo(@RequestParam("userId") String userId);
     @GetMapping("/user/getUserList")

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

@@ -1,10 +1,12 @@
 package com.ytpm.controller;
 
+import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.ytpm.app.model.YtDyzAdRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.AppUserQueryParam;
 import com.ytpm.app.param.YtAppUserListParam;
+import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.dao.AdRecordMapper;
 import com.ytpm.dao.AppUserMapper;
 import com.ytpm.dao.LoginRecordMapper;
@@ -47,14 +49,23 @@ public class UserController {
      * 查询app 所有玩家
      */
     @PostMapping("/queryAll")
-    public ResultTable<YtDyzUser> queryAll(@RequestBody YtAppUserListParam param) {
-        List<YtDyzUser> dyzUsers = appUserMapper.queryAll(param);
-        if (dyzUsers.isEmpty()) return ResultTable.resultTableOk(new PageInfo<YtDyzUser>(dyzUsers));
+    public ResultTable<YtAppUserListView> queryAll(@RequestBody YtAppUserListParam param) {
+        PageHelper.startPage(param.getPage(), param.getLimit());
+        List<YtAppUserListView> dyzUsers = appUserMapper.queryAll(param);
+        if (dyzUsers.isEmpty()) return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(dyzUsers));
         List<YtDyzAdRecord> ids = adRecordMapper.getByUserIds(
-                dyzUsers.stream().map(YtDyzUser::getUserId).collect(Collectors.joining(",")));
+                dyzUsers.stream().map(YtAppUserListView::getUserId).collect(Collectors.joining(",")));
         Map<String, List<YtDyzAdRecord>> userAdMap = ids.stream().collect(
                 Collectors.groupingBy(YtDyzAdRecord::getUserId));
-        for (YtDyzUser user : dyzUsers) {
+        setUserExtInfo(dyzUsers,userAdMap);
+        return ResultTable.resultTableOk(new PageInfo<YtAppUserListView>(dyzUsers));
+    }
+
+    /**
+     * 设置用户扩展信息
+     */
+    private void setUserExtInfo(List<YtAppUserListView> dyzUsers, Map<String, List<YtDyzAdRecord>> userAdMap) {
+        for (YtAppUserListView user : dyzUsers) {
             user.setLoginRecordList(loginRecordMapper.getLoginRecords(user.getUserId()));
             user.setTodayVideo(userAdMap.containsKey(user.getUserId()) ?
                     userAdMap.get(user.getUserId()).size() : 0);
@@ -67,7 +78,6 @@ public class UserController {
                 user.setTodayIncome(BigDecimal.ZERO);
             }
         }
-        return ResultTable.resultTableOk(new PageInfo<YtDyzUser>(dyzUsers));
     }
 
     /**

+ 25 - 16
yt-app/app-service/src/main/java/com/ytpm/controller/WxController.java

@@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.ytpm.agent.enums.UserStatusEnum;
 
+import com.ytpm.app.enums.AppTypeEnums;
 import com.ytpm.app.param.WxLoginParam;
 import com.ytpm.app.view.WxDefaultConfig;
 import com.ytpm.app.view.WxLoginResult;
@@ -26,7 +27,6 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -46,18 +46,9 @@ import java.util.Objects;
 @RestController
 @RequestMapping("/wx")
 public class WxController {
-    @Value("${wx.openid}")
-    private  String APP_ID;
-    @Value("${wx.secret}")
-    private String SECRET;
-    @Value("${yt.platform.secret}")
-    private String PLATFORM_ACCESS_SECRET;
-    @Value("${yt.platform.appId}")
-    private String PLATFORM_APP_ID;
     private final static String GRANT_TYPE = "authorization_code";
     @Resource
     private RedisService redisService;
-
     @Autowired
     private AppUserMapper appUserMapper;
     @Autowired
@@ -71,11 +62,16 @@ public class WxController {
     @ApiOperation("微信登录")
     @Transactional(rollbackFor = Exception.class)
     public Result<YtDyzUser> wxLogin(@RequestBody WxLoginParam param) {
-        WxLoginResult loginResult = getWechatLoginInfo(param.getWxCode());
+        //根据应用获取配置调用微信接口登录
+        WxDefaultConfig defaultConfig = appUserMapper.getDefaultConfig(param.getAppType());
+        if(Objects.isNull(defaultConfig)){
+            throw new CustomerException("微信登录失败,未找到相应配置!");
+        }
+        param.setAppId(defaultConfig.getPlatformAppId());
+        WxLoginResult loginResult = getWechatLoginInfo(param.getWxCode(),param.getAppType(),defaultConfig.getAppId(),defaultConfig.getSecret());
         if(Objects.isNull(loginResult)|| StrUtil.isBlank(loginResult.getOpenid())){
             throw new CustomerException("微信登录失败,请刷新授权码!");
         }
-        String openid = loginResult.getOpenid();
         WxUserInfo wxUserInfo = getWechatUserInfo(loginResult.getAccess_token(),loginResult.getOpenid());
         if(Objects.isNull(wxUserInfo)) {
             throw new CustomerException("微信用户登录失败");
@@ -133,9 +129,17 @@ public class WxController {
     /**
      * 微信登录
      */
-    private WxLoginResult getWechatLoginInfo(String wxCode) {
+    private WxLoginResult getWechatLoginInfo(String wxCode,int appType,String appId,String secret) {
+
+        String wxLoginUrl;
+        if(AppTypeEnums.QNJZ.getCode() == appType){
+            wxLoginUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="
+                    +appId+"&secret="+secret+"&code="+wxCode+"&grant_type="+GRANT_TYPE;
+        }else{
+            wxLoginUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appId
+                    +"&secret="+secret+"&code="+wxCode+"&grant_type="+GRANT_TYPE;
+        }
         //拿到授权码 请求微信登录返回access_token
-        String wxLoginUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+APP_ID+"&secret="+SECRET+"&code="+wxCode+"&grant_type="+GRANT_TYPE;
         String result = HttpUtil.get(wxLoginUrl);
         WxLoginResult loginResult = JSON.parseObject(result, WxLoginResult.class);
         log.error("授权码获取的登录结果:{}",loginResult);
@@ -190,6 +194,7 @@ public class WxController {
         old.setWithdrawTotal(BigDecimal.ZERO);
         old.setDitchId(param.getDitchId());
         old.setSignDays(0);
+        old.setAppId(param.getAppId());
         old.setUserStatus(UserStatusEnum.NORMAL.getCode());
         old.setWxOpenId(loginResult.getOpenid());
         old.setHeadImg(wxUserInfo.getHeadimgurl());
@@ -199,8 +204,12 @@ public class WxController {
 
     @ApiOperation("获取微信默认配置项")
     @GetMapping("/defaultConfig")
-    public Result<WxDefaultConfig> getWxDefaultConfig() {
-        return Result.resultObjOk(new WxDefaultConfig(APP_ID, SECRET,PLATFORM_APP_ID,PLATFORM_ACCESS_SECRET));
+    public Result<String> getWxDefaultConfig(int appType) {
+        WxDefaultConfig config = appUserMapper.getDefaultConfig(appType);
+        if(Objects.isNull(config)){
+            return Result.resultErr("应用类型有误!");
+        }
+       return Result.resultObjOk(config.getAppId());
     }
 
     @ApiOperation("体力增加")

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

@@ -4,6 +4,7 @@ import com.ytpm.app.model.YtDyzPowerRecord;
 import com.ytpm.app.model.YtDyzUser;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.WxDefaultConfig;
+import com.ytpm.app.view.YtAppUserListView;
 import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
@@ -49,7 +50,7 @@ public interface AppUserMapper {
     /**
      * 查询所有玩家
      */
-    List<YtDyzUser> queryAll(YtAppUserListParam param);
+    List<YtAppUserListView> queryAll(YtAppUserListParam param);
 
     /**
      * 查询所有玩家
@@ -71,4 +72,9 @@ public interface AppUserMapper {
      * 根据应用类型查询应用默认配置
      */
     WxDefaultConfig getDefaultConfig(@Param("appType") int appType);
+
+    /**
+     * 根据应用ID获取应用secret
+     */
+    String getSecretByAppId(@Param("appId") String appId);
 }

+ 21 - 6
yt-app/app-service/src/main/resources/mapper/AppUserMapper.xml

@@ -24,6 +24,7 @@
          wx_open_id,
          ditch_id,
          platform_id,
+         app_id,
          power
         )
         values
@@ -48,6 +49,7 @@
          #{wxOpenId},
          #{ditchId},
          #{platformId},
+         #{appId},
          #{power}
         )
     </insert>
@@ -129,14 +131,14 @@
     </update>
     <select id="getYtAppUser" resultType="com.ytpm.app.model.YtDyzUser">
         select
-           user_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, 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
         from yt_dyz_user
         where wx_open_id = #{openid}
         and ditch_id = #{ditchId}
     </select>
-    <select id="queryAll" resultType="com.ytpm.app.model.YtDyzUser">
+    <select id="queryAll" resultType="com.ytpm.app.view.YtAppUserListView">
         select
-            user_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, 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
         from yt_dyz_user
         where 1 = 1
         <if test="userId != null and userId !=''">
@@ -163,16 +165,23 @@
         <if test="lastLoginTimeEnd != null">
             and DATE_FORMAT(last_login_time, '%Y-%m-%d') <![CDATA[<=]]> DATE_FORMAT(#{lastLoginTimeEnd}, '%Y-%m-%d')
         </if>
+        <if test="appIds != null and appIds != ''">
+            and app_id in
+                <foreach collection="appIds.split(',')" separator="," item="item" open="(" close=")">
+                    #{item}
+                </foreach>
+        </if>
+        order by last_login_time desc
     </select>
     <select id="selectPrimaryKey" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_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, 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
         from yt_dyz_user
         where user_id = #{userId}
     </select>
     <select id="getUserList" resultType="com.ytpm.app.model.YtDyzUser">
         select
-            user_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, 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
         from yt_dyz_user
         where user_id in
         <foreach collection="userIds.split(',')" item="item" separator="," open="(" close=")">
@@ -182,7 +191,7 @@
 
     <select id="queryAllByTime" resultType="com.ytpm.app.model.YtDyzUser">
         SELECT
-        user_id, nick_name, head_img, power, registry_time,
+        user_id,app_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,
@@ -204,4 +213,10 @@
         from yt_app_default_config
         where app_type = #{appType}
     </select>
+    <select id="getSecretByAppId" resultType="java.lang.String">
+        select
+           secret
+        from yt_app_default_config
+        where app_id = #{appId}
+    </select>
 </mapper>

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

@@ -0,0 +1,31 @@
+package com.ytpm.app.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("应用默认配置")
+public class YtAppDefaultConfig {
+    /** 配置ID */
+    @ApiModelProperty("配置ID")
+    private Integer configId;
+    /** 配置名称 */
+    @ApiModelProperty("配置名称")
+    private String configName;
+    /** 微信开放ID */
+    @ApiModelProperty("微信开放ID")
+    private String openId;
+    /** 微信秘钥 */
+    @ApiModelProperty("微信秘钥")
+    private String secret;
+    /** 应用ID */
+    @ApiModelProperty("微信秘钥")
+    private String appId;
+    /** 应用秘钥 */
+    @ApiModelProperty("应用秘钥")
+    private String appKey;
+    /** 应用类型 */
+    @ApiModelProperty("应用类型")
+    private Integer appType;
+}

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

@@ -1,6 +1,7 @@
 package com.ytpm.app.model;
 
 import com.ytpm.custom.CustomField;
+import com.ytpm.general.PageMeta;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -20,7 +21,7 @@ import java.util.List;
 @NoArgsConstructor
 @AllArgsConstructor
 @ApiModel("用户信息")
-public class YtDyzUser {
+public class YtDyzUser extends PageMeta {
     /** 用户ID */
     @ApiModelProperty("用户ID")
     private String userId;
@@ -112,4 +113,6 @@ public class YtDyzUser {
     private Long ditchId;
     @ApiModelProperty(value = "今日收益")
     private BigDecimal todayIncome;
+    @ApiModelProperty(value = "应用ID")
+    private String appId;
 }

+ 4 - 0
yt-common/src/main/java/com/ytpm/app/param/WxLoginParam.java

@@ -23,4 +23,8 @@ public class WxLoginParam {
     private String wxCode;
     @ApiModelProperty(value = "渠道ID")
     private Long ditchId;
+    @ApiModelProperty(value = "应用类型", required = true)
+    private int appType;
+    @ApiModelProperty(value = "所属应用ID",required = false)
+    private String appId;
 }

+ 2 - 0
yt-common/src/main/java/com/ytpm/app/param/YtAppUserListParam.java

@@ -34,4 +34,6 @@ public class YtAppUserListParam extends PageMeta {
     private String userId;
     @ApiModelProperty("渠道类型id")
     private Long ditchId;
+    @ApiModelProperty("应用ID")
+    private String appIds;
 }

+ 9 - 1
yt-common/src/main/java/com/ytpm/app/view/YtAppUserListView.java

@@ -1,20 +1,25 @@
 package com.ytpm.app.view;
 
+import com.ytpm.app.model.YtDyzLoginRecord;
 import com.ytpm.custom.CustomField;
+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.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @ApiModel("易推应用用户列表")
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
-public class YtAppUserListView {
+public class YtAppUserListView extends PageMeta {
     @ApiModelProperty("用户ID")
     private String userId;
     @ApiModelProperty("应用ID")
@@ -80,4 +85,7 @@ public class YtAppUserListView {
     private String communicationOperator;
     @ApiModelProperty("今日收益")
     private BigDecimal todayIncome;
+    /** 登录历史记录 */
+    @ApiModelProperty("登录历史记录")
+    private List<YtDyzLoginRecord> loginRecordList;
 }

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

@@ -25,4 +25,6 @@ public class RiskBannedParam {
     private String bannedReason;
     @ApiModelProperty("封禁期限")
     private Integer bannedLimit;
+    @ApiModelProperty("应用ID")
+    private String appId;
 }

+ 4 - 1
yt-common/src/main/java/com/ytpm/risk/view/RiskBannedListView.java

@@ -1,18 +1,21 @@
 package com.ytpm.risk.view;
 
+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.util.Date;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @NoArgsConstructor
 @AllArgsConstructor
 @ApiModel("用户风控记录列表")
-public class RiskBannedListView {
+public class RiskBannedListView extends PageMeta {
     @ApiModelProperty("平台ID")
     private String platformId;
     @ApiModelProperty("渠道商ID")

+ 1 - 1
yt-common/src/main/java/com/ytpm/util/RedisService.java

@@ -204,7 +204,7 @@ public class RedisService {
     /**
      * 获取应用用户ID
      */
-    public String getAppUserId() {
+    public synchronized String getAppUserId() {
         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMdd");
         LocalDate currentDate = LocalDate.now();
         LocalDate yesterday = currentDate.minusDays(1);

+ 2 - 2
yt-risk/risk-feign/src/main/java/com/ytpm/feign/RiskFeign.java

@@ -31,7 +31,7 @@ import java.util.Map;
 public interface RiskFeign {
 
     @GetMapping("/riskManage/forbidLogin")
-    Result<?> lockUser(@RequestParam("userId")String userId);
+    Result<?> lockUser(@RequestParam("userId")String userId,@RequestParam("appId")String appId);
 
     @PostMapping("/riskManage/banned")
     Result<?> banned(@RequestBody RiskBannedParam param);
@@ -58,7 +58,7 @@ public interface RiskFeign {
     Result<?> updateConfig(@RequestBody RiskConfigParam param);
 
     @GetMapping("/riskConfig/options")
-    ResultTable<RiskConfigView> getRiskConfig();
+    ResultTable<RiskConfigView> getRiskConfig(@RequestParam("appIds")String appIds);
 
     @GetMapping("/riskConfig/enabledConfig")
     Result<?> isEnabledConfig(@RequestParam("templateId")String templateId);

+ 2 - 2
yt-risk/risk-feign/src/main/java/com/ytpm/feign/fallback/RiskFeignFallBack.java

@@ -22,7 +22,7 @@ import javax.xml.ws.Response;
 @Component
 public abstract class RiskFeignFallBack implements RiskFeign {
     @Override
-    public Result<?> lockUser(String userId) {
+    public Result<?> lockUser(String userId,String appId) {
         return Result.resultErr(RepMessage.SERVICE_UNAVAILABLE);
     }
 
@@ -62,7 +62,7 @@ public abstract class RiskFeignFallBack implements RiskFeign {
     }
 
     @Override
-    public ResultTable<RiskConfigView> getRiskConfig() {
+    public ResultTable<RiskConfigView> getRiskConfig(String appIds) {
         return ResultTable.resultFail(StatusCode.ERROR,RepMessage.SERVICE_UNAVAILABLE);
     }
 }

+ 2 - 2
yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskManageController.java

@@ -60,8 +60,8 @@ public class RiskManageController {
     @ApiOperation("禁止用户登录")
     @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "path")
     @GetMapping("/forbidLogin")
-    public Result<?> forbidLogin(@RequestParam("userId") String userId, @ApiIgnore @AuthenticationPrincipal AgentUserInfo userInfo) {
-        return riskService.lockUser(userId, userInfo);
+    public Result<?> forbidLogin(@RequestParam("userId") String userId,@RequestParam("appId")String appId, @ApiIgnore @AuthenticationPrincipal AgentUserInfo userInfo) {
+        return riskService.lockUser(userId,appId, userInfo);
     }
 
     /**

+ 1 - 1
yt-risk/risk-manage/src/main/java/com/ytpm/dao/RiskConfigMapper.java

@@ -63,7 +63,7 @@ public interface RiskConfigMapper {
     /**
      * 根据应用获取配置类
      */
-    List<AgentAppClassView> getAppClazz(@Param("appId") String appId);
+    List<AgentAppClassView> getAppClazz(@Param("appIds") String appIds);
 
     /**
      * 根据风控编码获取风控配置

+ 2 - 2
yt-risk/risk-manage/src/main/java/com/ytpm/service/RiskService.java

@@ -26,7 +26,7 @@ public interface RiskService {
     /**
      * 查询配置字段选项
      */
-    ResultTable<RiskConfigView> getRiskConfig();
+    ResultTable<RiskConfigView> getRiskConfig(String appIds);
     /**
      * 保存风控配置
      */
@@ -35,7 +35,7 @@ public interface RiskService {
     /**
      * 锁定用户禁止登入
      */
-    Result<?> lockUser(String userId, AgentUserInfo userInfo);
+    Result<?> lockUser(String userId,String appId, AgentUserInfo userInfo);
 
     /**
      * 封禁用户

+ 8 - 9
yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -94,11 +94,10 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
     private AppFeign appFeign;
     /**
      * 查询配置字段选项
-     *  TODO 当前写死答题王,后续改成前端传入APPID
      */
     @Override
-    public ResultTable<RiskConfigView> getRiskConfig() {
-        List<AgentAppClassView> viewList = configMapper.getAppClazz("a684009039113d");
+    public ResultTable<RiskConfigView> getRiskConfig(String appIds) {
+        List<AgentAppClassView> viewList = configMapper.getAppClazz(appIds);
         List<RiskConfigView> configList = new ArrayList<RiskConfigView>();
         try{
             for (AgentAppClassView view : viewList) {
@@ -182,7 +181,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
      * 锁定用户禁止用户登录
      */
     @Override
-    public Result<?> lockUser(String userId, AgentUserInfo userInfo) {
+    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);
@@ -197,6 +196,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
         appFeign.updateUserInfo(user);
         RiskBannedParam param = new RiskBannedParam();
         param.setUserId(userId);
+        param.setAppId(appId);
         param.setBannedReason(BannedTypeEnum.CHANNEL.getDesc()+"禁止登录");
         param.setOperatorName(userInfo.getNickName());
         param.setOperator(userInfo.getUserId());
@@ -590,7 +590,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
             default: //解禁
                 YtPlatformBanned banned = riskManageMapper.getLastBanned(user.getUserId());
                 if(Objects.nonNull(banned)){
-                    addDeblockingRecord(banned.getBannedId(),user.getUserId(),param.getOperator()
+                    addDeblockingRecord(banned.getBannedId(),banned.getAppId(),user.getUserId(),param.getOperator()
                             ,param.getReason(),param.getOperatorName());
                 }
         }
@@ -600,11 +600,11 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
     /**
      * 增加解禁记录
      */
-    private void addDeblockingRecord(String bannedId, String userId, String operator, String reason, String operatorName) {
+    private void addDeblockingRecord(String bannedId, String appId, String userId, String operator, String reason, String operatorName) {
         YtPlatformDeblocking deblocking = new YtPlatformDeblocking();
         deblocking.setDeblockingId(IdUtil.fastSimpleUUID());
         deblocking.setUserId(userId);
-        deblocking.setAppId("a684009039113d");
+        deblocking.setAppId(appId);
         deblocking.setOperator(operator);
         deblocking.setOperatorName(operatorName);
         deblocking.setBannedId(bannedId);
@@ -623,7 +623,7 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
             banned = new YtPlatformBanned();
             banned.setBannedId(IdUtil.fastSimpleUUID());
             banned.setUserId(userId);
-            banned.setAppId("a684009039113d");
+            banned.setAppId(param.getAppId());
             banned.setChannelId(param.getOperator());
             banned.setBannedLimit(Objects.isNull(param.getBannedLimit())?defaultLimit:param.getBannedLimit());
             banned.setBannedReason(StrUtil.isBlank(param.getBannedReason())?defaultReason:param.getBannedReason());
@@ -637,7 +637,6 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
 
     /**
      * 校验风控规则
-     * TODO 第一版本仅处理登录相关  后续优化成 按照粒度(不同APP不同粒度:如答题粒度分为 用户、登录、答题记录、提现记录等) 划分
      */
     private void checkCondition(Object obj,RiskTemplateView data) {
         List<RiskConfigView> configList = data.getConfigList();

+ 7 - 1
yt-risk/risk-manage/src/main/resources/mapper/RiskConfigMapper.xml

@@ -193,7 +193,13 @@
         select
             app_id, full_name, class_desc, enabled
         from yt_app_class
-        where enabled = 1 and app_id = #{appId}
+        where enabled = 1
+        <if test="appIds != null and appIds != ''">
+            and app_id in
+            <foreach collection="appIds.split(',')" item="item" separator="," open="(" close=")" >
+                #{item}
+            </foreach>
+        </if>
     </select>
     <select id="getByCode" resultMap="RiskTemplateViewMap">
         SELECT

+ 1 - 1
yt-risk/risk-manage/src/main/resources/mapper/RiskManageMapper.xml

@@ -127,7 +127,7 @@
     </select>
     <select id="getLastBanned" resultType="com.ytpm.agent.model.YtPlatformBanned">
         select
-            banned_id, user_id, channel_id, banned_time, banned_reason, banned_type, banned_limit, operator, operator_name
+            banned_id, app_id, user_id, channel_id, banned_time, banned_reason, banned_type, banned_limit, operator, operator_name
         from yt_platform_banned
         where user_id = #{userId}
         order by banned_time desc