diff --git a/nakadai/src/main/java/com/huoran/nakadai/config/AliRealNameAuthenticationConfig.java b/nakadai/src/main/java/com/huoran/nakadai/config/AliRealNameAuthenticationConfig.java new file mode 100644 index 0000000..1f1ec3d --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/config/AliRealNameAuthenticationConfig.java @@ -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 buildHeaders() { + Map 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; + } +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/controller/AliRealNameAuthenticationController.java b/nakadai/src/main/java/com/huoran/nakadai/controller/AliRealNameAuthenticationController.java new file mode 100644 index 0000000..5494c1b --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/controller/AliRealNameAuthenticationController.java @@ -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 openIds) { + + openIds.forEach(openId -> { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("open_id", openId); + service.remove(queryWrapper); + + + QueryWrapper 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 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 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 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 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 headers = new HashMap(); + //最后在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 querys = new HashMap(); + 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 headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " + "5a7f623d06724a4da5806c1fb0544e47"); + Map querys = new HashMap(); + querys.put("ComapnyName", enterpriseCertification.getCompanyName()); + querys.put("CreditCode", enterpriseCertification.getCreditCode()); + querys.put("LegalPersonName", enterpriseCertification.getLegalPerson()); + + String errorMsg = ""; + //查询认证id + QueryWrapper 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 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 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 headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " +"5a7f623d06724a4da5806c1fb0544e47"); + Map querys = new HashMap(); + 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 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 headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " + AliRealNameAuthenticationConfig.ALI_API_APPCODE); + Map querys = new HashMap(); + 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 = "系统错误"; + } + + + } +} \ No newline at end of file diff --git a/nakadai/src/main/java/com/huoran/nakadai/controller/EnterpriseCertificationController.java b/nakadai/src/main/java/com/huoran/nakadai/controller/EnterpriseCertificationController.java new file mode 100644 index 0000000..9bd39a8 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/controller/EnterpriseCertificationController.java @@ -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; + +/** + *

+ * 企业认证审核 前端控制器 + *

+ * + * @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 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 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 ids) { + + for (Integer id : ids) { + // + + EnterpriseCertification enterpriseCertification = service.getById(id); + + //删除企业认证后同步删除团队、用户、账户信息 + + + //删除账号表 + /*QueryWrapper 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("删除失败"); + } + +} + diff --git a/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationConfigController.java b/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationConfigController.java new file mode 100644 index 0000000..a35a7ee --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationConfigController.java @@ -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 ids) { + boolean delState = service.removeByIds(ids); + return delState ? R.ok() : R.error("删除失败"); + } +} + diff --git a/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationController.java b/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationController.java new file mode 100644 index 0000000..b1d622a --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/controller/SupplierClassificationController.java @@ -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 queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("parent_id", supplierClassification.getParentId());*/ + List list = service.list(null); + + + return R.ok().put("list", buildTree(list)); + } + + public List buildTree(List list) { + List treeList = new ArrayList(); + List children; + + for (SupplierClassification address : list) { + if (address.getParentId() == 0) { + treeList.add(address); + } + children = new ArrayList(); + 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 ids) { + boolean delState = service.removeByIds(ids); + return delState ? R.ok() : R.error("删除失败"); + } +} + diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/EnterpriseCertification.java b/nakadai/src/main/java/com/huoran/nakadai/entity/EnterpriseCertification.java new file mode 100644 index 0000000..b1731c3 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/EnterpriseCertification.java @@ -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; + +/** + *

+ * 企业认证审核 + *

+ * + * @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; +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassification.java b/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassification.java new file mode 100644 index 0000000..62d72e2 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassification.java @@ -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; + +/** + *

+ * 供应商分类信息 + *

+ * + * @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 children; + + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassificationConfig.java b/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassificationConfig.java new file mode 100644 index 0000000..dc80357 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/SupplierClassificationConfig.java @@ -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; + +/** + *

+ * 供应商分类配置表 + *

+ * + * @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; + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/UserAuthenticationInformation.java b/nakadai/src/main/java/com/huoran/nakadai/entity/UserAuthenticationInformation.java new file mode 100644 index 0000000..32fd2e3 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/UserAuthenticationInformation.java @@ -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; + +/** + *

+ * 用户实名认证信息记录 + *

+ * + * @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; +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationLIstReq.java b/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationLIstReq.java new file mode 100644 index 0000000..47b5eab --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationLIstReq.java @@ -0,0 +1,55 @@ +package com.huoran.nakadai.entity.req; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 企业认证审核 + *

+ * + * @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; + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationReq.java b/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationReq.java new file mode 100644 index 0000000..6493961 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/req/EnterpriseCertificationReq.java @@ -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; + + + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/req/SupplierClassificationReq.java b/nakadai/src/main/java/com/huoran/nakadai/entity/req/SupplierClassificationReq.java new file mode 100644 index 0000000..20faa20 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/req/SupplierClassificationReq.java @@ -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; + +/** + *

+ * 供应商分类信息 + *

+ * + * @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; + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/res/BusinessLicenseOCRResp.java b/nakadai/src/main/java/com/huoran/nakadai/entity/res/BusinessLicenseOCRResp.java new file mode 100644 index 0000000..be5aace --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/res/BusinessLicenseOCRResp.java @@ -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; + + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/res/CreditCodeResp.java b/nakadai/src/main/java/com/huoran/nakadai/entity/res/CreditCodeResp.java new file mode 100644 index 0000000..b059290 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/res/CreditCodeResp.java @@ -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; + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/res/IdCardOCRResp.java b/nakadai/src/main/java/com/huoran/nakadai/entity/res/IdCardOCRResp.java new file mode 100644 index 0000000..25cb006 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/res/IdCardOCRResp.java @@ -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; + + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/entity/res/RealNameAuthenticationResp.java b/nakadai/src/main/java/com/huoran/nakadai/entity/res/RealNameAuthenticationResp.java new file mode 100644 index 0000000..a4b3ffa --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/entity/res/RealNameAuthenticationResp.java @@ -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; + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/EnterpriseCertificationMapper.java b/nakadai/src/main/java/com/huoran/nakadai/mapper/EnterpriseCertificationMapper.java new file mode 100644 index 0000000..908675e --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/EnterpriseCertificationMapper.java @@ -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; + +/** + *

+ * 企业认证审核 Mapper 接口 + *

+ * + * @author chen + * @since 2023-12-18 + */ +@Mapper +public interface EnterpriseCertificationMapper extends BaseMapper { + + IPage selectEnterpriseCertificationList(IPage 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); + + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationConfigMapper.java b/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationConfigMapper.java new file mode 100644 index 0000000..8265739 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationConfigMapper.java @@ -0,0 +1,16 @@ +package com.huoran.nakadai.mapper; + +import com.huoran.nakadai.entity.SupplierClassificationConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 供应商分类配置表 Mapper 接口 + *

+ * + * @author chen + * @since 2023-12-27 + */ +public interface SupplierClassificationConfigMapper extends BaseMapper { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationMapper.java b/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationMapper.java new file mode 100644 index 0000000..194d470 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/SupplierClassificationMapper.java @@ -0,0 +1,16 @@ +package com.huoran.nakadai.mapper; + +import com.huoran.nakadai.entity.SupplierClassification; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 供应商分类信息 Mapper 接口 + *

+ * + * @author chen + * @since 2023-12-27 + */ +public interface SupplierClassificationMapper extends BaseMapper { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/UserAuthenticationInformationMapper.java b/nakadai/src/main/java/com/huoran/nakadai/mapper/UserAuthenticationInformationMapper.java new file mode 100644 index 0000000..c270fa7 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/UserAuthenticationInformationMapper.java @@ -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; + +/** + *

+ * 用户实名认证信息记录 Mapper 接口 + *

+ * + * @author chen + * @since 2023-12-14 + */ +@Mapper +public interface UserAuthenticationInformationMapper extends BaseMapper { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/EnterpriseCertificationMapper.xml b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/EnterpriseCertificationMapper.xml new file mode 100644 index 0000000..c217aed --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/EnterpriseCertificationMapper.xml @@ -0,0 +1,159 @@ + + + + + + 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} + + + + + + + + + + update hr_user_info set is_del = 1 WHERE user_id = #{userId} + + + + update hr_user_account set is_del = 1 WHERE id =#{accountId} + + + + update hr_user_account set account = #{userAccount.account} WHERE is_del = 0 and id = #{userAccount.id} + + + + update hr_user_info set user_name = #{userInfo.userName} WHERE is_del = 0 and user_id = #{userInfo.userId} + + diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationConfigMapper.xml b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationConfigMapper.xml new file mode 100644 index 0000000..360d81a --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationConfigMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationMapper.xml b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationMapper.xml new file mode 100644 index 0000000..78822c8 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/SupplierClassificationMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/UserAuthenticationInformationMapper.xml b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/UserAuthenticationInformationMapper.xml new file mode 100644 index 0000000..f7f1089 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/mapper/xml/UserAuthenticationInformationMapper.xml @@ -0,0 +1,4 @@ + + + + diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/EnterpriseCertificationService.java b/nakadai/src/main/java/com/huoran/nakadai/service/EnterpriseCertificationService.java new file mode 100644 index 0000000..fd9ec77 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/EnterpriseCertificationService.java @@ -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; + +/** + *

+ * 企业认证审核 服务类 + *

+ * + * @author chen + * @since 2023-12-18 + */ +public interface EnterpriseCertificationService extends IService { + 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); + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationConfigService.java b/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationConfigService.java new file mode 100644 index 0000000..0ad5603 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationConfigService.java @@ -0,0 +1,16 @@ +package com.huoran.nakadai.service; + +import com.huoran.nakadai.entity.SupplierClassificationConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 供应商分类配置表 服务类 + *

+ * + * @author chen + * @since 2023-12-27 + */ +public interface SupplierClassificationConfigService extends IService { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationService.java b/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationService.java new file mode 100644 index 0000000..f47d27e --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/SupplierClassificationService.java @@ -0,0 +1,16 @@ +package com.huoran.nakadai.service; + +import com.huoran.nakadai.entity.SupplierClassification; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 供应商分类信息 服务类 + *

+ * + * @author chen + * @since 2023-12-27 + */ +public interface SupplierClassificationService extends IService { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/UserAuthenticationInformationService.java b/nakadai/src/main/java/com/huoran/nakadai/service/UserAuthenticationInformationService.java new file mode 100644 index 0000000..844a117 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/UserAuthenticationInformationService.java @@ -0,0 +1,15 @@ +package com.huoran.nakadai.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.huoran.nakadai.entity.UserAuthenticationInformation; + +/** + *

+ * 用户实名认证信息记录 服务类 + *

+ * + * @author chen + * @since 2023-12-14 + */ +public interface UserAuthenticationInformationService extends IService { +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/impl/EnterpriseCertificationServiceImpl.java b/nakadai/src/main/java/com/huoran/nakadai/service/impl/EnterpriseCertificationServiceImpl.java new file mode 100644 index 0000000..6a28750 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/impl/EnterpriseCertificationServiceImpl.java @@ -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; + +/** + *

+ * 企业认证审核 服务实现类 + *

+ * + * @author chen + * @since 2023-12-18 + */ +@Service +public class EnterpriseCertificationServiceImpl extends ServiceImpl implements EnterpriseCertificationService { + + @Override + public EnterpriseCertification checkWhetherItExists(String company_name, Integer id, String opnenId) { + QueryWrapper 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 page = new Page(req.getPageNum(), req.getPageSize()); + IPage 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; + } +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationConfigServiceImpl.java b/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationConfigServiceImpl.java new file mode 100644 index 0000000..7ac2e95 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationConfigServiceImpl.java @@ -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; + +/** + *

+ * 供应商分类配置表 服务实现类 + *

+ * + * @author chen + * @since 2023-12-27 + */ +@Service +public class SupplierClassificationConfigServiceImpl extends ServiceImpl implements SupplierClassificationConfigService { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationServiceImpl.java b/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationServiceImpl.java new file mode 100644 index 0000000..cfb1cbc --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/impl/SupplierClassificationServiceImpl.java @@ -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; + +/** + *

+ * 供应商分类信息 服务实现类 + *

+ * + * @author chen + * @since 2023-12-27 + */ +@Service +public class SupplierClassificationServiceImpl extends ServiceImpl implements SupplierClassificationService { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/service/impl/UserAuthenticationInformationServiceImpl.java b/nakadai/src/main/java/com/huoran/nakadai/service/impl/UserAuthenticationInformationServiceImpl.java new file mode 100644 index 0000000..921e0c2 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/service/impl/UserAuthenticationInformationServiceImpl.java @@ -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; + +/** + *

+ * 用户实名认证信息记录 服务实现类 + *

+ * + * @author chen + * @since 2023-12-14 + */ +@Service +public class UserAuthenticationInformationServiceImpl extends ServiceImpl implements UserAuthenticationInformationService { + +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/utils/ali/FaceRecognitionAidUtil.java b/nakadai/src/main/java/com/huoran/nakadai/utils/ali/FaceRecognitionAidUtil.java new file mode 100644 index 0000000..e1be6b3 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/utils/ali/FaceRecognitionAidUtil.java @@ -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 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 headers = new HashMap(); + //最后在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 querys = new HashMap(); + // 对图像进行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; + } +} diff --git a/nakadai/src/main/java/com/huoran/nakadai/utils/ali/HttpUtils.java b/nakadai/src/main/java/com/huoran/nakadai/utils/ali/HttpUtils.java new file mode 100644 index 0000000..f45dae3 --- /dev/null +++ b/nakadai/src/main/java/com/huoran/nakadai/utils/ali/HttpUtils.java @@ -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 headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry 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 headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + 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 headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry 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 headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry 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 headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry 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 headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry 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 headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map 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 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); + } + } +} diff --git a/nakadai/src/test/java/com/huoran/nakadai/code/CodeGenerator.java b/nakadai/src/test/java/com/huoran/nakadai/code/CodeGenerator.java index d876104..374436d 100644 --- a/nakadai/src/test/java/com/huoran/nakadai/code/CodeGenerator.java +++ b/nakadai/src/test/java/com/huoran/nakadai/code/CodeGenerator.java @@ -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_"); //生成实体时去掉表前缀 diff --git a/users/src/main/java/com/huoran/users/controller/AliRealNameAuthenticationController.java b/users/src/main/java/com/huoran/users/controller/AliRealNameAuthenticationController.java index 4efb46e..79fffa7 100644 --- a/users/src/main/java/com/huoran/users/controller/AliRealNameAuthenticationController.java +++ b/users/src/main/java/com/huoran/users/controller/AliRealNameAuthenticationController.java @@ -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 { } -} \ No newline at end of file +}*/ diff --git a/users/src/main/java/com/huoran/users/controller/EnterpriseCertificationController.java b/users/src/main/java/com/huoran/users/controller/EnterpriseCertificationController.java index 233481d..44f0b63 100644 --- a/users/src/main/java/com/huoran/users/controller/EnterpriseCertificationController.java +++ b/users/src/main/java/com/huoran/users/controller/EnterpriseCertificationController.java @@ -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; +*/ /** *

* 企业认证审核 前端控制器 @@ -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 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 { } +*/ diff --git a/users/src/main/java/com/huoran/users/entity/EnterpriseCertification.java b/users/src/main/java/com/huoran/users/entity/EnterpriseCertification.java index 0749ac4..bbcb60d 100644 --- a/users/src/main/java/com/huoran/users/entity/EnterpriseCertification.java +++ b/users/src/main/java/com/huoran/users/entity/EnterpriseCertification.java @@ -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) diff --git a/users/src/main/java/com/huoran/users/mapper/xml/EnterpriseCertificationMapper.xml b/users/src/main/java/com/huoran/users/mapper/xml/EnterpriseCertificationMapper.xml index 9a5c621..72e1fc6 100644 --- a/users/src/main/java/com/huoran/users/mapper/xml/EnterpriseCertificationMapper.xml +++ b/users/src/main/java/com/huoran/users/mapper/xml/EnterpriseCertificationMapper.xml @@ -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