浏览代码

二手风控

qrs 1 月之前
父节点
当前提交
72f52a7845

+ 5 - 12
alien-second/src/main/java/shop/alien/second/controller/RiskControlController.java

@@ -1,10 +1,7 @@
 package shop.alien.second.controller;
 
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import shop.alien.second.service.RiskControlService;
 
 @RestController
@@ -33,14 +30,10 @@ public class RiskControlController {
     }
 
     /**
-     * 记录风控数据
-     *
-     * @param page     页码
-     * @param size   条数
+     * 发送封禁通知
      */
-    @PostMapping("/queryRiskControlRecords")
-    public void queryRiskControlRecords(@RequestParam("page") Integer page,
-                                      @RequestParam("size") Integer size) {
-        riskControlService.queryRiskControlRecords(page,  size);
+    @GetMapping("/sendNotice")
+    public void sendNotice(Integer userId) {
+        riskControlService.sendNotice(userId);
     }
 }

+ 2 - 6
alien-second/src/main/java/shop/alien/second/service/RiskControlService.java

@@ -36,11 +36,7 @@ public interface RiskControlService extends IService<SecondRiskControlRecord> {
     List<SecondRiskControlRecord> getSameTypeRiskControlRecords(Integer ruleType, String businessId);
 
     /**
-     * 获取相同类型的风控数据
-     *
-     * @param page   页码
-     * @param size 条数
-     * @return 查询风控列表
+     * 发送封禁通知
      */
-    List<SecondRiskControlRecordVo> queryRiskControlRecords(Integer page, Integer size);
+    void sendNotice(Integer userId);
 }

+ 35 - 71
alien-second/src/main/java/shop/alien/second/service/impl/RiskControlServiceImpl.java

@@ -1,29 +1,23 @@
 package shop.alien.second.service.impl;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import shop.alien.entity.second.SecondRiskControlRecord;
-import shop.alien.entity.second.vo.SecondRiskControlRecordVo;
-import shop.alien.entity.store.LifeBrandedCard;
-import shop.alien.entity.store.LifeClassManage;
+import shop.alien.entity.store.LifeNotice;
 import shop.alien.entity.store.LifeUser;
-import shop.alien.entity.store.vo.LifeUserVo;
+import shop.alien.entity.store.vo.WebSocketVo;
+import shop.alien.mapper.LifeNoticeMapper;
 import shop.alien.mapper.LifeUserMapper;
 import shop.alien.mapper.second.SecondRiskControlRecordMapper;
+import shop.alien.second.feign.AlienStoreFeign;
 import shop.alien.second.service.RiskControlService;
-import shop.alien.util.common.Constants;
 
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * 风控服务实现类
@@ -34,9 +28,9 @@ import java.util.stream.Collectors;
 public class RiskControlServiceImpl extends ServiceImpl<SecondRiskControlRecordMapper, SecondRiskControlRecord> implements RiskControlService {
 
     private final SecondRiskControlRecordMapper secondRiskControlRecordMapper;
-
+    private final LifeNoticeMapper lifeNoticeMapper;
     private final LifeUserMapper lifeUserMapper;
-
+    private final AlienStoreFeign alienStoreFeign;
     /**
      * 记录风控数据
      *
@@ -88,67 +82,37 @@ public class RiskControlServiceImpl extends ServiceImpl<SecondRiskControlRecordM
         return secondRiskControlRecordMapper.selectList(queryWrapper);
     }
 
-    @Override
-    public List<SecondRiskControlRecordVo> queryRiskControlRecords(Integer page, Integer size) {
-        try {
-            List<SecondRiskControlRecordVo> list = new ArrayList<>();
-            IPage<SecondRiskControlRecord> brandedPage = new Page<>(page, size);
-
-            // 获取风险管控信息
-            QueryWrapper<SecondRiskControlRecord> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("delete_flag", Constants.DeleteFlag.NOT_DELETED);
-            queryWrapper.orderByDesc("created_time");
-            IPage<SecondRiskControlRecord> brandedCards = secondRiskControlRecordMapper.selectPage(brandedPage, queryWrapper);
+    /**
+     * 发送封禁通知
+     */
+    public void sendNotice(Integer userId) {
+        LifeUser lifeUser = lifeUserMapper.selectById(userId);
+        if (lifeUser == null) return;
 
-            for (SecondRiskControlRecord card : brandedCards.getRecords()) {
-                SecondRiskControlRecordVo vo = new SecondRiskControlRecordVo();
-                if (1 == card.getRuleType()) {
-                    vo.setRuleTypeName("洗钱嫌疑");
-                    vo.setRuleName("高频高价交易");
-                    vo.setRuleRisk("中风险");
-                    vo.setCreatedTime(card.getCreatedTime());
-                } else if (2 == card.getRuleType()) {
-                    vo.setRuleTypeName("账号异常");
-                    vo.setRuleName("同一设备/mac 24小时内注册超过3个账号");
-                    vo.setRuleRisk("中风险");
-                    vo.setCreatedTime(card.getCreatedTime());
-                } else if (3 == card.getRuleType()) {
-                    vo.setRuleTypeName("交易欺诈");
-                    vo.setRuleName("用户频繁修改商品价格");
-                    vo.setRuleRisk("高风险");
-                    vo.setCreatedTime(card.getCreatedTime());
-                } else if (4 == card.getRuleType()) {
-                    vo.setRuleTypeName("异常发布");
-                    vo.setRuleName("短时间大量发布同类商品");
-                    vo.setRuleRisk("高风险");
-                    vo.setCreatedTime(card.getCreatedTime());
-                }
+        String phoneId = "user_" + lifeUser.getUserPhone();
 
-                if ( 2 != card.getRuleType()) {
-                    // 根据ID查询用户信息
-                    QueryWrapper<LifeUserVo> queryWrapperUser = new QueryWrapper<>();
-                    queryWrapper.eq("delete_flag", Constants.DeleteFlag.NOT_DELETED)
-                            .eq("id", card.getUserId());
-                    LifeUserVo userInfoList = lifeUserMapper.getUserById(queryWrapperUser);
-                    // 用户手机号
-                    vo.setUserPhone(userInfoList.getUserPhone());
-                }
+        // 给买家发送通知
+        LifeNotice lifeNotice = new LifeNotice();
+        lifeNotice.setSenderId("system");
+        lifeNotice.setReceiverId(phoneId);
+        lifeNotice.setBusinessId(userId);
+        lifeNotice.setTitle("账号违规处理");
+        lifeNotice.setNoticeType(1);
+        // 封装通知信息
+        JSONObject noticeMessage = new JSONObject();
+        noticeMessage.put("message", "账号违反平台规约进行封禁处理");
+        lifeNotice.setContext(noticeMessage.toJSONString());
+        lifeNoticeMapper.insert(lifeNotice);
 
-                // 处理结果
-                if (card.getRiskStatus().equals(0)) {
-                    vo.setRiskStatusName("待处理");
-                } else if (card.getRiskStatus().equals(1)) {
-                    vo.setRiskStatusName("已处理");
-                } else if (card.getRiskStatus().equals(2)) {
-                    vo.setRiskStatusName("已忽略");
-                }
-                list.add(vo);
-            }
-            return list;
-        } catch (Exception e) {
-            log.error("记录风控数据时发生异常: 用户ID={}, 规则类型={},业务id={}", e);
-            return null;
-        }
+        // 给买家推送通知
+        WebSocketVo webSocketVo = new WebSocketVo();
+        webSocketVo.setSenderId("system");
+        webSocketVo.setReceiverId(phoneId);
+        webSocketVo.setCategory("notice");
+        webSocketVo.setNoticeType("1");
+        webSocketVo.setType("1");
+        webSocketVo.setText(JSONObject.from(lifeNotice).toJSONString());
+        alienStoreFeign.sendMsgToClientByPhoneId(phoneId, JSONObject.from(webSocketVo).toJSONString());
     }
 
 }