Procházet zdrojové kódy

上传图片和用户认证接口

LiFei před 2 roky
rodič
revize
6847ad63d5

+ 2 - 0
happy-boot-module-common/src/main/java/org/jeecg/common/util/ErrorCode.java

@@ -40,5 +40,7 @@ public interface ErrorCode {
     final int code_2007 = 2007; // 数据不存在
     final int code_2008 = 2008;   //用户信息验证失败或token失效
     final int code_2009 = 2009;   //非授权用户
+    final int code_2010 = 2010;   //身份证已存在
+    final int code_2011 = 2011;   //实名认证失败,请检查信息是否正确
 
 }

+ 60 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/api/hwuser/HwUserControllerAPI.java

@@ -57,6 +57,66 @@ public class HwUserControllerAPI extends BaseAppController {
     }
 
 
+
+    /**
+     * 上传图片
+     */
+    @GetMapping(value = "/imgUpload")
+    public ModelAndView imgUpload(HttpServletRequest request, HttpServletResponse response) {
+        Map<String, Object> returnMap = new HashMap<String, Object>();
+        Map<String, String> requestMap = findRequestMap(request);
+        Map<String, Object> obj = null;
+        try {
+            returnMap = hwUserService.imgUpload(requestMap, request, response);
+            if ("1004".equals(returnMap.get("success"))) {
+                obj = errorResult(ErrorCode.code_2008, "上传图片失败");
+            } else {
+                obj = successResult(ErrorCode.code_1000, "上传图片成功", returnMap);
+            }
+        } catch (Exception e) {
+            System.out.println("Exception e:" + e);
+            e.printStackTrace();
+            obj = errorResult(ErrorCode.code_2006, "获取数据失败");
+            logError(request, e.getMessage(), e);
+        }
+
+        ModelAndView view = new ModelAndView(new MappingJackson2JsonView(), obj);
+        return view;
+    }
+
+
+    /**
+     * 实名认证
+     */
+    @GetMapping(value = "/authenticate")
+    public ModelAndView authenticate(HttpServletRequest request, HttpServletResponse response) {
+        Map<String, Object> returnMap = new HashMap<String, Object>();
+        Map<String, String> requestMap = findRequestMap(request);
+        Map<String, Object> obj = null;
+        try {
+            returnMap = hwUserService.authenticate(requestMap, request, response);
+            if ("1004".equals(returnMap.get("success"))) {
+                obj = errorResult(ErrorCode.code_2008, "实名认证失败");
+            }else if("2010".equals(returnMap.get("success"))){
+                obj = errorResult(ErrorCode.code_2010, "身份证已存在");
+            } else if("2011".equals(returnMap.get("success"))){
+                obj = errorResult(ErrorCode.code_2011, "实名认证失败,请检查信息是否正确");
+            }else {
+                obj = successResult(ErrorCode.code_1000, "实名认证成功", returnMap);
+            }
+        } catch (Exception e) {
+            System.out.println("Exception e:" + e);
+            e.printStackTrace();
+            obj = errorResult(ErrorCode.code_2006, "获取数据失败");
+            logError(request, e.getMessage(), e);
+        }
+
+        ModelAndView view = new ModelAndView(new MappingJackson2JsonView(), obj);
+        return view;
+    }
+
+
+
     /**
      * 修改头像接口
      *

+ 5 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/hwuser/entity/HwUser.java

@@ -60,6 +60,11 @@ public class HwUser implements Serializable{
 
 	@TableField(exist = false)
 	private HwBankAccount hwBankAccount;
+	/**认证时间*/
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+	private Date authenticationTime;
+
 
 	/**
 	 * 银行卡号

+ 4 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/hwuser/service/IHwUserService.java

@@ -56,4 +56,8 @@ public interface IHwUserService extends IService<HwUser> {
     void saveUser(List<HwUserExport> hwUserExportList);
 
     List<HwUser> findHwuserByIdcard(String idcardNumber);
+
+    Map<String,Object> imgUpload(Map<String,String> requestMap, HttpServletRequest request, HttpServletResponse response);
+
+    Map<String,Object> authenticate(Map<String,String> requestMap, HttpServletRequest request, HttpServletResponse response);
 }

+ 146 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/hwuser/service/impl/HwUserServiceImpl.java

@@ -11,6 +11,7 @@ import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.oss.OSSClientUtil;
 import org.jeecg.common.oss.OSSConfig;
@@ -35,6 +36,7 @@ import org.jeecg.modules.saasmanager.entity.HwCompanyUser;
 import org.jeecg.modules.saasmanager.entity.HwPlatformCompany;
 import org.jeecg.modules.saasmanager.service.IHwCompanyUserService;
 import org.jeecg.modules.saasmanager.service.IHwPlatformCompanyService;
+import org.jeecg.modules.util.BirthUtils;
 import org.jeecg.modules.util.Constants;
 import org.jeecg.modules.util.ExcelUtils;
 import org.jeecg.modules.util.TokenUtil;
@@ -869,4 +871,148 @@ public class HwUserServiceImpl extends ServiceImpl<HwUserMapper, HwUser> impleme
     public List<HwUser> findHwuserByIdcard(String idcardNumber) {
         return baseMapper.findHwuserByIdcard(idcardNumber);
     }
+
+    /**
+     * 上传图片
+     *
+     * @param request
+     * @return
+     */
+    @Override
+    public Map<String, Object> imgUpload(Map<String, String> requestMap, HttpServletRequest request, HttpServletResponse response) {
+        Map<String, Object> resultImg = new HashMap<String, Object>();
+        String type = request.getParameter("upType");
+        String userId = request.getParameter("userId");
+        HwUser hwmUser = this.getById(userId);
+        String path = "/hwuser/index";
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(type)) {
+            switch (type) {
+                case "0":
+                    //基本资料
+                    path = "/hwuser/resume";
+                    break;
+                case "1":
+                    //身份证正面
+                    path = "/hwuser/idcard/front";
+                    break;
+                case "2":
+                    //身份证反面
+                    path = "/hwuser/idcard/back";
+                    break;
+                case "3":
+                    //手持身份证
+                    path = "/hwuser/idcard/hold";
+                    break;
+                default:
+                    path = "/hwuser/index";
+                    break;
+            }
+        }
+        //上传调用
+        try {
+            if (request instanceof MultipartHttpServletRequest) {
+                Result<?> result = this.webupload(request, "file", hwmUser, path);
+                if (result.isSuccess()) {
+                    resultImg.put("imgUrl", result.getResult().toString());
+                } else {
+                    log.info("imgUpload========{}", result.getMessage());
+                    resultImg.put("success","1004");
+                }
+            } else {
+                log.info("imgUpload========没有文件上传");
+                resultImg.put("success","1004");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            resultImg.put("success","1004");
+        }
+        return resultImg;
+    }
+
+
+    /**
+     * 实名认证
+     *
+     * @param requestMap
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> authenticate(Map<String, String> requestMap, HttpServletRequest request, HttpServletResponse response) {
+        Map<String, Object> resultImg = new HashMap<String, Object>();
+        String idcardNumber = request.getParameter("idcardNumber");
+        String id = request.getParameter("id");
+        String name = request.getParameter("name");
+        String setIdcardFront = request.getParameter("setIdcardFront");
+        String setIdcardBack = request.getParameter("setIdcardBack");
+        try {
+            // 身份证号是否已存在
+            QueryWrapper<HwUser> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("idcard_number", idcardNumber);
+            queryWrapper.ne("id", id);
+            int count =count(queryWrapper);
+            if (count > 0) {
+                resultImg.put("success","2010");
+                return resultImg;
+            }
+            // 验证实名信息
+//            boolean ok = txIdentityUtils.IdCardVerification(name, idcardNumber);
+//            if (!ok) {
+//                resultImg.put("success","2010");
+//                return resultImg;
+//            }
+            HwUser hwmUser = this.getById(id);
+            hwmUser.setName(name);
+            hwmUser.setIdcardNumber(idcardNumber);
+            hwmUser.setGender(BirthUtils.getSex(idcardNumber));
+            hwmUser.setIdcardFront(setIdcardFront);
+            hwmUser.setIdcardBack(setIdcardBack);
+            hwmUser.setAuthenticationTime(new Date());
+            hwmUser.setAuthenticationStatus(1);
+            this.updateById(hwmUser);
+            // 同步慧盈
+            String requestUrl = OauthApi.USER_EDIT;
+            Map<String, Object> parameters = new HashMap<>();
+            parameters.put("name", hwmUser.getName());
+            parameters.put("idcardNumber", hwmUser.getIdcardNumber());
+            parameters.put("userCode", hwmUser.getUserCode());
+            parameters.put("updateBy", hwmUser.getName());
+            String idcardPicture = "";
+            if (org.apache.commons.lang3.StringUtils.isNotBlank(hwmUser.getIdcardFront())) {
+                if (org.apache.commons.lang3.StringUtils.isNotBlank(hwmUser.getIdcardBack())) {
+                    idcardPicture = hwmUser.getIdcardFront() + "," + hwmUser.getIdcardBack();
+                } else {
+                    idcardPicture = hwmUser.getIdcardFront();
+                }
+            } else {
+                if (org.apache.commons.lang3.StringUtils.isNotBlank(hwmUser.getIdcardBack())) {
+                    idcardPicture = hwmUser.getIdcardBack();
+                } else {
+                    idcardPicture = null;
+                }
+            }
+            parameters.put("idcardPicture", idcardPicture);
+            log.info("param============{}", JSONObject.toJSONString(parameters));
+            //数据加密
+            String biz_content = CryptTool.encode(JSONObject.toJSONString(parameters));
+            JSONObject jsonObject = OauthTokenUtils.doRequest(requestUrl, HttpsContants.POST, biz_content, "");
+            log.info("用户-编辑===={}", jsonObject);
+            if (jsonObject != null) {
+                if (jsonObject.getBoolean("success")) {
+                    log.info("用户-编辑成功===={}", jsonObject);
+                } else {
+                    log.info("用户-编辑失败===={}", jsonObject);
+                    //抛出异常,事务回滚
+                    throw new JeecgBootException("认证失败");
+                }
+            } else {
+                log.info("用户-编辑失败===={}", jsonObject);
+                throw new JeecgBootException("认证失败");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            resultImg.put("success","1004");
+        }
+        return resultImg;
+    }
 }

+ 29 - 0
happy-boot-module-flexjob/src/main/java/org/jeecg/modules/util/BirthUtils.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.util;
+
+/**
+ * @Author: zwq
+ * @Date: Create in 2023/1/16 9:06
+ * @Description: 计算性别、年龄等工具类
+ */
+public class BirthUtils {
+
+    /**
+     * 根据身份证号判断用户性别
+     * (0:未知 1:男性 2:女性)
+     *
+     * @param cardNo
+     * @return
+     */
+    public static Integer getSex(String cardNo) {
+        String sexStr = "0";
+        if (cardNo.length() == 15) {
+            sexStr = cardNo.substring(14, 15);
+        } else if (cardNo.length() == 18) {
+            sexStr = cardNo.substring(16, 17);
+        } else {
+            return 0;
+        }
+        int sexNo = Integer.parseInt(sexStr);
+        return sexNo % 2 == 0 ? 2 : 1;
+    }
+}