Ver Fonte

新增实名认证接口(仅上传身份证信息)
更新说明

hjp há 2 semanas atrás
pai
commit
66d2e4fba6

+ 3 - 0
README.md

@@ -37,3 +37,6 @@
 
 
 <br>
+
+**数据库数据说明**
+-common_info 819 为AES秘钥SECRET_KEY,如无特殊情况请勿修改,修改后之前加密的数据无法解密

+ 1 - 0
src/main/java/com/sqx/config/ShiroConfig.java

@@ -75,6 +75,7 @@ public class ShiroConfig {
         filterMap.put("/user/**" ,"anon");
         filterMap.put("/driver/**","anon");
         filterMap.put("/app/car/**","anon");
+        filterMap.put("/app/userRealnameInfo/**","anon");
         // FIXME: END 2025/5/14 0014
         //filterMap.put("/app/userinfo","anon");
         filterMap.put("/**", "oauth2");

+ 78 - 0
src/main/java/com/sqx/modules/userRealnameInfo/controller/UserRealnameInfoController.java

@@ -0,0 +1,78 @@
+package com.sqx.modules.userRealnameInfo.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.sqx.common.utils.Result;
+import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.common.service.CommonInfoService;
+import com.sqx.modules.userRealnameInfo.entity.UserRealnameInfo;
+import com.sqx.modules.userRealnameInfo.service.UserRealnameInfoService;
+import com.sqx.modules.utils.AESCBCWithRandomIV;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@RestController
+@Api(value = "实名认证", tags = {"实名认证"})
+@RequestMapping("/app/userRealnameInfo")
+public class UserRealnameInfoController {
+    @Resource
+    private UserRealnameInfoService userRealnameInfoService;
+    @Resource
+    private CommonInfoService commonInfoService;
+
+    @Login
+    @GetMapping("/selectByUserId")
+    @ApiOperation("查询实名认证信息")
+    public Result selectByUserId(@RequestAttribute("userId")Long userId, Integer isDriver){
+        String key = commonInfoService.findOne(819).getValue();
+        List<UserRealnameInfo> list = userRealnameInfoService.list(new QueryWrapper<UserRealnameInfo>().eq("user_id", userId).eq("is_driver", isDriver));
+        if (list.size() == 0){
+            UserRealnameInfo userRealnameInfo = new UserRealnameInfo();
+            userRealnameInfo.setUserId(userId);
+            userRealnameInfo.setVerifiedStatus(0);
+            return Result.success().put("data",userRealnameInfo);
+        }
+        //解密身份证号
+        String decrypt = null;
+        try {
+            decrypt = AESCBCWithRandomIV.decrypt(list.get(0).getIdCardNumber(), key);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        //脱敏处理
+        list.get(0).setIdCardNumber(userRealnameInfoService.maskIdKeepFront(decrypt));
+        return Result.success().put("data",list.get(0));
+    }
+
+    @Login
+    @PostMapping("/insertOrUpdate")
+    @ApiOperation("新增或修改实名认证信息")
+    public Result insertOrUpdate(@RequestAttribute("userId")Long userId, UserRealnameInfo userRealnameInfo){
+        String key = commonInfoService.findOne(819).getValue();
+        List<UserRealnameInfo> list = userRealnameInfoService.list(new QueryWrapper<UserRealnameInfo>().eq("user_id", userId).eq("is_driver", userRealnameInfo.getIsDriver()));
+        if (list.size() == 0){
+            userRealnameInfo.setUserId(userId);
+            String encrypt = null;
+            try {
+                encrypt = AESCBCWithRandomIV.encrypt(userRealnameInfo.getIdCardNumber(), key);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            userRealnameInfo.setIdCardNumber(encrypt);
+            userRealnameInfoService.insert(userRealnameInfo);
+        }else if (list.size() == 1){
+            userRealnameInfoService.update(userRealnameInfo);
+        }
+        return Result.success();
+    }
+
+    @PostMapping("/updateRealnameInfo")
+    @ApiOperation("更新实名认证状态")
+    public Result updateRealnameInfo(UserRealnameInfo userRealnameInfo){
+        userRealnameInfoService.update(userRealnameInfo);
+        return Result.success();
+    }
+}

+ 9 - 0
src/main/java/com/sqx/modules/userRealnameInfo/dao/UserRealnameInfoDao.java

@@ -0,0 +1,9 @@
+package com.sqx.modules.userRealnameInfo.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sqx.modules.userRealnameInfo.entity.UserRealnameInfo;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface UserRealnameInfoDao extends BaseMapper<UserRealnameInfo> {
+}

+ 74 - 0
src/main/java/com/sqx/modules/userRealnameInfo/entity/UserRealnameInfo.java

@@ -0,0 +1,74 @@
+package com.sqx.modules.userRealnameInfo.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class UserRealnameInfo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    /**
+     * 实名认证id
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 真实姓名
+     */
+    private String realName;
+
+    /**
+     * 身份证号
+     */
+    private String idCardNumber;
+
+    /**
+     * 身份证正面照片URL
+     */
+    private String idCardFrontUrl;
+
+    /**
+     * 身份证反面照片URL
+     */
+    private String idCardBackUrl;
+
+    /**
+     * 人脸识别是否通过(0否 1是)
+     */
+    private Integer faceVerified;
+
+    /**
+     * 认证状态(0未实名 1已实名 3实名失败 4实名中)
+     */
+    private Integer verifiedStatus;
+
+    /**
+     * 认证通过时间
+     */
+    private Date verifyTime;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 0-用户,1-司机
+     */
+    private Integer isDriver;
+}

+ 12 - 0
src/main/java/com/sqx/modules/userRealnameInfo/service/UserRealnameInfoService.java

@@ -0,0 +1,12 @@
+package com.sqx.modules.userRealnameInfo.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.sqx.modules.userRealnameInfo.entity.UserRealnameInfo;
+
+public interface UserRealnameInfoService extends IService<UserRealnameInfo> {
+    void insert(UserRealnameInfo userRealnameInfo);
+
+    void update(UserRealnameInfo userRealnameInfo);
+
+    String maskIdKeepFront(String idCard);
+}

+ 33 - 0
src/main/java/com/sqx/modules/userRealnameInfo/service/impl/UserRealnameInfoServiceImpl.java

@@ -0,0 +1,33 @@
+package com.sqx.modules.userRealnameInfo.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sqx.modules.userRealnameInfo.dao.UserRealnameInfoDao;
+import com.sqx.modules.userRealnameInfo.entity.UserRealnameInfo;
+import com.sqx.modules.userRealnameInfo.service.UserRealnameInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+@Slf4j
+@Service
+public class UserRealnameInfoServiceImpl extends ServiceImpl<UserRealnameInfoDao, UserRealnameInfo> implements UserRealnameInfoService {
+    @Override
+    public void insert(UserRealnameInfo userRealnameInfo) {
+        baseMapper.insert(userRealnameInfo);
+    }
+
+    @Override
+    public void update(UserRealnameInfo userRealnameInfo) {
+        baseMapper.updateById(userRealnameInfo);
+    }
+
+    public String maskIdKeepFront(String idCard) {
+        if (idCard != null && idCard.length() > 3) {
+            StringBuilder sb = new StringBuilder(idCard.substring(0, 3));
+            for (int i = 3; i < idCard.length(); i++) {
+                sb.append("*");
+            }
+            return sb.toString();
+        }
+        return "";
+    }
+}