认证相关挪到中台下

main
rong.liu 1 year ago
parent 9fcc42adc1
commit 53e55f5d14
  1. 50
      nakadai/src/main/java/com/huoran/nakadai/config/AliRealNameAuthenticationConfig.java
  2. 367
      nakadai/src/main/java/com/huoran/nakadai/controller/AliRealNameAuthenticationController.java
  3. 214
      nakadai/src/main/java/com/huoran/nakadai/controller/EnterpriseCertificationController.java
  4. 77
      nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationConfigController.java
  5. 106
      nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationController.java
  6. 132
      nakadai/src/main/java/com/huoran/nakadai/entity/EnterpriseCertification.java
  7. 70
      nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassification.java
  8. 38
      nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassificationConfig.java
  9. 89
      nakadai/src/main/java/com/huoran/nakadai/entity/UserAuthenticationInformation.java
  10. 55
      nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationLIstReq.java
  11. 60
      nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationReq.java
  12. 40
      nakadai/src/main/java/com/huoran/nakadai/entity/req/SupplierClassificationReq.java
  13. 64
      nakadai/src/main/java/com/huoran/nakadai/entity/res/BusinessLicenseOCRResp.java
  14. 40
      nakadai/src/main/java/com/huoran/nakadai/entity/res/CreditCodeResp.java
  15. 70
      nakadai/src/main/java/com/huoran/nakadai/entity/res/IdCardOCRResp.java
  16. 42
      nakadai/src/main/java/com/huoran/nakadai/entity/res/RealNameAuthenticationResp.java
  17. 44
      nakadai/src/main/java/com/huoran/nakadai/mapper/EnterpriseCertificationMapper.java
  18. 16
      nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationConfigMapper.java
  19. 16
      nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationMapper.java
  20. 18
      nakadai/src/main/java/com/huoran/nakadai/mapper/UserAuthenticationInformationMapper.java
  21. 159
      nakadai/src/main/java/com/huoran/nakadai/mapper/xml/EnterpriseCertificationMapper.xml
  22. 5
      nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationConfigMapper.xml
  23. 5
      nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationMapper.xml
  24. 4
      nakadai/src/main/java/com/huoran/nakadai/mapper/xml/UserAuthenticationInformationMapper.xml
  25. 40
      nakadai/src/main/java/com/huoran/nakadai/service/EnterpriseCertificationService.java
  26. 16
      nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationConfigService.java
  27. 16
      nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationService.java
  28. 15
      nakadai/src/main/java/com/huoran/nakadai/service/UserAuthenticationInformationService.java
  29. 83
      nakadai/src/main/java/com/huoran/nakadai/service/impl/EnterpriseCertificationServiceImpl.java
  30. 20
      nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationConfigServiceImpl.java
  31. 20
      nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationServiceImpl.java
  32. 20
      nakadai/src/main/java/com/huoran/nakadai/service/impl/UserAuthenticationInformationServiceImpl.java
  33. 148
      nakadai/src/main/java/com/huoran/nakadai/utils/ali/FaceRecognitionAidUtil.java
  34. 312
      nakadai/src/main/java/com/huoran/nakadai/utils/ali/HttpUtils.java
  35. 6
      nakadai/src/test/java/com/huoran/nakadai/code/CodeGenerator.java
  36. 13
      users/src/main/java/com/huoran/users/controller/AliRealNameAuthenticationController.java
  37. 25
      users/src/main/java/com/huoran/users/controller/EnterpriseCertificationController.java
  38. 5
      users/src/main/java/com/huoran/users/entity/EnterpriseCertification.java
  39. 3
      users/src/main/java/com/huoran/users/mapper/xml/EnterpriseCertificationMapper.xml

@ -0,0 +1,50 @@
package com.huoran.nakadai.config;
import org.apache.commons.codec.binary.Base64;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class AliRealNameAuthenticationConfig {
public static final String ALI_API_HOST = "https://cardnumber.market.alicloudapi.com";
//营业执照
public static final String ALI_API_BUSINESS_LICENSE_HOST = "https://bizlicense.market.alicloudapi.com";
public static final String ALI_API_BUSINESS_LICENSE_PATH = "/rest/160601/ocr/ocr_business_license.json";
public static final String ALI_API_PATH = "/rest/160601/ocr/ocr_idcard.json";
public static final String ALI_API_APPCODE = "4c22c2b34b2d4b5aaa57186a49aa3a4c";
// public static final String ALI_API_APPCODE = "62512c9aa7714735a182bb08a0173f22";
public static final String ALI_IDCHECK_HOST = "https://sxidcheck.market.alicloudapi.com";
public static final String ALI_IDCHECK_PATH = "/idcard/check";
public static final String GET_APP_CODE_LINK = "https://idenauthen.market.alicloudapi.com/idenAuthentication";
public static Map<String, String> buildHeaders() {
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", "APPCODE " + ALI_API_APPCODE);
headers.put("Content-Type", "application/json; charset=UTF-8");
return headers;
}
public static String imgBase64(MultipartFile file) {
String imgBase64 = "";
try {
byte[] content = file.getBytes();
imgBase64 = new String(Base64.encodeBase64(content));
} catch (IOException e) {
e.printStackTrace();
}
return imgBase64;
}
}

@ -0,0 +1,367 @@
package com.huoran.nakadai.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.google.gson.Gson;
import com.huoran.common.response.R;
import com.huoran.common.utils.TokenUtils;
import com.huoran.nakadai.config.AliRealNameAuthenticationConfig;
import com.huoran.nakadai.entity.EnterpriseCertification;
import com.huoran.nakadai.entity.UserInfo;
import com.huoran.nakadai.entity.UserAccount;
import com.huoran.nakadai.entity.UserAuthenticationInformation;
import com.huoran.nakadai.entity.res.BusinessLicenseOCRResp;
import com.huoran.nakadai.entity.res.CreditCodeResp;
import com.huoran.nakadai.entity.res.IdCardOCRResp;
import com.huoran.nakadai.entity.res.RealNameAuthenticationResp;
import com.huoran.nakadai.service.EnterpriseCertificationService;
import com.huoran.nakadai.service.UserAuthenticationInformationService;
import com.huoran.nakadai.utils.ali.FaceRecognitionAidUtil;
import com.huoran.nakadai.utils.ali.HttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Api(value = "小程序-实名认证", tags = "小程序-实名认证")
@RestController
@RequestMapping("/users/autonym")
public class AliRealNameAuthenticationController {
//实名认证实现类
@Autowired
public UserAuthenticationInformationService service;
//企业认证信息存储
@Autowired
public EnterpriseCertificationService enterpriseCertificationService;
@ApiOperation(value = "删除平台全部认证信息")
@PostMapping("/deletePlatformAuthenticationInformation")
public R deletePlatformAuthenticationInformation(@ApiParam(name = "openIds", value = "微信openId", required = true) @RequestBody List<String> openIds) {
openIds.forEach(openId -> {
QueryWrapper<UserAuthenticationInformation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", openId);
service.remove(queryWrapper);
QueryWrapper<EnterpriseCertification> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("open_id", openId);
enterpriseCertificationService.remove(queryWrapper1);
});
return R.ok();
}
@ApiOperation(value = "身份证图片验证")
@PostMapping("/faceAuthentication")
public R faceAuthentication(@RequestParam(name = "imgFile", required = true) @ApiParam(value = "图片url") String imgFile, @RequestParam(name = "side", required = true) @ApiParam(value = "身份证正反面类型:face/back") String side) throws IOException {
//身份证信息返回
String idCardInformationReturn = FaceRecognitionAidUtil.IdCardOCRRecognition(imgFile, side);
if (ObjectUtils.isEmpty(idCardInformationReturn)) {
return R.error("身份证图片验证失败,请重新再试!");
}
IdCardOCRResp resp = new Gson().fromJson(idCardInformationReturn, IdCardOCRResp.class);
if (resp.getSuccess()) {
return R.ok().put("data", resp);
} else {
return R.error("身份证图片验证失败,请重新再试!");
}
}
@PostMapping("/realNameAuthentication")
@ApiOperation(value = "输入身份证号码、姓名进行实名认证且添加认证信息", response = UserAuthenticationInformation.class)
public R realNameAuthentication(@RequestBody @ApiParam(name = "用户实名认证信息记录对象", value = "传入json格式", required = true) UserAuthenticationInformation userAuthenticationInformation, HttpServletRequest request) throws IOException {
String accountId = TokenUtils.getIdByJwtToken(request);
userAuthenticationInformation.setAccountId(Integer.valueOf(accountId));
String json = FaceRecognitionAidUtil.postData(AliRealNameAuthenticationConfig.ALI_API_APPCODE, AliRealNameAuthenticationConfig.GET_APP_CODE_LINK, userAuthenticationInformation.getRealName(), userAuthenticationInformation.getIdCardNo());
RealNameAuthenticationResp info = new Gson().fromJson(json, RealNameAuthenticationResp.class);
if (!info.getRespCode().equals("0000")) {
return R.error(info.getRespMessage());
}
QueryWrapper<UserAuthenticationInformation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", userAuthenticationInformation.getOpenId());
UserAuthenticationInformation information = service.getOne(queryWrapper);
if (!ObjectUtils.isEmpty(information)) {
//为二次认证,删除上一次的认证信息
service.removeById(information.getId());
}
//设置用户当前认证时间
userAuthenticationInformation.setRealNameAuthenticationTime(new Date());
userAuthenticationInformation.setProvince(info.getProvince());
userAuthenticationInformation.setCity(info.getCity());
userAuthenticationInformation.setCounty(info.getCounty());
/*QueryWrapper<HrUserAccount> accountQueryWrapper = new QueryWrapper<>();
accountQueryWrapper.eq("app_open_id", userAuthenticationInformation.getOpenId());
accountQueryWrapper.eq("platform_id", 7);*/
UserAccount userAccount = enterpriseCertificationService.queryAccountInformation(userAuthenticationInformation.getOpenId(), 7);
userAccount.setAccount(userAuthenticationInformation.getRealName());
/*userAccountService.updateById(userAccount);*/
enterpriseCertificationService.updateAccountInfo(userAccount);
/* UpdateWrapper<HrUserInfo> userInfoUpdateWrapper = new UpdateWrapper<>();
userInfoUpdateWrapper.set("user_name", userAuthenticationInformation.getRealName());
userInfoUpdateWrapper.eq("user_id", userAccount.getUserId());
userInfoService.update(new HrUserInfo(), userInfoUpdateWrapper);*/
UserInfo userInfo = new UserInfo();
userInfo.setUserName(userAuthenticationInformation.getRealName());
userInfo.setUserId(userAccount.getUserId());
enterpriseCertificationService.updateUserInfo(userInfo);
boolean addState = service.save(userAuthenticationInformation);
return addState ? R.ok() : R.error("认证失败");
}
@PostMapping("/authenticationOrNot")
@ApiOperation(value = "个人是否认证", response = UserAuthenticationInformation.class)
public R authenticationOrNot(HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
QueryWrapper<UserAuthenticationInformation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("account_id", accountId);
UserAuthenticationInformation userAuthenticationInformation = service.getOne(queryWrapper);
if (ObjectUtils.isEmpty(userAuthenticationInformation)) {
return R.ok().put("data", false).put("msg", "未认证");
}
return R.ok().put("data", true).put("authenticationInformation", userAuthenticationInformation);
}
@ApiOperation(value = "营业执照图片验证")
@PostMapping("/businessLicensePictureVerification")
public R businessLicensePictureVerification(@RequestParam(name = "imgFile", required = true) @ApiParam(value = "图片url") String imgFile) throws IOException {
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + AliRealNameAuthenticationConfig.ALI_API_APPCODE);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
String bodys = "{\"image\":\"" + imgFile + "\"}";
try {
HttpResponse response = HttpUtils.doPost(AliRealNameAuthenticationConfig.ALI_API_BUSINESS_LICENSE_HOST, AliRealNameAuthenticationConfig.ALI_API_BUSINESS_LICENSE_PATH, method, headers, querys, bodys);
BusinessLicenseOCRResp info = new Gson().fromJson(EntityUtils.toString(response.getEntity()), BusinessLicenseOCRResp.class);
if (info.getSuccess()) {
return R.ok().put("data", info);
} else {
//("营业执照图片验证失败,请重新再试!");
return R.error("营业执照图片验证失败,请重新再试!");
}
} catch (Exception e) {
e.printStackTrace();
// ("营业执照图片验证失败,请重新再试!");
return R.error("营业执照图片验证失败,请重新再试!");
}
}
@ApiOperation(value = "统一社会信用代码认证(更改审核状态未提交为待审核)", response = CreditCodeResp.class)
@PostMapping("/creditCodeAuthentication")
public R creditCodeAuthentication(@RequestBody EnterpriseCertification enterpriseCertification, HttpServletRequest request) throws IOException {
String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));
enterpriseCertification.setSubmitTime(new Date());
String host = "https://sys.81api.com";
String path = "/verifyCompany/";
String method = "GET";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + "5a7f623d06724a4da5806c1fb0544e47");
Map<String, String> querys = new HashMap<String, String>();
querys.put("ComapnyName", enterpriseCertification.getCompanyName());
querys.put("CreditCode", enterpriseCertification.getCreditCode());
querys.put("LegalPersonName", enterpriseCertification.getLegalPerson());
String errorMsg = "";
//查询认证id
QueryWrapper<EnterpriseCertification> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", enterpriseCertification.getOpenId());
EnterpriseCertification certification = enterpriseCertificationService.getOne(queryWrapper);
enterpriseCertification.setId(certification.getId());
try {
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
CreditCodeResp info = new Gson().fromJson(EntityUtils.toString(response.getEntity()), CreditCodeResp.class);
if (info.getStatus()) {
if (!ObjectUtils.isEmpty(enterpriseCertificationService.checkWhetherItExists(enterpriseCertification.getCompanyName(), certification.getId(), enterpriseCertification.getOpenId()))) {
errorMsg = "企业名称已存在";
// (errorMsg);
return R.error(errorMsg);
}
//删除上团队信息
// enterpriseCertificationService.deleteTeamInformation(enterpriseCertification.getAccountId());
enterpriseCertificationService.updateById(enterpriseCertification);
//更改二次验证的组织信息
return changeTeamInformation(enterpriseCertification);
} else {
errorMsg = info.getReason();
return R.error().put("message", info.getReason());
}
} catch (Exception e) {
e.printStackTrace();
// (errorMsg);
return R.error(errorMsg);
}
}
@NotNull
private R changeTeamInformation(@RequestBody EnterpriseCertification enterpriseCertification) {
enterpriseCertification.setSubmitTime(new Date());
/*QueryWrapper<HrUserAccount> accountQueryWrapper1 = new QueryWrapper<>();
accountQueryWrapper1.eq("app_open_id", enterpriseCertification.getOpenId());
accountQueryWrapper1.eq("platform_id", enterpriseCertification.getPlatformSource());*/
UserAccount userAccount1 = enterpriseCertificationService.queryAccountInformation(enterpriseCertification.getOpenId(),
Integer.valueOf(enterpriseCertification.getPlatformSource()));
// userAccountService.updateById(userAccount1);
userAccount1.setAccount(enterpriseCertification.getCompanyName());
enterpriseCertificationService.updateAccountInfo(userAccount1);
/* UpdateWrapper<HrUserInfo> userInfoUpdateWrapper = new UpdateWrapper<>();
userInfoUpdateWrapper.set("user_name", enterpriseCertification.getCompanyName());
userInfoUpdateWrapper.eq("user_id", userAccount1.getUserId());
userInfoService.update(new HrUserInfo(), userInfoUpdateWrapper);*/
UserInfo userInfo = new UserInfo();
userInfo.setUserName(enterpriseCertification.getCompanyName());
userInfo.setUserId(userAccount1.getUserId());
enterpriseCertificationService.updateUserInfo(userInfo);
//删除团队信息
// enterpriseCertificationService.deleteTeamInformation(enterpriseCertification.getAccountId());
return R.ok("提交成功,请等待审核!");
}
@ApiOperation(value = "统一社会信用代码认证(auditStatus给1,新增认证状态为待审核,用于个人认证幼儿园或供应商情况下)", response = CreditCodeResp.class)
@PostMapping("/organizationCertification")
public R organizationCertification(@RequestBody EnterpriseCertification enterpriseCertification, HttpServletRequest request) throws IOException {
/*
String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*/
enterpriseCertification.setSubmitTime(new Date());
String host = "https://sys.81api.com";
String path = "/verifyCompany/";
String method = "GET";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " +"5a7f623d06724a4da5806c1fb0544e47");
Map<String, String> querys = new HashMap<String, String>();
querys.put("ComapnyName", enterpriseCertification.getCompanyName());
querys.put("CreditCode", enterpriseCertification.getCreditCode());
querys.put("LegalPersonName", enterpriseCertification.getLegalPerson());
String errorMsg = "";
try {
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
CreditCodeResp info = new Gson().fromJson(EntityUtils.toString(response.getEntity()), CreditCodeResp.class);
if (info.getStatus()) {
if (!ObjectUtils.isEmpty(enterpriseCertificationService.checkWhetherItExists(enterpriseCertification.getCompanyName(), null, enterpriseCertification.getOpenId()))) {
errorMsg = "企业名称已存在";
return R.error(errorMsg);
}
enterpriseCertificationService.save(enterpriseCertification);
//更改二次验证的组织信息
return changeTeamInformation(enterpriseCertification);
} else {
errorMsg = info.getReason();
//失败后删除本次生成的企业团队信息
/*QueryWrapper<HrUserAccount> accountQueryWrapper = new QueryWrapper<>();
accountQueryWrapper.eq("app_open_id", enterpriseCertification.getOpenId());
accountQueryWrapper.eq("platform_id", enterpriseCertification.getPlatformSource());
HrUserAccount userAccount = userAccountService.getOne(accountQueryWrapper);*/
UserAccount userAccount = enterpriseCertificationService.queryAccountInformation(enterpriseCertification.getOpenId(),
Integer.valueOf(enterpriseCertification.getPlatformSource()));
enterpriseCertificationService.deleteUserInformation(userAccount.getUserId());
enterpriseCertificationService.deleteAccountInformation(userAccount.getId());
/*userInfoService.removeById(userAccount.getUserId());
userAccountService.removeById(userAccount);*/
return R.error().put("message", info.getReason());
}
} catch (Exception e) {
e.printStackTrace();
return R.error().put("message", errorMsg);
}
}
public static void main(String[] args) {
String host = "https://sys.81api.com";
String path = "/verifyCompany/";
String method = "GET";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + AliRealNameAuthenticationConfig.ALI_API_APPCODE);
Map<String, String> querys = new HashMap<String, String>();
querys.put("ComapnyName", "荆州国瑞网络科技有限公司");
querys.put("CreditCode", "91421000MA494BGL8W");
querys.put("LegalPersonName", "余承文");
String errorMsg = "";
try {
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
CreditCodeResp info = new Gson().fromJson(EntityUtils.toString(response.getEntity()), CreditCodeResp.class);
if (info.getStatus()) {
/*if (!ObjectUtils.isEmpty(enterpriseCertificationService.checkWhetherItExists(enterpriseCertification.getCompanyName(), null, enterpriseCertification.getOpenId()))) {
errorMsg = "企业名称已存在";
(errorMsg);
}
enterpriseCertificationService.save(enterpriseCertification);*/
} else {
errorMsg = info.getReason();
System.err.println("错误信息:" + errorMsg);
}
} catch (Exception e) {
e.printStackTrace();
errorMsg = "系统错误";
}
}
}

@ -0,0 +1,214 @@
package com.huoran.nakadai.controller;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huoran.common.response.R;
import com.huoran.common.utils.TokenUtils;
import com.huoran.nakadai.entity.EnterpriseCertification;
import com.huoran.nakadai.entity.HrUserAccount;
import com.huoran.nakadai.entity.PartnerAccount;
import com.huoran.nakadai.entity.UserAccount;
import com.huoran.nakadai.entity.req.EnterpriseCertificationLIstReq;
import com.huoran.nakadai.entity.vo.WxMssVo;
import com.huoran.nakadai.service.EnterpriseCertificationService;
import com.huoran.nakadai.utils.WeChatUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
* <p>
* 企业认证审核 前端控制器
* </p>
*
* @author chen
* @since 2023-12-18
*/
@Api(value = "后台-企业实名认证相关", tags = "后台-企业实名认证相关")
@RestController
@RequestMapping("/enterprise/certification")
public class EnterpriseCertificationController {
@Autowired
public EnterpriseCertificationService service;
/* @Autowired
public IHrUserAccountService userAccountService;
@Autowired
public IHrUserInfoService userInfoService;*/
/**
* 由前台申请认证后才有后台认证记录认证状态有 待审核已通过未驳回三种状态没有未提交这种状态
*
* @param req
* @return
*/
@PostMapping("/selectEnterpriseCertificationList")
@ApiOperation(value = "企业认证列表", response = EnterpriseCertification.class)
public R selectEnterpriseCertificationList(@RequestBody EnterpriseCertificationLIstReq req) {
return service.selectEnterpriseCertificationList(req);
}
@PostMapping("/enterpriseCertificationDetails")
@ApiOperation(value = "企业认证详情", response = EnterpriseCertification.class)
public R enterpriseCertificationDetails(@ApiParam(name = "id", value = "主键", required = true) @RequestParam Integer id) {
return service.enterpriseCertificationDetails(id);
}
@PostMapping("/findById")
@ApiOperation(value = "查询详情", response = EnterpriseCertification.class)
public R findById(@ApiParam(name = "id", value = "主键", required = true) @RequestParam Integer id) {
EnterpriseCertification enterpriseCertification = service.getById(id);
return R.ok().put("data", enterpriseCertification);
}
@PostMapping("/enterpriseCertificationStatus")
@ApiOperation(value = "查询企业当前认证状态", response = EnterpriseCertification.class)
public R enterpriseCertificationStatus(@ApiParam(name = "openId", value = "微信openId", required = true) @RequestParam String openId) {
/*String accountId = TokenUtils.getIdByJwtToken(request);*/
QueryWrapper<EnterpriseCertification> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", openId);
EnterpriseCertification enterpriseCertification = service.getOne(queryWrapper);
return R.ok().put("data", enterpriseCertification);
}
@PostMapping("/save")
@ApiOperation(value = "新增(注册后调用此接口,传值状态0默认未提交)", response = EnterpriseCertification.class)
public R save(@RequestBody @ApiParam(name = "企业实名认证信息记录对象", value = "传入json格式", required = true) EnterpriseCertification enterpriseCertification, HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));
if (!ObjectUtils.isEmpty(service.checkWhetherItExists(enterpriseCertification.getCompanyName(), null, null))) {
throw new RuntimeException("企业名称已存在");
}
boolean addState = service.save(enterpriseCertification);
return addState ? R.ok() : R.error("新增失败");
}
@PostMapping("/update")
@ApiOperation(value = "修改", response = EnterpriseCertification.class)
public R update(@RequestBody @ApiParam(name = "企业实名认证信息记录对象", value = "传入json格式", required = true) EnterpriseCertification enterpriseCertification, HttpServletRequest request) {
/* String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*/
boolean updateState = service.updateById(enterpriseCertification);
return updateState ? R.ok() : R.error("编辑失败");
}
@PostMapping("/informationAudit")
@ApiOperation(value = "信息审核", response = EnterpriseCertification.class)
public R informationAudit(@ApiParam(name = "auditStatus", value = "审核状态(2.通过,3.不通过)", required = true) @RequestParam(required = false) Integer auditStatus,
@ApiParam(name = "id", value = "主键", required = true) @RequestParam Integer id,
@ApiParam(name = "openId", value = "openid", required = true) @RequestParam(required = true) String openId,
@ApiParam(name = "remark", value = "备注", required = false) @RequestParam(required = false) String remark) {
EnterpriseCertification details = service.getById(id);
EnterpriseCertification enterpriseCertification = new EnterpriseCertification();
enterpriseCertification.setAuditStatus(auditStatus);
enterpriseCertification.setId(id);
String authenticationStatus = "";
WxMssVo wxMssVo = new WxMssVo();
//设置模板id
wxMssVo.setTemplate_id("8pDVfWYqh9c-nn3CeA1NXJtBxdd1FYiCtrl5BeLvbgU");
//跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
wxMssVo.setMiniprogram_state("trial");
wxMssVo.setLang("zh_CN");
String accessToken = null;
try {
//设置openId
wxMssVo.setTouser(openId);
//设置accessToken
accessToken = WeChatUtil.getAccessToken();
} catch (IOException e) {
e.printStackTrace();
}
//设置小程序 跳转页面
wxMssVo.setPage("/pages/person/person");
wxMssVo.setRequest_url("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken);
//将模板中的值一一赋值 发送到小程序的数据要转化为json格式 可以使用下面的方法直接拼接成JSONObject
//使用map结合模板 后续再加遍历拼接成JSONObject
HashMap<String, Object> map = new HashMap<>(3);
map.put("thing1", details.getCompanyName());//公司名称
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = sdf.format(new Date());
map.put("time5", format);//申请时间
switch (auditStatus) {
case 2:
//通过:更改认证状态 认证状态(0默认未认证 1.认证中2.已认证)
enterpriseCertification.setAuthenticationStatus(2);
authenticationStatus = "通过";
break;
case 3:
//不通过
authenticationStatus = "不通过";
map.put("thing3", remark);//备注
enterpriseCertification.setAuthenticationStatus(0);
break;
}
map.put("phrase2", authenticationStatus);//认证状态
wxMssVo.setMap(map);
WeChatUtil.sendTemplateMessage(wxMssVo);
//更新状态
boolean updateState = service.updateById(enterpriseCertification);
return updateState ? R.ok() : R.error("编辑失败");
}
@PostMapping("/batchDeletion")
@ApiOperation(value = "批量删除", response = EnterpriseCertification.class)
public R batchDeletion(@ApiParam(name = "ids", value = "主键", required = true) @RequestBody List<Integer> ids) {
for (Integer id : ids) {
//
EnterpriseCertification enterpriseCertification = service.getById(id);
//删除企业认证后同步删除团队、用户、账户信息
//删除账号表
/*QueryWrapper<HrUserAccount> accountQueryWrapper1 = new QueryWrapper<>();
accountQueryWrapper1.eq("app_open_id", enterpriseCertification.getOpenId());
accountQueryWrapper1.eq("platform_id",enterpriseCertification.getPlatformSource());
HrUserAccount userAccount = userAccountService.getOne(accountQueryWrapper1);*/
UserAccount userAccount = service.queryAccountInformation(enterpriseCertification.getOpenId(), Integer.valueOf(enterpriseCertification.getPlatformSource()));
service.deleteAccountInformation(userAccount.getId());
//删除用户表
service.deleteUserInformation(userAccount.getUserId());
//删除团队信息表
service.deleteTeamInformation(userAccount.getId());
}
boolean delState = service.removeByIds(ids);
return delState ? R.ok() : R.error("删除失败");
}
}

@ -0,0 +1,77 @@
package com.huoran.nakadai.controller;
import com.huoran.api.UserClient;
import com.huoran.common.response.R;
import com.huoran.common.utils.TokenUtils;
import com.huoran.nakadai.entity.SupplierClassificationConfig;
import com.huoran.nakadai.service.SupplierClassificationConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* @描述供应商分类配置表控制类
* @作者: Rong
* @日期: 2023-12-27
*/
@RestController
@RequestMapping("/supplierClassificationConfig")
@Api(value = "供应商分类配置表:SupplierClassificationConfigController", tags = "供应商分类配置表")
public class SupplierClassificationConfigController {
@Autowired
public SupplierClassificationConfigService service;
@Autowired
private UserClient userClient;
/*@PostMapping("/listByEntity")
@ApiOperation(value = "分页查询", response = SupplierClassificationConfig.class)
public R listByEntity(@RequestBody SupplierClassificationConfig supplierClassificationConfig) {
return null;
}
*/
@PostMapping("/findById")
@ApiOperation(value = "查询详情", response = SupplierClassificationConfig.class)
public R findById(@ApiParam(name = "id", value = "主键", required = true) @RequestParam Integer id) {
SupplierClassificationConfig supplierClassificationConfig = service.getById(id);
return R.ok().put("data", supplierClassificationConfig);
}
@PostMapping("/save")
@ApiOperation(value = "新增分类", response = SupplierClassificationConfig.class)
public R save(@RequestBody @ApiParam(name = "供应商分类配置表对象", value = "传入json格式", required = true) SupplierClassificationConfig supplierClassificationConfig, HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
supplierClassificationConfig.setAccountId(Integer.valueOf(accountId));
boolean addState = service.save(supplierClassificationConfig);
return addState ? R.ok() : R.error("新增失败");
}
@PostMapping("/update")
@ApiOperation(value = "修改", response = SupplierClassificationConfig.class)
public R update(@RequestBody @ApiParam(name = "供应商分类配置表对象", value = "传入json格式", required = true) SupplierClassificationConfig supplierClassificationConfig, HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
Integer schoolId = userClient.getSchoolIdByAccountId(accountId);
supplierClassificationConfig.setAccountId(Integer.valueOf(accountId));
boolean updateState = service.updateById(supplierClassificationConfig);
return updateState ? R.ok() : R.error("编辑失败");
}
@PostMapping("/batchDeletion")
@ApiOperation(value = "批量删除", response = SupplierClassificationConfig.class)
public R batchDeletion(@ApiParam(name = "ids", value = "主键", required = true) @RequestBody List<Integer> ids) {
boolean delState = service.removeByIds(ids);
return delState ? R.ok() : R.error("删除失败");
}
}

@ -0,0 +1,106 @@
package com.huoran.nakadai.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.huoran.api.UserClient;
import com.huoran.common.response.R;
import com.huoran.common.utils.TokenUtils;
import com.huoran.nakadai.entity.SupplierClassification;
import com.huoran.nakadai.entity.req.SupplierClassificationReq;
import com.huoran.nakadai.service.SupplierClassificationService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
/**
* @描述供应商分类信息控制类
* @作者: Rong
* @日期: 2023-12-27
*/
@RestController
@RequestMapping("/supplierClassification")
@Api(value = "供应商分类信息:SupplierClassificationController", tags = "供应商分类信息")
public class SupplierClassificationController {
@Autowired
public SupplierClassificationService service;
@Autowired
private UserClient userClient;
@PostMapping("/treeStructureList")
@ApiOperation(value = "树结构列表", response = SupplierClassification.class)
public R treeStructureList(@RequestBody SupplierClassificationReq supplierClassification) {
/*QueryWrapper<SupplierClassification> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("parent_id", supplierClassification.getParentId());*/
List<SupplierClassification> list = service.list(null);
return R.ok().put("list", buildTree(list));
}
public List<SupplierClassification> buildTree(List<SupplierClassification> list) {
List<SupplierClassification> treeList = new ArrayList<SupplierClassification>();
List<SupplierClassification> children;
for (SupplierClassification address : list) {
if (address.getParentId() == 0) {
treeList.add(address);
}
children = new ArrayList<SupplierClassification>();
for (SupplierClassification node : list) {
if (node.getParentId() == address.getId()) {
children.add(node);
}
}
address.setChildren(children);
}
return treeList;
}
@PostMapping("/findById")
@ApiOperation(value = "查询详情", response = SupplierClassification.class)
public R findById(@ApiParam(name = "id", value = "主键", required = true) @RequestParam Integer id) {
SupplierClassification supplierClassification = service.getById(id);
return R.ok().put("data", supplierClassification);
}
@PostMapping("/save")
@ApiOperation(value = "新增", response = SupplierClassification.class)
public R save(@RequestBody @ApiParam(name = "供应商分类信息对象", value = "传入json格式", required = true) SupplierClassification supplierClassification, HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
Integer schoolId = userClient.getSchoolIdByAccountId(accountId);
supplierClassification.setAccountId(Integer.valueOf(accountId));
boolean addState = service.save(supplierClassification);
return addState ? R.ok() : R.error("新增失败");
}
@PostMapping("/update")
@ApiOperation(value = "修改", response = SupplierClassification.class)
public R update(@RequestBody @ApiParam(name = "供应商分类信息对象", value = "传入json格式", required = true) SupplierClassification supplierClassification, HttpServletRequest request) {
String accountId = TokenUtils.getIdByJwtToken(request);
Integer schoolId = userClient.getSchoolIdByAccountId(accountId);
supplierClassification.setAccountId(Integer.valueOf(accountId));
boolean updateState = service.updateById(supplierClassification);
return updateState ? R.ok() : R.error("编辑失败");
}
@PostMapping("/batchDeletion")
@ApiOperation(value = "批量删除", response = SupplierClassification.class)
public R batchDeletion(@ApiParam(name = "ids", value = "主键", required = true) @RequestBody List<Integer> ids) {
boolean delState = service.removeByIds(ids);
return delState ? R.ok() : R.error("删除失败");
}
}

@ -0,0 +1,132 @@
package com.huoran.nakadai.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 企业认证审核
* </p>
*
* @author chen
* @since 2023-12-18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("hr_enterprise_certification")
@ApiModel(value = "EnterpriseCertification对象", description = "企业认证审核")
public class EnterpriseCertification implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "申请认证人账号id")
private Integer accountId;
@ApiModelProperty(value = "企业名称")
private String companyName;
@ApiModelProperty(value = "统一社会信用代码")
private String creditCode;
@ApiModelProperty(value = "法人")
private String legalPerson;
@ApiModelProperty(value = "公司类型")
private String type;
@ApiModelProperty(value = "公司注册日期")
private String establishDate;
@ApiModelProperty(value = "公司营业期限终止日期")
private String validPeriod;
@ApiModelProperty(value = "公司地址")
private String address;
@ApiModelProperty(value = "注册资本")
private String capital;
@ApiModelProperty(value = "经营范围")
private String business;
@ApiModelProperty(value = "营业执照照片")
private String businessLicensePicture;
@ApiModelProperty(value = "办学许可证")
private String licenseForRunningSchool;
@ApiModelProperty(value = "提交时间")
private Date submitTime;
@ApiModelProperty(value = "审核状态(0默认未提交 1.待审核,2.已通过,3.已驳回)")
private Integer auditStatus;
@ApiModelProperty(value = "来源区分(5:幼儿园,6:供应商)")
private String platformSource;
@ApiModelProperty(value = "备注")
private String remark;
@ApiModelProperty(value = "账号")
@TableField(exist = false)
private String account;
@ApiModelProperty(value = "申请人")
@TableField(exist = false)
private String proposer;
@ApiModelProperty(value = "联系方式")
@TableField(exist = false)
private String contactInformation;
@ApiModelProperty(value = "省")
@TableField(exist = false)
private String province;
@ApiModelProperty(value = "市")
@TableField(exist = false)
private String city;
@ApiModelProperty(value = "团队id")
@TableField(exist = false)
private Integer teamId;
@ApiModelProperty(value = "logo地址")
@TableField(exist = false)
private String logoUrl;
@ApiModelProperty(value = "组织创建时间")
@TableField(exist = false)
private String organizationCreationTime;
@ApiModelProperty(value = "简介")
@TableField(exist = false)
private String briefIntroduction;
@ApiModelProperty(value = "认证状态(0默认未认证 1.认证中2.已认证)")
private Integer authenticationStatus;
@ApiModelProperty(value = "微信唯一标识")
private String openId;
}

@ -0,0 +1,70 @@
package com.huoran.nakadai.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
* 供应商分类信息
* </p>
*
* @author chen
* @since 2023-12-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "SupplierSupplierClassification对象", description = "供应商分类信息")
public class SupplierClassification implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "分类主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "分类名称")
private String classificationName;
@ApiModelProperty(value = "父id")
private Integer parentId;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "创建人Id")
private Integer accountId;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "是否删除(0未删除 1已删除 默认0)")
private Integer isDel;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "创建时间")
private Date createTime;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "子分类集合")
@TableField(exist = false)
private List<SupplierClassification> children;
}

@ -0,0 +1,38 @@
package com.huoran.nakadai.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 供应商分类配置表
* </p>
*
* @author chen
* @since 2023-12-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="SupplierClassificationConfig对象", description="供应商分类配置表")
public class SupplierClassificationConfig implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "分类id")
private Integer classificationId;
@ApiModelProperty(value = "账号id")
private Integer accountId;
}

@ -0,0 +1,89 @@
package com.huoran.nakadai.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 用户实名认证信息记录
* </p>
*
* @author chen
* @since 2023-12-14
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("hr_user_authentication_information")
@ApiModel(value="UserAuthenticationInformation对象", description="用户实名认证信息记录")
public class UserAuthenticationInformation implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "账号id")
private Integer accountId;
@ApiModelProperty(value = "姓名")
private String realName;
@ApiModelProperty(value = "身份证号码")
private String idCardNo;
@ApiModelProperty(value = "生日")
private String birthday;
/*@ApiModelProperty(value = "年龄")
private Integer age;*/
@ApiModelProperty(value = "性别")
private String sex;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县")
private String county;
@ApiModelProperty(value = "地址信息")
private String address;
@ApiModelProperty(value = "民族")
private String nationality;
@ApiModelProperty(value = "身份证有效期起始时间")
private String startDate;
@ApiModelProperty(value = "身份证有效期结束时间")
private String endDate;
@ApiModelProperty(value = "签发机关")
private String issue;
@ApiModelProperty(value = "身份证正面图片地址")
private String frontOfIdCard;
@ApiModelProperty(value = "身份证反面图片地址")
private String reverseOfIdCard;
@ApiModelProperty(value = "实名认证的时间")
private Date realNameAuthenticationTime;
@ApiModelProperty(value = "微信唯一标识")
private String openId;
}

@ -0,0 +1,55 @@
package com.huoran.nakadai.entity.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 企业认证审核
* </p>
*
* @author chen
* @since 2023-12-18
*/
@Data
@ApiModel(value = "EnterpriseCertification对象", description = "企业认证审核列表请求参数")
public class EnterpriseCertificationLIstReq {
@ApiModelProperty(value = "关键字")
private String keyWord;
@ApiModelProperty(value = "开始提交时间")
private String startCommitTime;
@ApiModelProperty(value = "结束提交时间")
private String endCommitTime;
@ApiModelProperty(value = "审核状态(0默认待审核,1通过,2驳回)")
private Integer auditStatus;
@ApiModelProperty(value = "认证状态(0默认未认证 1.认证中2.已认证)")
private Integer authenticationStatus;
@ApiModelProperty(value = "来源区分(5:幼儿园,6:供应商)")
private String platformSource;
@ApiModelProperty(value = "账号")
private String account;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "当前页数", name = "pageNum", example = "1", required = true)
private Integer pageNum;
@ApiModelProperty(value = "当前页需要显示的数量", name = "pageSize", example = "10", required = true)
private Integer pageSize;
}

@ -0,0 +1,60 @@
package com.huoran.nakadai.entity.req;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
@ApiModel(value = "企业认证请求参数")
public class EnterpriseCertificationReq {
@ApiModelProperty(value = "公司的名字")
private String comapnyName;
@ApiModelProperty(value = "法人")
private String legalPerson;
@ApiModelProperty(value = "统一社会信用代码")
private String creditCode;
@ApiModelProperty(value = "公司类型")
private String type;
@ApiModelProperty(value = "公司注册日期(例:证件上为2014年04月16日,算法返回20140416")
private String establishDate;
@ApiModelProperty(value = "公司营业期限终止日期(例:证件上为2014年04月16日至2034年04月15日,算法返回20340415)")
private String validPeriod;
@ApiModelProperty(value = "公司地址,没有识别出来时返回FailInRecognition")
private String address;
@ApiModelProperty(value = "注册资本,没有识别出来时返回FailInRecognition")
private String capital;
@ApiModelProperty(value = "经营范围,没有识别出来时返回FailInRecognition")
private String business;
@ApiModelProperty(value = "营业执照图片")
private String businessLicensePicture;
@ApiModelProperty(value = "办学许可证件")
private String licenseForRunningSchool;
@ApiModelProperty(value = "申请人")
private String proposer;
@ApiModelProperty(value = "联系方式")
private String contactInformation;
@ApiModelProperty(value = "提交时间")
private Date submitTime;
}

@ -0,0 +1,40 @@
package com.huoran.nakadai.entity.req;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
* 供应商分类信息
* </p>
*
* @author chen
* @since 2023-12-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "SupplierSupplierClassification对象", description = "供应商分类信息")
public class SupplierClassificationReq {
@ApiModelProperty(value = "分类主键")
private Integer id;
@ApiModelProperty(value = "分类名称")
private String classificationName;
@ApiModelProperty(value = "父id")
private Integer parentId;
}

@ -0,0 +1,64 @@
package com.huoran.nakadai.entity.res;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "营业执照OCR文件识别")
public class BusinessLicenseOCRResp {
/*@ApiModelProperty(value = "配置字符串信息")
private String config_str;*/
@ApiModelProperty(value = "#统一社会信用代码或注册号,没有识别出来时返回FailInRecognition")
private String reg_num;
@ApiModelProperty(value = "公司名称,没有识别出来时返回FailInRecognition")
private String name;
@ApiModelProperty(value = "公司类型,没有识别出来时返回FailInRecognition")
private String type;
@ApiModelProperty(value = "公司法人,没有识别出来时返回FailInRecognition")
private String person;
@ApiModelProperty(value = "公司注册日期(例:证件上为2014年04月16日,算法返回20140416")
private String establish_date;
@ApiModelProperty(value = "公司营业期限终止日期(例:证件上为2014年04月16日至2034年04月15日,算法返回20340415)")
private String valid_period;
@ApiModelProperty(value = "公司地址,没有识别出来时返回FailInRecognition")
private String address;
@ApiModelProperty(value = "注册资本,没有识别出来时返回FailInRecognition")
private String capital;
@ApiModelProperty(value = "经营范围,没有识别出来时返回FailInRecognition")
private String business;
/* @ApiModelProperty(value = "国徽位置[top,left,height,width],没有识别出来时返回FailInDetection")
private String emblem;*/
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "识别结果,true表示成功,false表示失败")
private Boolean success;
}

@ -0,0 +1,40 @@
package com.huoran.nakadai.entity.res;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "营业执照OCR文件识别")
public class CreditCodeResp {
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "识别结果,true表示成功,false表示失败")
private Boolean status;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "正确返回返回信息")
private String msg;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "查询结果")
private String result;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "失败返回信息")
private String reason;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "返回码")
private Integer code;
}

@ -0,0 +1,70 @@
package com.huoran.nakadai.entity.res;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "身份证OCR文件识别")
public class IdCardOCRResp {
@ApiModelProperty(value = "地址信息")
private String address;
@ApiModelProperty(value = "用户姓名")
private String name;
@ApiModelProperty(value = "身份证号码")
private String num;
@ApiModelProperty(value = "民族")
private String nationality;
@ApiModelProperty(value = "配置信息,同输入configure")
private String config_str;
@ApiModelProperty(value = "返回信息")
private String respMessage;
@ApiModelProperty(value = "返回错误码")
private String respCode;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/区")
private String county;
@ApiModelProperty(value = "生日")
private String birth;
@ApiModelProperty(value = "性别")
private String sex;
@ApiModelProperty(value = "年龄")
private String age;
@ApiModelProperty(value = "是否是复印件")
private String is_fake;
@ApiModelProperty(value = "有效期起始时间")
private String start_date;
@ApiModelProperty(value = "有效期结束时间")
private String end_date;
@ApiModelProperty(value = "签发机关")
private String issue;
//使用@JsonIgnore注解,忽略此属性,前端不会拿到该属性
@JsonIgnore
@ApiModelProperty(value = "识别结果,true表示成功,false表示失败")
private Boolean success;
}

@ -0,0 +1,42 @@
package com.huoran.nakadai.entity.res;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "实名认证返回的信息")
public class RealNameAuthenticationResp {
@ApiModelProperty(value = "用户姓名")
private String name;
@ApiModelProperty(value = "身份证号码")
private String idNo;
@ApiModelProperty(value = "返回信息")
private String respMessage;
@ApiModelProperty(value = "返回错误码")
private String respCode;
@ApiModelProperty(value = "省")
private String province;
@ApiModelProperty(value = "市")
private String city;
@ApiModelProperty(value = "县/区")
private String county;
@ApiModelProperty(value = "生日")
private String birthday;
@ApiModelProperty(value = "性别")
private String sex;
@ApiModelProperty(value = "年龄")
private String age;
}

@ -0,0 +1,44 @@
package com.huoran.nakadai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.huoran.nakadai.entity.EnterpriseCertification;
import com.huoran.nakadai.entity.UserAccount;
import com.huoran.nakadai.entity.UserInfo;
import com.huoran.nakadai.entity.req.EnterpriseCertificationLIstReq;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 企业认证审核 Mapper 接口
* </p>
*
* @author chen
* @since 2023-12-18
*/
@Mapper
public interface EnterpriseCertificationMapper extends BaseMapper<EnterpriseCertification> {
IPage<EnterpriseCertification> selectEnterpriseCertificationList(IPage<EnterpriseCertification> page, @Param("req")EnterpriseCertificationLIstReq req);
EnterpriseCertification enterpriseCertificationDetails(@Param("id")Integer id);
Integer deleteTeamInformation(@Param("accountId")Integer accountId);
UserAccount queryAccountInformation(@Param("openId")String openId, @Param("platformId")Integer platformId);
//逻辑删除用户信息
Integer updateUserInformation(@Param("userId")Integer userId);
//逻辑删除账户信息
Integer updateAccountInformation(@Param("accountId")Integer accountId);
Integer updateAccountInfo(@Param("userAccount")UserAccount userAccount);
Integer updateUserInfo(@Param("userInfo") UserInfo userInfo);
}

@ -0,0 +1,16 @@
package com.huoran.nakadai.mapper;
import com.huoran.nakadai.entity.SupplierClassificationConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 供应商分类配置表 Mapper 接口
* </p>
*
* @author chen
* @since 2023-12-27
*/
public interface SupplierClassificationConfigMapper extends BaseMapper<SupplierClassificationConfig> {
}

@ -0,0 +1,16 @@
package com.huoran.nakadai.mapper;
import com.huoran.nakadai.entity.SupplierClassification;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 供应商分类信息 Mapper 接口
* </p>
*
* @author chen
* @since 2023-12-27
*/
public interface SupplierClassificationMapper extends BaseMapper<SupplierClassification> {
}

@ -0,0 +1,18 @@
package com.huoran.nakadai.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.huoran.nakadai.entity.UserAuthenticationInformation;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 用户实名认证信息记录 Mapper 接口
* </p>
*
* @author chen
* @since 2023-12-14
*/
@Mapper
public interface UserAuthenticationInformationMapper extends BaseMapper<UserAuthenticationInformation> {
}

@ -0,0 +1,159 @@
<?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.huoran.nakadai.mapper.EnterpriseCertificationMapper">
<delete id="deleteTeamInformation">
DELETE
a,
t,
c
FROM
k_platform_team_account a
INNER JOIN k_platform_team t ON t.manage_id = a.manage_id
INNER JOIN k_platform_team_classification c ON c.id = t.classification_id
WHERE
a.account_id = #{accountId}
</delete>
<select id="selectEnterpriseCertificationList"
resultType="com.huoran.nakadai.entity.EnterpriseCertification">
SELECT
t.*
FROM
(
SELECT
IFNULL(
info.real_name,
(
SELECT
u.user_name
FROM
hr_user_account ua
INNER JOIN hr_user_info u ON u.user_id = ua.user_id
AND u.is_del = 0
WHERE
ua.is_del = 0
AND ua.app_open_id = c.open_id
AND ua.platform_id = 7
)
) AS proposer,
a.phone AS contactInformation,
a.account,
c.*,
IFNULL( cla.province, '未完善' ) AS province,
IFNULL( cla.city, '未完善' ) AS city,
cla.id AS teamId,
logo_url,
brief_introduction,
cla.create_time as organizationCreationTime
FROM
hr_enterprise_certification c
INNER JOIN hr_user_account a ON a.id = c.account_id
INNER JOIN hr_user_info u ON u.user_id = a.user_id
LEFT JOIN hr_user_authentication_information info ON info.account_id = a.id
LEFT JOIN k_platform_team_account ta ON ta.account_id = a.id
LEFT JOIN k_platform_team t ON ta.manage_id = t.manage_id
LEFT JOIN k_platform_team_classification cla ON cla.id = t.classification_id
AND is_team = 1
AND cla.is_del = 0
WHERE
a.is_del = 0
AND u.is_del = 0
) t
WHERE
t.platform_source = #{req.platformSource}
<if test=" req.auditStatus!= null and req.auditStatus!= '' or req.auditStatus ==0">
and t.audit_status =#{req.auditStatus,jdbcType=INTEGER}
</if>
<if test=" req.authenticationStatus!= null and req.authenticationStatus!= '' or req.authenticationStatus ==0">
and t.authentication_status =#{req.authenticationStatus,jdbcType=INTEGER}
</if>
<if test="req.startCommitTime != '' and req.startCommitTime!= null
and req.endCommitTime != '' and req.endCommitTime!= null">
AND date_format( t.submit_time, '%Y-%m-%d' )
BETWEEN #{req.startCommitTime} AND #{req.endCommitTime}
</if>
<if test="req.keyWord!=null and req.keyWord!='' ">
and (
proposer like concat('%' #{req.keyWord} '%')
or account like concat('%' #{req.keyWord} '%')
or contactInformation like concat('%' #{req.keyWord} '%')
or company_name like concat('%' #{req.keyWord} '%'))
</if>
<if test="req.province!=null and req.province!='' ">
and t.province=#{req.province,jdbcType=VARCHAR}
</if>
<if test="req.city!=null and req.city!='' ">
and t.city=#{req.province,jdbcType=VARCHAR}
</if>
</select>
<select id="enterpriseCertificationDetails" resultType="com.huoran.nakadai.entity.EnterpriseCertification">
SELECT
t.*
FROM
(
SELECT
IFNULL( info.real_name, u.user_name ) AS proposer,
a.phone AS contactInformation,
a.account,
c.*,
IFNULL( cla.province, '未完善' ) AS province,
IFNULL( cla.city, '未完善' ) AS city,
cla.id AS teamId,
logo_url,
brief_introduction
FROM
hr_enterprise_certification c
INNER JOIN hr_user_account a ON a.id = c.account_id
INNER JOIN hr_user_info u ON u.user_id = a.user_id
LEFT JOIN hr_user_authentication_information info ON info.account_id = a.id
LEFT JOIN k_platform_team_account ta ON ta.account_id = a.id
LEFT JOIN k_platform_team t ON ta.manage_id = t.manage_id
LEFT JOIN k_platform_team_classification cla ON cla.id = t.classification_id
AND is_team = 1
AND cla.is_del = 0
WHERE
a.is_del = 0
AND u.is_del = 0
) t
WHERE
t.id = #{id}
</select>
<select id="queryAccountInformation" resultType="com.huoran.nakadai.entity.UserAccount">
SELECT
*
FROM
hr_user_account
WHERE
is_del = 0
AND app_open_id = #{openId}
AND platform_id = #{platformId}
</select>
<update id="updateUserInformation">
update hr_user_info set is_del = 1 WHERE user_id = #{userId}
</update>
<update id="updateAccountInformation">
update hr_user_account set is_del = 1 WHERE id =#{accountId}
</update>
<update id="updateAccountInfo">
update hr_user_account set account = #{userAccount.account} WHERE is_del = 0 and id = #{userAccount.id}
</update>
<update id="updateUserInfo">
update hr_user_info set user_name = #{userInfo.userName} WHERE is_del = 0 and user_id = #{userInfo.userId}
</update>
</mapper>

@ -0,0 +1,5 @@
<?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.huoran.nakadai.mapper.SupplierClassificationConfigMapper">
</mapper>

@ -0,0 +1,5 @@
<?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.huoran.nakadai.mapper.SupplierClassificationMapper">
</mapper>

@ -0,0 +1,4 @@
<?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.huoran.nakadai.mapper.UserAuthenticationInformationMapper">
</mapper>

@ -0,0 +1,40 @@
package com.huoran.nakadai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huoran.common.response.R;
import com.huoran.nakadai.entity.EnterpriseCertification;
import com.huoran.nakadai.entity.UserAccount;
import com.huoran.nakadai.entity.UserInfo;
import com.huoran.nakadai.entity.req.EnterpriseCertificationLIstReq;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 企业认证审核 服务类
* </p>
*
* @author chen
* @since 2023-12-18
*/
public interface EnterpriseCertificationService extends IService<EnterpriseCertification> {
EnterpriseCertification checkWhetherItExists(String comapnyName, Integer id,String opnenId);
R selectEnterpriseCertificationList(EnterpriseCertificationLIstReq req);
R enterpriseCertificationDetails(Integer id);
boolean deleteTeamInformation(Integer accountId);
UserAccount queryAccountInformation(String openId,Integer platformId);
//逻辑删除用户信息
boolean deleteUserInformation(Integer userId);
//逻辑删除账户信息
boolean deleteAccountInformation(Integer accountId);
boolean updateAccountInfo(UserAccount userAccount);
boolean updateUserInfo( UserInfo userInfo);
}

@ -0,0 +1,16 @@
package com.huoran.nakadai.service;
import com.huoran.nakadai.entity.SupplierClassificationConfig;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 供应商分类配置表 服务类
* </p>
*
* @author chen
* @since 2023-12-27
*/
public interface SupplierClassificationConfigService extends IService<SupplierClassificationConfig> {
}

@ -0,0 +1,16 @@
package com.huoran.nakadai.service;
import com.huoran.nakadai.entity.SupplierClassification;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 供应商分类信息 服务类
* </p>
*
* @author chen
* @since 2023-12-27
*/
public interface SupplierClassificationService extends IService<SupplierClassification> {
}

@ -0,0 +1,15 @@
package com.huoran.nakadai.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huoran.nakadai.entity.UserAuthenticationInformation;
/**
* <p>
* 用户实名认证信息记录 服务类
* </p>
*
* @author chen
* @since 2023-12-14
*/
public interface UserAuthenticationInformationService extends IService<UserAuthenticationInformation> {
}

@ -0,0 +1,83 @@
package com.huoran.nakadai.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huoran.common.response.R;
import com.huoran.nakadai.entity.EnterpriseCertification;
import com.huoran.nakadai.entity.UserAccount;
import com.huoran.nakadai.entity.UserInfo;
import com.huoran.nakadai.entity.req.EnterpriseCertificationLIstReq;
import com.huoran.nakadai.mapper.EnterpriseCertificationMapper;
import com.huoran.nakadai.service.EnterpriseCertificationService;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
/**
* <p>
* 企业认证审核 服务实现类
* </p>
*
* @author chen
* @since 2023-12-18
*/
@Service
public class EnterpriseCertificationServiceImpl extends ServiceImpl<EnterpriseCertificationMapper, EnterpriseCertification> implements EnterpriseCertificationService {
@Override
public EnterpriseCertification checkWhetherItExists(String company_name, Integer id, String opnenId) {
QueryWrapper<EnterpriseCertification> wrapper = new QueryWrapper<>();
wrapper.eq("company_name", company_name);
if (!ObjectUtils.isEmpty(id)) {
wrapper.last(" and id <> " + id);
}
return getOne(wrapper);
}
@Override
public R selectEnterpriseCertificationList(EnterpriseCertificationLIstReq req) {
Page<EnterpriseCertification> page = new Page<EnterpriseCertification>(req.getPageNum(), req.getPageSize());
IPage<EnterpriseCertification> pageList = baseMapper.selectEnterpriseCertificationList(page, req);
return R.ok().put("data", pageList);
}
@Override
public R enterpriseCertificationDetails(Integer id) {
return R.ok().put("data", baseMapper.enterpriseCertificationDetails(id));
}
@Override
public boolean deleteTeamInformation(Integer accountId) {
return baseMapper.deleteTeamInformation(accountId) > 0;
}
@Override
public UserAccount queryAccountInformation(String openId, Integer platformId) {
return baseMapper.queryAccountInformation(openId, platformId);
}
@Override
public boolean deleteUserInformation(Integer userId) {
return baseMapper.updateUserInformation(userId) > 0;
}
@Override
public boolean deleteAccountInformation(Integer accountId) {
return baseMapper.deleteTeamInformation(accountId) > 0;
}
@Override
public boolean updateAccountInfo(UserAccount userAccount) {
return baseMapper.updateAccountInfo(userAccount)>0;
}
@Override
public boolean updateUserInfo(UserInfo userInfo) {
return baseMapper.updateUserInfo(userInfo)>0;
}
}

@ -0,0 +1,20 @@
package com.huoran.nakadai.service.impl;
import com.huoran.nakadai.entity.SupplierClassificationConfig;
import com.huoran.nakadai.mapper.SupplierClassificationConfigMapper;
import com.huoran.nakadai.service.SupplierClassificationConfigService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 供应商分类配置表 服务实现类
* </p>
*
* @author chen
* @since 2023-12-27
*/
@Service
public class SupplierClassificationConfigServiceImpl extends ServiceImpl<SupplierClassificationConfigMapper, SupplierClassificationConfig> implements SupplierClassificationConfigService {
}

@ -0,0 +1,20 @@
package com.huoran.nakadai.service.impl;
import com.huoran.nakadai.entity.SupplierClassification;
import com.huoran.nakadai.mapper.SupplierClassificationMapper;
import com.huoran.nakadai.service.SupplierClassificationService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 供应商分类信息 服务实现类
* </p>
*
* @author chen
* @since 2023-12-27
*/
@Service
public class SupplierClassificationServiceImpl extends ServiceImpl<SupplierClassificationMapper, SupplierClassification> implements SupplierClassificationService {
}

@ -0,0 +1,20 @@
package com.huoran.nakadai.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huoran.nakadai.entity.UserAuthenticationInformation;
import com.huoran.nakadai.mapper.UserAuthenticationInformationMapper;
import com.huoran.nakadai.service.UserAuthenticationInformationService;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户实名认证信息记录 服务实现类
* </p>
*
* @author chen
* @since 2023-12-14
*/
@Service
public class UserAuthenticationInformationServiceImpl extends ServiceImpl<UserAuthenticationInformationMapper, UserAuthenticationInformation> implements UserAuthenticationInformationService {
}

@ -0,0 +1,148 @@
package com.huoran.nakadai.utils.ali;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.client.identify.Base64;
import com.huoran.nakadai.config.AliRealNameAuthenticationConfig;
import okhttp3.*;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class FaceRecognitionAidUtil {
public static String postData(String appCode, String url, String name, String idNo) throws IOException {
String result = "";
RequestBody formBody = new FormBody.Builder().add("name", name).add("idNo", idNo).build();
Request request = new Request.Builder().url(url).addHeader("Authorization", "APPCODE " + appCode).post(formBody).build();
Call call = new OkHttpClient().newCall(request);
Response response = null;
try {
response = call.execute();
} catch (IOException e) {
System.out.println("execute failed, message:" + e.getMessage());
}
assert response != null;
if (!response.isSuccessful()) {
// 状态码为403时一般是套餐包用尽,需续购;注意:续购不会改变秘钥(appCode),仅增加次数
// 续购链接:https://market.aliyun.com/products/57000002/cmapi025518.html
System.out.println("request failed----" + "返回状态码" + response.code() + ",message:" + response.message());
}
result = response.body().string(); //此处不可以使用toString()方法,该方法已过期
return result;
}
public static JSONObject checkIdcard(Object idcard, Object name) {
JSONObject result = new JSONObject();
Map<String, String> querys = new HashMap<>();
querys.put("idCard", idcard.toString());
querys.put("name", name.toString());
try {
HttpResponse response = HttpUtils.doPost(AliRealNameAuthenticationConfig.ALI_IDCHECK_HOST, AliRealNameAuthenticationConfig.ALI_IDCHECK_PATH, "POST", AliRealNameAuthenticationConfig.buildHeaders(), querys, new HashMap<>() // No need to pass an empty map for bodys
);
int stat = response.getStatusLine().getStatusCode();
if (stat == 200) {
String res = EntityUtils.toString(response.getEntity());
result = JSON.parseObject(res);
} else {
result.put("error", "Http code: " + stat);
result.put("message", EntityUtils.toString(response.getEntity()));
}
} catch (Exception e) {
result.put("error", "实名认证检测失败");
result.put("message", e.getMessage());
// 记录错误而不仅仅打印堆栈跟踪
e.printStackTrace();
}
System.out.println(result);
return result;
}
public static String img_base64(String path) {
/**
* 对path进行判断如果是本地文件就二进制读取并base64编码如果是url,则返回
*/
String imgBase64="";
if (path.startsWith("http")){
imgBase64 = path;
}else {
try {
File file = new File(path);
byte[] content = new byte[(int) file.length()];
FileInputStream finputstream = new FileInputStream(file);
finputstream.read(content);
finputstream.close();
imgBase64 = new String(Base64.encodeBase64(content));
} catch (IOException e) {
e.printStackTrace();
return imgBase64;
}
}
return imgBase64;
}
public static String IdCardOCRRecognition(String imgFile,String side){
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105
headers.put("Authorization", "APPCODE " + AliRealNameAuthenticationConfig.ALI_API_APPCODE);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
// 对图像进行base64编码
String imgBase64 = FaceRecognitionAidUtil.img_base64(imgFile);
//configure配置
JSONObject configObj = new JSONObject();
// configObj.put("side", "face");
configObj.put("side", side);
String config_str = configObj.toString();
// 拼装请求body的json字符串
JSONObject requestObj = new JSONObject();
requestObj.put("image", imgBase64);
if (configObj.size() > 0) {
requestObj.put("configure", config_str);
}
String bodys = requestObj.toString();
try {
HttpResponse response = HttpUtils.doPost(AliRealNameAuthenticationConfig.ALI_API_HOST, AliRealNameAuthenticationConfig.ALI_API_PATH, method, headers, querys, bodys);
int stat = response.getStatusLine().getStatusCode();
if (stat != 200) {
System.out.println("Http code: " + stat);
System.out.println("http header error msg: " + response.getFirstHeader("X-Ca-Error-Message"));
System.out.println("Http body error msg:" + EntityUtils.toString(response.getEntity()));
}
String res = EntityUtils.toString(response.getEntity());
/* JSONObject res_obj = JSON.parseObject(res);
System.out.println(res_obj.toJSONString());*/
return res;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}

@ -0,0 +1,312 @@
package com.huoran.nakadai.utils.ali;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@SuppressWarnings("deprecation")
public class HttpUtils {
/**
* get
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doGet(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpGet request = new HttpGet(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
/**
* post form
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param bodys
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
Map<String, String> bodys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (bodys != null) {
List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
for (String key : bodys.keySet()) {
nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));
}
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");
formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
request.setEntity(formEntity);
}
return httpClient.execute(request);
}
/**
* Post String
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Post stream
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPost(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPost request = new HttpPost(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Put String
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
String body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (StringUtils.isNotBlank(body)) {
request.setEntity(new StringEntity(body, "utf-8"));
}
return httpClient.execute(request);
}
/**
* Put stream
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @param body
* @return
* @throws Exception
*/
public static HttpResponse doPut(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys,
byte[] body)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpPut request = new HttpPut(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
if (body != null) {
request.setEntity(new ByteArrayEntity(body));
}
return httpClient.execute(request);
}
/**
* Delete
*
* @param host
* @param path
* @param method
* @param headers
* @param querys
* @return
* @throws Exception
*/
public static HttpResponse doDelete(String host, String path, String method,
Map<String, String> headers,
Map<String, String> querys)
throws Exception {
HttpClient httpClient = wrapClient(host);
HttpDelete request = new HttpDelete(buildUrl(host, path, querys));
for (Map.Entry<String, String> e : headers.entrySet()) {
request.addHeader(e.getKey(), e.getValue());
}
return httpClient.execute(request);
}
private static String buildUrl(String host, String path, Map<String, String> querys) throws UnsupportedEncodingException {
StringBuilder sbUrl = new StringBuilder();
sbUrl.append(host);
if (!StringUtils.isBlank(path)) {
sbUrl.append(path);
}
if (null != querys) {
StringBuilder sbQuery = new StringBuilder();
for (Map.Entry<String, String> query : querys.entrySet()) {
if (0 < sbQuery.length()) {
sbQuery.append("&");
}
if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) {
sbQuery.append(query.getValue());
}
if (!StringUtils.isBlank(query.getKey())) {
sbQuery.append(query.getKey());
if (!StringUtils.isBlank(query.getValue())) {
sbQuery.append("=");
sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8"));
}
}
}
if (0 < sbQuery.length()) {
sbUrl.append("?").append(sbQuery);
}
}
return sbUrl.toString();
}
private static HttpClient wrapClient(String host) {
HttpClient httpClient = new DefaultHttpClient();
if (host.startsWith("https://")) {
sslClient(httpClient);
}
return httpClient;
}
private static void sslClient(HttpClient httpClient) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] xcs, String str) {
}
public void checkServerTrusted(X509Certificate[] xcs, String str) {
}
};
ctx.init(null, new TrustManager[] { tm }, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
ClientConnectionManager ccm = httpClient.getConnectionManager();
SchemeRegistry registry = ccm.getSchemeRegistry();
registry.register(new Scheme("https", 443, ssf));
} catch (KeyManagementException ex) {
throw new RuntimeException(ex);
} catch (NoSuchAlgorithmException ex) {
throw new RuntimeException(ex);
}
}
}

@ -43,10 +43,10 @@ public class CodeGenerator {
// 3、数据源配置
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://139.9.47.170:3306/nakadai?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8");
dsc.setUrl("jdbc:mysql://121.37.12.51:3308/nakadai?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("HuoRan@2021");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
@ -63,7 +63,7 @@ public class CodeGenerator {
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("k_platform_team","k_platform_team_account","k_platform_team_classification");
strategy.setInclude("supplier_classification_config");
strategy.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略
strategy.setTablePrefix("k_"); //生成实体时去掉表前缀

@ -1,3 +1,4 @@
/*
package com.huoran.users.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -267,9 +268,11 @@ public class AliRealNameAuthenticationController {
@PostMapping("/organizationCertification")
public R organizationCertification(@RequestBody EnterpriseCertification enterpriseCertification, HttpServletRequest request) throws IOException {
*/
/*
String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*/
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*//*
enterpriseCertification.setSubmitTime(new Date());
String host = "https://sys.81api.com";
String path = "/verifyCompany/";
@ -336,11 +339,13 @@ public class AliRealNameAuthenticationController {
HttpResponse response = HttpUtils.doGet(host, path, method, headers, querys);
CreditCodeResp info = new Gson().fromJson(EntityUtils.toString(response.getEntity()), CreditCodeResp.class);
if (info.getStatus()) {
/*if (!ObjectUtils.isEmpty(enterpriseCertificationService.checkWhetherItExists(enterpriseCertification.getCompanyName(), null, enterpriseCertification.getOpenId()))) {
*/
/*if (!ObjectUtils.isEmpty(enterpriseCertificationService.checkWhetherItExists(enterpriseCertification.getCompanyName(), null, enterpriseCertification.getOpenId()))) {
errorMsg = "企业名称已存在";
(errorMsg);
}
enterpriseCertificationService.save(enterpriseCertification);*/
enterpriseCertificationService.save(enterpriseCertification);*//*
} else {
errorMsg = info.getReason();
@ -354,4 +359,4 @@ public class AliRealNameAuthenticationController {
}
}
}*/

@ -1,3 +1,4 @@
/*
package com.huoran.users.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
*/
/**
* <p>
* 企业认证审核 前端控制器
@ -28,7 +30,8 @@ import java.util.List;
*
* @author chen
* @since 2023-12-18
*/
*//*
@Api(value = "后台-企业实名认证相关", tags = "后台-企业实名认证相关")
@RestController
@ -46,12 +49,14 @@ public class EnterpriseCertificationController {
public IHrUserInfoService userInfoService;
/**
*/
/**
* 由前台申请认证后才有后台认证记录认证状态有 待审核已通过未驳回三种状态没有未提交这种状态
*
* @param req
* @return
*/
*//*
@PostMapping("/selectEnterpriseCertificationList")
@ApiOperation(value = "企业认证列表", response = EnterpriseCertification.class)
public R selectEnterpriseCertificationList(@RequestBody EnterpriseCertificationLIstReq req) {
@ -76,7 +81,9 @@ public class EnterpriseCertificationController {
@PostMapping("/enterpriseCertificationStatus")
@ApiOperation(value = "查询企业当前认证状态", response = EnterpriseCertification.class)
public R enterpriseCertificationStatus(@ApiParam(name = "openId", value = "微信openId", required = true) @RequestParam String openId) {
/*String accountId = TokenUtils.getIdByJwtToken(request);*/
*/
/*String accountId = TokenUtils.getIdByJwtToken(request);*//*
QueryWrapper<EnterpriseCertification> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("open_id", openId);
EnterpriseCertification enterpriseCertification = service.getOne(queryWrapper);
@ -100,8 +107,10 @@ public class EnterpriseCertificationController {
@PostMapping("/update")
@ApiOperation(value = "修改", response = EnterpriseCertification.class)
public R update(@RequestBody @ApiParam(name = "企业实名认证信息记录对象", value = "传入json格式", required = true) EnterpriseCertification enterpriseCertification, HttpServletRequest request) {
/* String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*/
*/
/* String accountId = TokenUtils.getIdByJwtToken(request);
enterpriseCertification.setAccountId(Integer.valueOf(accountId));*//*
boolean updateState = service.updateById(enterpriseCertification);
return updateState ? R.ok() : R.error("编辑失败");
}
@ -153,8 +162,7 @@ public class EnterpriseCertificationController {
//删除用户表
userInfoService.removeById(userAccount.getUserId());
//删除团队信息表
service.deleteTeamInformation(userAccount.getId());
}
boolean delState = service.removeByIds(ids);
@ -163,3 +171,4 @@ public class EnterpriseCertificationController {
}
*/

@ -109,6 +109,11 @@ public class EnterpriseCertification implements Serializable {
@TableField(exist = false)
private String logoUrl;
@ApiModelProperty(value = "组织创建时间")
@TableField(exist = false)
private String organizationCreationTime;
@ApiModelProperty(value = "简介")
@TableField(exist = false)

@ -44,7 +44,8 @@
IFNULL( cla.city, '未完善' ) AS city,
cla.id AS teamId,
logo_url,
brief_introduction
brief_introduction,
cla.create_time as organizationCreationTime
FROM
hr_enterprise_certification c
INNER JOIN hr_user_account a ON a.id = c.account_id

Loading…
Cancel
Save