소스 검색

增加用户禁止登录
增加封禁用户操作

marxjaw 5 달 전
부모
커밋
7df6a1154b
26개의 변경된 파일552개의 추가작업 그리고 24개의 파일을 삭제
  1. 37 0
      yt-agent/agent-service/pom.xml
  2. 43 0
      yt-agent/agent-service/src/main/java/com/ytpm/controller/RiskController.java
  3. 0 2
      yt-agent/agent-service/src/main/java/com/ytpm/controller/YtAppUserController.java
  4. 2 0
      yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserMapper.java
  5. 1 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/YtAppUserService.java
  6. 4 0
      yt-agent/agent-service/src/main/java/com/ytpm/service/impl/YtAppUserServiceImpl.java
  7. 5 5
      yt-agent/agent-service/src/main/resources/bootstrap.yml
  8. 0 1
      yt-agent/agent-service/src/main/resources/mapper/AppUserMapper.xml
  9. 24 0
      yt-common/src/main/java/com/ytpm/agent/enums/UserStatusEnum.java
  10. 24 0
      yt-common/src/main/java/com/ytpm/agent/model/YtPlatformBanned.java
  11. 3 0
      yt-common/src/main/java/com/ytpm/general/RepMessage.java
  12. 18 0
      yt-common/src/main/java/com/ytpm/risk/enums/BannedTypeEnum.java
  13. 28 0
      yt-common/src/main/java/com/ytpm/risk/param/RiskBannedParam.java
  14. 1 1
      yt-gateway/pom.xml
  15. 4 4
      yt-gateway/src/main/resources/bootstrap.yml
  16. 5 1
      yt-oauth/oauth-service/src/main/java/com/ytpm/auth/impl/CaptchaServiceImpl.java
  17. 4 4
      yt-oauth/oauth-service/src/main/resources/bootstrap.yml
  18. 11 0
      yt-risk/risk-feign/src/main/java/com/ytpm/feign/RiskFeign.java
  19. 38 0
      yt-risk/risk-manage/pom.xml
  20. 0 1
      yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskConfigController.java
  21. 44 0
      yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskManageController.java
  22. 44 0
      yt-risk/risk-manage/src/main/java/com/ytpm/dao/RiskUserMapper.java
  23. 11 0
      yt-risk/risk-manage/src/main/java/com/ytpm/service/RiskService.java
  24. 70 1
      yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java
  25. 4 4
      yt-risk/risk-manage/src/main/resources/bootstrap.yml
  26. 127 0
      yt-risk/risk-manage/src/main/resources/mapper/RiskUserMapper.xml

+ 37 - 0
yt-agent/agent-service/pom.xml

@@ -37,5 +37,42 @@
             <artifactId>agent-feign</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.ytpm</groupId>
+            <artifactId>risk-feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
+    <build>
+        <finalName>agent-service</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                    <encoding>utf-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.5.3</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                    <mainClass>com.ytpm.AgentApplication</mainClass>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

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

@@ -0,0 +1,43 @@
+package com.ytpm.controller;
+
+import com.ytpm.feign.RiskFeign;
+import com.ytpm.general.Result;
+import com.ytpm.general.ResultTable;
+import com.ytpm.risk.param.RiskBannedParam;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "风控管理模块")
+@RestController
+@RequestMapping("/risk")
+public class RiskController {
+
+    @Resource
+    private RiskFeign riskFeign;
+
+
+    /**
+     * 锁定用户禁止用户登录
+     */
+    @GetMapping("/lockUser")
+    @ApiOperation(value = "锁定用户禁止用户登录")
+    public Result<?> lockUser(@RequestParam("userId")String userId){
+        return riskFeign.lockUser(userId);
+    }
+
+    /**
+     * 平台或渠道封禁用户
+     */
+    @PostMapping("/bannedUser")
+    @ApiOperation(value = "平台或渠道封禁用户")
+    public Result<?> banned(@RequestBody RiskBannedParam param){
+        return riskFeign.banned(param);
+    }
+
+//    @PostMapping("/list")
+//    @ApiOperation("查询风控配置列表")
+//    public ResultTable<>
+}

+ 0 - 2
yt-agent/agent-service/src/main/java/com/ytpm/controller/YtAppUserController.java

@@ -38,6 +38,4 @@ public class YtAppUserController {
     public ResultTable<AppUserStaticsView> staticList(){
         return appUserService.staticList();
     }
-
-
 }

+ 2 - 0
yt-agent/agent-service/src/main/java/com/ytpm/dao/AppUserMapper.java

@@ -1,7 +1,9 @@
 package com.ytpm.dao;
 
+import com.ytpm.agent.model.YtAppUser;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.YtAppUserListView;
+import org.apache.ibatis.annotations.Param;
 import org.mapstruct.Mapper;
 
 import java.util.List;

+ 1 - 0
yt-agent/agent-service/src/main/java/com/ytpm/service/YtAppUserService.java

@@ -3,6 +3,7 @@ package com.ytpm.service;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.AppUserStaticsView;
 import com.ytpm.app.view.YtAppUserListView;
+import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 
 

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

@@ -3,11 +3,15 @@ package com.ytpm.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.ytpm.agent.enums.UserStatusEnum;
+import com.ytpm.agent.model.YtAppUser;
 import com.ytpm.app.model.YtAppUserLoginRecord;
 import com.ytpm.app.param.YtAppUserListParam;
 import com.ytpm.app.view.AppUserStaticsView;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.dao.*;
+import com.ytpm.general.RepMessage;
+import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.service.YtAppUserService;
 import org.springframework.stereotype.Service;

+ 5 - 5
yt-agent/agent-service/src/main/resources/bootstrap.yml

@@ -23,13 +23,13 @@ spring:
   main:
     allow-bean-definition-overriding: true
   application:
-    name: yt-oauth
+    name: agent-service
   cloud:
     nacos:
       discovery:
-        server-addr: 121.37.82.232:8848
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        server-addr: 118.195.137.98:8848
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579
       config:
-        server-addr: 121.37.82.232:8848
+        server-addr: 118.195.137.98:8848
         file-extension: yml
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579

+ 0 - 1
yt-agent/agent-service/src/main/resources/mapper/AppUserMapper.xml

@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ytpm.dao.AppUserMapper">
-
     <select id="selectAppUserList" resultType="com.ytpm.app.view.YtAppUserListView">
         select
             au.user_id,

+ 24 - 0
yt-common/src/main/java/com/ytpm/agent/enums/UserStatusEnum.java

@@ -0,0 +1,24 @@
+package com.ytpm.agent.enums;
+
+import lombok.Getter;
+
+/**
+ * 用户状态枚举类
+ */
+@Getter
+public enum UserStatusEnum {
+    NORMAL(1,"正常"),
+    LOCK(2, "锁定"),
+    RISK(3, "封禁"),
+    LOGOUT(4, "注销"),
+    ;
+
+    private final Integer code;
+    private final String desc;
+
+    UserStatusEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+}

+ 24 - 0
yt-common/src/main/java/com/ytpm/agent/model/YtPlatformBanned.java

@@ -0,0 +1,24 @@
+package com.ytpm.agent.model;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("平台封禁记录表")
+public class YtPlatformBanned {
+    private String bannedId;
+    private String userId;
+    private String channelId;
+    private Date bannedTime;
+    private String bannedReason;
+    private Integer bannedType;
+    private Integer bannedLimit;
+    private String operator;
+    private String operatorName;
+}

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

@@ -15,6 +15,9 @@ public class RepMessage {
     public static final String TOKEN_EXPIRE = "登录超时,请重新登录";
     public static final String TOKEN_INVALID = "登录已失效,请重新登录";
     public static final String LOGOUT_FAIL = "用户注销失败";
+    public static final String UUID_EMPTY = "验证码生成失败! UUID:";
 
     public static final String COLLECTION_EMPTY = "列表数据为空";
+    public static final String LOCK_USER_SUCCESS = "用户锁定成功";
+    public static final String ALREADY_RISK_USER = "用户已被风控";
 }

+ 18 - 0
yt-common/src/main/java/com/ytpm/risk/enums/BannedTypeEnum.java

@@ -0,0 +1,18 @@
+package com.ytpm.risk.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum BannedTypeEnum {
+    CHANNEL(1,"渠道"),
+    PLATFORM(2, "平台"),
+    ;
+
+    private final Integer code;
+    private final String desc;
+
+    BannedTypeEnum(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+}

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

@@ -0,0 +1,28 @@
+package com.ytpm.risk.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@ApiModel("风控手动封禁入参")
+public class RiskBannedParam {
+    @ApiModelProperty(value = "用户ID",required = true)
+    private String userId;
+    @ApiModelProperty(value = "封禁目标ID",required = true, notes = "渠道填channelId 平台填platformId")
+    private String bannedTargetId;
+    @ApiModelProperty(value = "封禁类型 1-渠道 2-平台",required = true)
+    private Integer bannedType;
+    @ApiModelProperty("操作人")
+    private String operator;
+    @ApiModelProperty("操作人名称")
+    private String operatorName;
+    @ApiModelProperty("封禁原因")
+    private String bannedReason;
+    @ApiModelProperty("封禁期限")
+    private Integer bannedLimit;
+}

+ 1 - 1
yt-gateway/pom.xml

@@ -39,7 +39,7 @@
     </dependencies>
 
     <build>
-        <finalName>eg-gateway</finalName>
+        <finalName>yt-gateway</finalName>
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>

+ 4 - 4
yt-gateway/src/main/resources/bootstrap.yml

@@ -23,9 +23,9 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 121.37.82.232:8848
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        server-addr: 118.195.137.98:8848
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579
       config:
-        server-addr: 121.37.82.232:8848
+        server-addr: 118.195.137.98:8848
         file-extension: yml
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579

+ 5 - 1
yt-oauth/oauth-service/src/main/java/com/ytpm/auth/impl/CaptchaServiceImpl.java

@@ -6,6 +6,8 @@ import cn.hutool.captcha.generator.RandomGenerator;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.IOUtils;
 import com.ytpm.auth.CaptchaService;
+import com.ytpm.general.RepMessage;
+import com.ytpm.handle.CustomerException;
 import com.ytpm.oauth.model.CaptchaValid;
 import com.ytpm.util.CacheUtil;
 import com.ytpm.util.RedisService;
@@ -43,7 +45,9 @@ public class CaptchaServiceImpl implements CaptchaService {
 
         response.setHeader("Cache-Control", "no-store, no-cache");
         response.setContentType("image/jpeg");
-
+        if(StrUtil.isBlank(uuid)){
+            throw new CustomerException(RepMessage.UUID_EMPTY+uuid);
+        }
         //获取图片验证码输出到流中
         CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(width, height, codeCount, circleCount);
         captcha.setGenerator(new RandomGenerator("0123456789",length));

+ 4 - 4
yt-oauth/oauth-service/src/main/resources/bootstrap.yml

@@ -27,9 +27,9 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 121.37.82.232:8848
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        server-addr: 118.195.137.98:8848
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579
       config:
-        server-addr: 121.37.82.232:8848
+        server-addr: 118.195.137.98:8848
         file-extension: yml
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579

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

@@ -1,8 +1,19 @@
 package com.ytpm.feign;
 
+import com.ytpm.general.Result;
+import com.ytpm.risk.param.RiskBannedParam;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(name = "risk-manage")
 public interface RiskFeign {
 
+    @GetMapping("/riskManage/forbidLogin")
+    Result<?> lockUser(@RequestParam("userId")String userId);
+
+    @PostMapping("/riskManage/banned")
+    Result<?> banned(@RequestBody RiskBannedParam param);
 }

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

@@ -36,5 +36,43 @@
             <artifactId>risk-feign</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>com.ytpm</groupId>
+            <artifactId>agent-feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
+
+    <build>
+        <finalName>risk-manage</finalName>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                    <encoding>utf-8</encoding>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.5.3</version>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <includeSystemScope>true</includeSystemScope>
+                    <mainClass>com.ytpm.RiskManageApplication</mainClass>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 0 - 1
yt-risk/risk-manage/src/main/java/com/ytpm/controller/RiskConfigController.java

@@ -39,5 +39,4 @@ public class RiskConfigController {
         param.setDefaultParam(userInfo.getUserId());
         return riskService.saveConfig(param);
     }
-
 }

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

@@ -0,0 +1,44 @@
+package com.ytpm.controller;
+
+import com.ytpm.agent.view.AgentUserInfo;
+import com.ytpm.general.Result;
+import com.ytpm.risk.param.RiskBannedParam;
+import com.ytpm.service.RiskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@Api(tags = "风控管理模块")
+@RestController
+@RequestMapping("/riskManage")
+public class RiskManageController {
+
+    @Resource
+    private RiskService riskService;
+
+
+    /**
+     * 用户禁登
+     */
+    @ApiOperation("禁止用户登录")
+    @ApiImplicitParam(name = "userId", value = "用户ID", required = true, paramType = "path")
+    @GetMapping("/forbidLogin")
+    public Result<?> forbidLogin(@RequestParam("userId")String userId){
+        return riskService.lockUser(userId);
+    }
+
+    /**
+     * 封禁用户
+     */
+    @ApiOperation("封禁用户")
+    @PostMapping("/banned")
+    public Result<?> banned(@RequestBody RiskBannedParam param, @AuthenticationPrincipal AgentUserInfo userInfo){
+        param.setOperator(userInfo.getUserId());
+        param.setOperatorName(userInfo.getNickName());
+        return riskService.banned(param);
+    }
+}

+ 44 - 0
yt-risk/risk-manage/src/main/java/com/ytpm/dao/RiskUserMapper.java

@@ -0,0 +1,44 @@
+package com.ytpm.dao;
+
+import com.ytpm.agent.model.YtAppUser;
+import com.ytpm.agent.model.YtPlatformBanned;
+import com.ytpm.risk.param.RiskBannedParam;
+import org.apache.ibatis.annotations.Param;
+import org.mapstruct.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface RiskUserMapper {
+
+
+    /**
+     * 主键查询
+     */
+    YtAppUser selectByUserId(@Param("userId") String userId);
+
+    /**
+     * 主键修改
+     */
+    void updateByUserId(YtAppUser user);
+
+    /**
+     * 查询封禁用户列表
+     */
+    List<YtAppUser> getBannedUserList(RiskBannedParam param);
+
+    /**
+     * 批量封禁用户
+     */
+    void banned(@Param("userIdList") List<String> userIdList);
+
+    /**
+     * 批量解禁用户
+     */
+    void unBanned(@Param("userIdList") List<String> userIdList);
+
+    /**
+     * 新增封禁记录
+     */
+    void addBannedRecord(YtPlatformBanned banned);
+}

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

@@ -2,6 +2,7 @@ package com.ytpm.service;
 
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
+import com.ytpm.risk.param.RiskBannedParam;
 import com.ytpm.risk.param.RiskConfigParam;
 import com.ytpm.risk.view.RiskConfigView;
 
@@ -14,4 +15,14 @@ public interface RiskService {
      * 保存风控配置
      */
     Result<?> saveConfig(RiskConfigParam param);
+
+    /**
+     * 锁定用户禁止登入
+     */
+    Result<?> lockUser(String userId);
+
+    /**
+     * 封禁用户
+     */
+    Result<?> banned(RiskBannedParam param);
 }

+ 70 - 1
yt-risk/risk-manage/src/main/java/com/ytpm/service/impl/RiskServiceImpl.java

@@ -5,35 +5,49 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
 import com.github.pagehelper.PageInfo;
+import com.ytpm.agent.enums.UserStatusEnum;
+import com.ytpm.agent.model.YtAppUser;
+import com.ytpm.agent.model.YtPlatformBanned;
 import com.ytpm.app.view.YtAppUserListView;
 import com.ytpm.custom.CustomField;
 import com.ytpm.dao.DictMapper;
 import com.ytpm.dao.RiskConfigMapper;
+import com.ytpm.dao.RiskUserMapper;
 import com.ytpm.general.RepMessage;
 import com.ytpm.general.Result;
 import com.ytpm.general.ResultTable;
 import com.ytpm.risk.model.YtRiskConfig;
+import com.ytpm.risk.param.RiskBannedParam;
 import com.ytpm.risk.param.RiskConfigListParam;
 import com.ytpm.risk.param.RiskConfigParam;
 import com.ytpm.risk.view.RiskConfigView;
 import com.ytpm.service.RiskService;
-import com.ytpm.util.IDUtil;
 import com.ytpm.util.ReflectUtil;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.beans.factory.annotation.Value;
 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.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 @Service
 public class RiskServiceImpl extends ReflectUtil implements RiskService {
 
+    @Value("${risk.banned.defaultLimit}")
+    private Integer defaultLimit;
+    @Value("${risk.banned.defaultReason}")
+    private String defaultReason;
     @Resource
     private DictMapper  dictMapper;
     @Resource
     private RiskConfigMapper configMapper;
+    @Resource
+    private RiskUserMapper riskUserMapper;
 
     /**
      * 查询配置字段选项
@@ -79,4 +93,59 @@ public class RiskServiceImpl extends ReflectUtil implements RiskService {
         return Result.resultOk();
     }
 
+
+    /**
+     * 锁定用户禁止用户登录
+     */
+    @Override
+    public Result<?> lockUser(String userId) {
+        YtAppUser appUser =  riskUserMapper.selectByUserId(userId);
+        if(Objects.isNull(appUser)){
+            return Result.resultOk(RepMessage.LOCK_USER_SUCCESS);
+        }
+        if(UserStatusEnum.NORMAL.getCode().equals(appUser.getUserStatus())){
+            return Result.resultErr(RepMessage.ALREADY_RISK_USER);
+        }
+        YtAppUser user = new YtAppUser();
+        user.setUserId(userId);
+        user.setUserStatus(UserStatusEnum.LOCK.getCode());
+        riskUserMapper.updateByUserId(user);
+        return Result.resultOk(RepMessage.LOCK_USER_SUCCESS);
+    }
+
+    /**
+     * 封禁用户
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public Result<?> banned(RiskBannedParam param) {
+        List<YtAppUser> userList = riskUserMapper.getBannedUserList(param);
+        if(CollUtil.isEmpty(userList)){
+            return Result.resultOk(RepMessage.ALREADY_RISK_USER);
+        }
+        List<String> userIdList = userList.stream().map(YtAppUser::getUserId)
+                .distinct().collect(Collectors.toList());
+        riskUserMapper.banned(userIdList);
+        addBannedRecord(userIdList,param);
+        return Result.resultOk(RepMessage.ALREADY_RISK_USER);
+    }
+
+    /**
+     * 增加封禁记录
+     */
+    private void addBannedRecord(List<String> userIdList,RiskBannedParam param) {
+        YtPlatformBanned banned;
+        for (String userId : userIdList) {
+            banned = new YtPlatformBanned();
+            banned.setBannedId(IdUtil.fastSimpleUUID());
+            banned.setUserId(userId);
+            banned.setChannelId(param.getOperator());
+            banned.setBannedLimit(Objects.isNull(param.getBannedLimit())?defaultLimit:param.getBannedLimit());
+            banned.setBannedReason(StrUtil.isBlank(param.getBannedReason())?defaultReason:param.getBannedReason());
+            banned.setBannedType(param.getBannedType());
+            banned.setOperator(param.getOperator());
+            banned.setOperatorName(param.getOperatorName());
+            riskUserMapper.addBannedRecord(banned);
+        }
+    }
 }

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

@@ -27,9 +27,9 @@ spring:
   cloud:
     nacos:
       discovery:
-        server-addr: 121.37.82.232:8848
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        server-addr: 118.195.137.98:8848
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579
       config:
-        server-addr: 121.37.82.232:8848
+        server-addr: 118.195.137.98:8848
         file-extension: yml
-        namespace: 776851c5-aa23-4606-b2b2-941487de707f
+        namespace: 3a082e81-f4e3-4d4c-b63d-ba0b28d04579

+ 127 - 0
yt-risk/risk-manage/src/main/resources/mapper/RiskUserMapper.xml

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ytpm.dao.RiskUserMapper">
+    <insert id="addBannedRecord">
+        insert yt_platform_banned
+        (
+         banned_id,
+         user_id,
+         channel_id,
+         banned_time,
+         banned_reason,
+         banned_type,
+         banned_limit,
+         operator,
+         operator_name
+        )
+        values
+        (
+            #{bannedId},
+            #{userId},
+            #{channelId},
+            #{bannedTime},
+            #{bannedReason},
+            #{bannedType},
+            #{bannedLimit},
+            #{operator},
+            #{operatorName}
+        )
+    </insert>
+    <update id="updateByUserId">
+        update yt_app_user
+        <set>
+            <if test="appId !=null and appId!=''">
+                app_id = {appId},
+            </if>
+            <if test="nickName !=null and nickName!=''">
+                nick_name = #{nickName},
+            </if>
+            <if test="registryTime !=null">
+                registry_time = #{registryTime},
+            </if>
+            <if test="lastLoginTime !=null">
+                last_login_time = #{lastLoginTime},
+            </if>
+            <if test="lastLoginIp !=null and lastLoginIp!=''">
+                last_login_ip = #{lastLoginIp},
+            </if>
+            <if test="loginDays !=null">
+                login_days = #{loginDays},
+            </if>
+            <if test="channelType !=null">
+                channel_type = #{channelType},
+            </if>
+            <if test="channelOrigin !=null">
+                channel_origin = #{channelOrigin},
+            </if>
+            <if test="userType !=null">
+                user_type = #{userType}
+            </if>
+            <if test="totalVideo !=null">
+                total_video = #{totalVideo}
+            </if>
+            <if test="totalIncome !=null">
+                total_income = #{totalIncome}
+            </if>
+            <if test="redPacketBalance !=null">
+                red_packet_balance = #{redPacketBalance}
+            </if>
+            <if test="redPacketAmount !=null">
+                red_packet_amount = #{redPacketAmount}
+            </if>
+            <if test="pointsBalance !=null">
+                points_balance = #{pointsBalance}
+            </if>
+            <if test="pointsTotal !=null">
+                points_total = #{pointsTotal}
+            </if>
+            <if test="withdrawTotal !=null">
+                withdraw_total = #{withdrawTotal}
+            </if>
+            <if test="signDays !=null">
+                sign_days = #{signDays}
+            </if>
+            <if test="userStatus !=null">
+                user_status = #{userStatus}
+            </if>
+        </set>
+        where user_id = #{userId}
+    </update>
+    <update id="banned">
+        update yt_app_user set user_status = 3
+        where user_id in
+        <foreach collection="userIdList" separator="," item="item" index="index" open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+    <update id="unBanned">
+        update yt_app_user set user_status = 1
+        where user_id in
+        <foreach collection="userIdList" separator="," item="item" index="index" open="(" close=")">
+            #{item}
+        </foreach>
+    </update>
+
+    <select id="selectByUserId" resultType="com.ytpm.agent.model.YtAppUser">
+        select
+            user_id, app_id, nick_name, registry_time, last_login_time, last_login_ip, login_days, channel_type, channel_origin, user_type, total_video, total_income, red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total, sign_days, user_status
+        from yt_app_user
+        where user_id = #{userId}
+    </select>
+    <select id="getBannedUserList" resultType="com.ytpm.agent.model.YtAppUser">
+        select
+            user_id, app_id, nick_name, registry_time, last_login_time, last_login_ip, login_days, channel_type, channel_origin, user_type, total_video, total_income, red_packet_balance, red_packet_amount, points_balance, points_total, withdraw_total, sign_days, user_status, wx_open_id, platform_id, channel_id
+        from yt_app_user
+        where user_id = #{userId}
+        <if test="bannedTargetId != null and bannedTargetId != ''">
+            <choose>
+                <when test="bannedType == 1 ">
+                    and channel_id = #{bannedTargetId}
+                </when>
+                <otherwise>
+                    and platform_id = #{bannedTargetId}
+                </otherwise>
+            </choose>
+        </if>
+    </select>
+</mapper>