浏览代码

企业认证优化

cuixq 4 年之前
父节点
当前提交
b57dd5abe2

+ 19 - 0
tianhu-system/pom.xml

@@ -141,6 +141,13 @@
             <artifactId>lombok</artifactId>
             <scope>provided</scope>
         </dependency>
+        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
+        <dependency>
+            <groupId>com.github.pagehelper</groupId>
+            <artifactId>pagehelper</artifactId>
+            <version>5.2.0</version>
+
+        </dependency>
 
         <!--钉钉工具包,如缺失请到钉钉官方文档下载-->
         <dependency>
@@ -174,6 +181,18 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-openfeign</artifactId>
         </dependency>
+        <dependency>
+            <groupId>cpcn.dsp</groupId>
+            <artifactId>cpcn-dsp-api</artifactId>
+            <version>v1.6.4.11</version>
+            <systemPath>${project.basedir}/src/lib/cpcn-dsp-api-v1.6.4.11.jar</systemPath>
+            <scope>system</scope>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>1.2.16</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 403 - 89
tianhu-system/src/main/java/com/tianhu/system/companyAuth/controller/OwnAuthController.java

@@ -3,30 +3,30 @@ package com.tianhu.system.companyAuth.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.tianhu.common.core.cfca.CfcaUtil;
 import com.tianhu.common.core.domain.R;
-import com.tianhu.common.core.utils.CommonUtil;
-import com.tianhu.common.core.utils.IdUtils;
-import com.tianhu.common.core.utils.SecurityUtils;
-import com.tianhu.common.core.utils.ServletUtils;
+import com.tianhu.common.core.exception.BaseException;
+import com.tianhu.common.core.utils.*;
 import com.tianhu.common.core.web.controller.BaseController;
 import com.tianhu.common.security.service.TokenService;
 import com.tianhu.system.api.RemoteFileService;
 import com.tianhu.system.api.domain.PubFileInf;
+import com.tianhu.system.api.domain.SysDept;
+import com.tianhu.system.api.domain.SysRole;
+import com.tianhu.system.api.domain.SysUser;
 import com.tianhu.system.api.model.LoginUser;
 import com.tianhu.system.companyAuth.service.IOwnAuthService;
 import com.tianhu.system.domain.PayBankAccInf;
 import com.tianhu.system.domain.SysCompany;
+import com.tianhu.system.domain.SysUserCompanyRel;
 import com.tianhu.system.domain.ZcCfcaBankInf;
-import com.tianhu.system.service.IPayBankAccInfService;
-import com.tianhu.system.service.ISysCompanyService;
-import com.tianhu.system.service.IZcCfcaBankInfService;
+import com.tianhu.system.service.*;
 import org.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.text.SimpleDateFormat;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 企业认证管理
@@ -40,18 +40,26 @@ public class OwnAuthController extends BaseController {
 
     @Autowired
     private TokenService tokenService;
-
     @Autowired
     private IOwnAuthService ownAuthService;
-
     @Autowired
     private ISysCompanyService sysCompanyService;
-
+    @Autowired
+    private ISysUserCompanyRelService sysUserCompanyRelService;
     @Autowired
     private IPayBankAccInfService  payBankAccInfService;
     @Autowired
     private IZcCfcaBankInfService zcCfcaBankInfService;
-
+    @Autowired
+    private IOwnCompanyService companyService;
+    @Autowired
+    private ISysDeptService deptService;
+    @Autowired
+    private ISysRoleService roleService;
+    @Autowired
+    private ISysUserService userService;
+    @Autowired
+    private ISysConfigService configService;
     @Autowired
     private RemoteFileService remoteFileService;
     /**
@@ -66,7 +74,34 @@ public class OwnAuthController extends BaseController {
      * 证件类型 (暂只支持 0=身份证 2=护照 3=军官证 4=士兵证 5=港澳居民来往内地通行 证 6=台湾同胞来往内地通行 证 8=外国人居留证 9=警官证 Z=港澳台居民身份证 R=居住证 L=居留证)
      */
     private static String IDENTIFICATIONTYPE = "0";
-
+    /**
+     * 默认父级id
+     */
+    private Long defaultId = 0L;
+    /**
+     * 默认祖级列表
+     */
+    private String defaultAn = "0";
+    /**
+     * 默认排序
+     */
+    private String defaultOrder = "1";
+    /**
+     * 数据权限1全部
+     */
+    private String dataScope = "1";
+    /**
+     * 是否关联显示
+     */
+    private boolean isCheck = true;
+    /**
+     * 默认状态0正常
+     */
+    private String status = "0";
+    /**
+     * 自动创建
+     */
+    private String isAuto = "1";
     /**
      * 新增企业认证
      *
@@ -74,21 +109,34 @@ public class OwnAuthController extends BaseController {
      * @return
      */
     @PostMapping("/add")
+    @Transactional(rollbackFor=Exception.class)
     public R add(@RequestBody Map<String,Object> map) throws Exception {
-        //获取登录用户
-        LoginUser user = tokenService.getLoginUser();
+        LoginUser userInfo = tokenService.getLoginUser();
+        SysUser use = userInfo.getSysUser();
+
         //企业名称
         String scyName = CommonUtil.objToString(map.get("scyName"));
         //社会信用代码
         String scySocialCode = CommonUtil.objToString(map.get("scySocialCode"));
+        //获取企业信息
+        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+        //企业名称
+        queryWrapper.eq(SysCompany::getScyName,scyName);
+        //统一社会信用代码
+        queryWrapper.eq(SysCompany::getScySocialCode,scySocialCode);
+        queryWrapper.ne(SysCompany::getScyStatus,"02");
+        List<SysCompany> list = sysCompanyService.findSysCompanys(queryWrapper);
+        if (list.size()>0){
+            return R.fail("当前公司已存在,请重新选择公司");
+        }
         //注册资本
         String scyRegisteredCapital = CommonUtil.objToString(map.get("scyRegisteredCapital"));
         //时间格式化
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         //注册时间
-        String scyStartTime = sdf.format(CommonUtil.objToString(map.get("scyStartTime")));
+        String scyStartTime = CommonUtil.objToString(map.get("scyStartTime"));
         //到期时间
-        String scyEndTime = sdf.format(CommonUtil.objToString(map.get("scyEndTime")));
+        String scyEndTime = CommonUtil.objToString(map.get("scyEndTime"));
         //企业地址
         String scyAddress = CommonUtil.objToString(map.get("scyAddress"));
         //企业电话
@@ -97,28 +145,193 @@ public class OwnAuthController extends BaseController {
         String scyLegal = CommonUtil.objToString(map.get("scyLegal"));
         //法人证件号码
         String scyLegalId = CommonUtil.objToString(map.get("scyLegalId"));
-        //营业执照
-        String scyLicenseFile = CommonUtil.objToString(map.get("scyLicenseFile"));
         //经办人姓名
-        String name = CommonUtil.objToString(map.get("name"));
+        String handler = CommonUtil.objToString(map.get("handler"));
         //经办人身份证号
-        String nameCard = CommonUtil.objToString(map.get("nameCard"));
+        String handlerCard =CommonUtil.objToString(map.get("handlerCard"));
         //经办人手机号
-        String phoneNumber = CommonUtil.objToString(map.get("phoneNumber"));
+        String phoneNumber =CommonUtil.objToString(map.get("phone"));
+        //其他操作员
+        String operator =CommonUtil.objToString(map.get("operator"));
+        //其他操作员手机号
+        String number =CommonUtil.objToString(map.get("number"));
         //备注
         String zbiRemark = CommonUtil.objToString(map.get("zbiRemark"));
+        //营业执照
+        String scyLicenseFile =CommonUtil.objToString(map.get("scyLicenseFile"));
+        //法人身份证正面
+        String fsfzzList =CommonUtil.objToString(map.get("fsfzzList"));
+        //法人身份证反面
+        List<Map<String,String>> fsfzfList = (List<Map<String, String>>) map.get("fsfzfList");
+        //经办人身份证正面
+        String jsfzzList =CommonUtil.objToString(map.get("jsfzzList"));
+        //经办人身份证反面
+        List<Map<String,String>> jsfzfList = (List<Map<String, String>>) map.get("jsfzfList");
+        //法人授权书
+        List<Map<String,String>> frsqsList = (List<Map<String, String>>) map.get("frsqsList");
+        //数字证书授权
+        List<Map<String,String>> szzssqList = (List<Map<String, String>>) map.get("szzssqList");
+        //其他附件
+        List<Map<String,String>> qtfjList = (List<Map<String, String>>) map.get("qtfjList");
         SysCompany SysCompany = new SysCompany();
         String  scyId  =  IdUtils.fastSimpleUUID();
         SysCompany.setScyId(scyId);
-        sysCompanyService.createSysCompany(SysCompany);
+        SysCompany.setScyName(scyName);
+        SysCompany.setScySocialCode(scySocialCode);
+        SysCompany.setScyRegisteredCapital(scyRegisteredCapital);
+        SysCompany.setScyStartTime(scyStartTime);
+        SysCompany.setScyEndTime(scyEndTime);
+        SysCompany.setScyAddress(scyAddress);
+        SysCompany.setScyPhone(scyPhone);
+        SysCompany.setScyLegal(scyLegal);
+        SysCompany.setScyLegalId(scyLegalId);
+            SysCompany.setScyLicenseFile(scyLicenseFile);
+            SysCompany.setScyLegalFile(fsfzzList);
+        if(fsfzfList.size()>0){
+            SysCompany.setScyLegalBackFile(fsfzfList.get(0).get("uid"));
+        }
+        if(frsqsList.size()>0){
+            SysCompany.setScyAuthorizationFile(frsqsList.get(0).get("uid"));
+        }
+        if(szzssqList.size()>0){
+            SysCompany.setScyCommitmentFile(szzssqList.get(0).get("uid"));
+        }
+        if(qtfjList.size()>0){
+            SysCompany.setScyAppendixFile(qtfjList.get(0).get("uid"));
+        }
         //运营商三要素
-        JSONObject operatorAuth = CfcaUtil.operatorAuth(ISPRO, INSTITUTIONID, name, IDENTIFICATIONTYPE, nameCard, phoneNumber, zbiRemark);
+        JSONObject operatorAuth = CfcaUtil.operatorAuth(ISPRO, INSTITUTIONID, handler, IDENTIFICATIONTYPE, handlerCard, phoneNumber, zbiRemark);
         System.out.print("运营商三要素结果==========>" + operatorAuth);
-  /*      operatorAuth.getJSONObject(WORDS_RESULT);*/
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Verification"))){
+                return R.fail("运营商审核失败请确认经办人信息是否正确");
+            };
+        }else{
+            return R.fail("运营商审核失败请确认经办人信息是否正确");
+        }
         //工商四要素
         JSONObject companyAuth = CfcaUtil.companyAuth(ISPRO, INSTITUTIONID, scyName, scySocialCode, scyLegal, IDENTIFICATIONTYPE, scyLegalId, zbiRemark);
         System.out.print("工商四要素结果==========>" + companyAuth);
-        return R.ok();
+        //状态(00:正常, 01:停用, 02:待四要素认证(认证中), 03:待对公户认证(认证中), 04:待实名审核(认证中), 99:删除)
+        SysCompany.setScyStatus("03");
+        //四要素认证状态(00:未认证, 01:认证通过, 02:认证未通过, 03:人工审批通过, 04:人工审批不通过)
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Verification"))){
+                SysCompany.setScyAuthStatus("02");
+            }else{
+                SysCompany.setScyAuthStatus("01");
+            };
+        }else{
+            SysCompany.setScyAuthStatus("02");
+        }
+        //获取创建人
+        SysCompany.setCreateBy(use.getUserId()+"");
+        //获取当前时间
+        Date currentTime = DateUtils.getNowDate();
+        SysCompany.setCreateTime(currentTime);
+        sysCompanyService.createSysCompany(SysCompany);
+        //创建部门
+        SysDept dept = new SysDept();
+        dept.setCompanyId(scyId);
+        dept.setDeptName(scyName);
+        dept.setParentId(defaultId);
+        dept.setAncestors(defaultAn);
+        dept.setOrderNum(defaultOrder);
+        dept.setCreateBy(use.getUserId()+"");
+        deptService.insertDept(dept);
+        List<SysDept> deptList= deptService.selectDeptList(dept);
+        //部门id
+        Long deptId = deptList.get(0).getDeptId();
+        //创建角色
+        SysRole sysRole = new SysRole();
+        sysRole.setCompanyId(scyId);
+        sysRole.setRoleName(scyName);
+        sysRole.setRoleSort(defaultOrder);
+        sysRole.setRoleKey(scyName);
+        sysRole.setDataScope(dataScope);
+        sysRole.setMenuCheckStrictly(isCheck);
+        sysRole.setDeptCheckStrictly(isCheck);
+        sysRole.setStatus(status);
+        sysRole.setStatus("0");
+        sysRole.setCreateBy(use.getUserId()+"");
+        sysRole.setIsAuto("1");
+        companyService.insertRole(sysRole);
+        List<SysRole> roleList= roleService.selectRoleList(sysRole);
+        //TODO
+        //角色权限未控制
+        //角色id
+        Long roleId = roleList.get(0).getRoleId();
+        Long[] roleIds = new Long[1];
+        roleIds[0] = roleId;
+        //用户新增或修改
+        SysUser sysUser = new SysUser();
+        SysUser listUser = userService.selectUserByUserName(phoneNumber);
+        if(listUser == null){
+            sysUser.setUserName(phoneNumber);
+            sysUser.setNickName(handler);
+            String password = configService.selectConfigByKey("sys.user.initPassword");
+            sysUser.setPassword(SecurityUtils.encryptPassword(password));
+            sysUser.setCreateBy(use.getUserId()+"");
+            sysUser.setRoleIds(roleIds);
+            userService.insertUser(sysUser);
+        } else {
+            listUser.setRoleIds(roleIds);
+            userService.insertUserRole(listUser);
+        }
+        SysUser listUserTwo = userService.selectUserByUserName(phoneNumber);
+        //创建其他和管理员
+        if(CommonUtil.isNotEmpty(operator)&&CommonUtil.isNotEmpty(number)){
+            SysUser listUsers = userService.selectUserByUserName(number);
+            if(listUsers == null) {
+                SysUser user = new SysUser();
+                user.setUserName(number);
+                user.setNickName(operator);
+                String password = configService.selectConfigByKey("sys.user.initPassword");
+                user.setPassword(SecurityUtils.encryptPassword(password));
+                user.setCreateBy(use.getUserId() + "");
+                user.setRoleIds(roleIds);
+                userService.insertUser(user);
+            }else{
+                listUser.setRoleIds(roleIds);
+                userService.insertUserRole(listUsers);
+            }
+            SysUser listUserf = userService.selectUserByUserName(number);
+            SysUserCompanyRel sysUserCompanyRel =new SysUserCompanyRel();
+            sysUserCompanyRel.setSucrCompanyId(scyId);
+            sysUserCompanyRel.setSucrUserId(listUserf.getUserId());
+            sysUserCompanyRel.setSucrDeptId(deptId);
+            sysUserCompanyRel.setSucrHandler("0");
+            sysUserCompanyRelService.createSysUserCompanyRel(sysUserCompanyRel);
+        }
+        //创建用户与企业关系
+        SysUserCompanyRel sysUserCompanyRel =new SysUserCompanyRel();
+        sysUserCompanyRel.setSucrCompanyId(scyId);
+        sysUserCompanyRel.setSucrUserId(listUserTwo.getUserId());
+        sysUserCompanyRel.setSucrDeptId(deptId);
+        sysUserCompanyRel.setSucrHandler("1");
+        sysUserCompanyRel.setSucrCard(handlerCard);
+        sysUserCompanyRel.setSucrCardFile(fsfzzList);
+        if(jsfzfList.size()>0){
+            sysUserCompanyRel.setSucrCardBackFile(jsfzfList.get(0).get("uid"));
+        }
+        LambdaQueryWrapper<SysUserCompanyRel> userCompanyRel = new LambdaQueryWrapper<>();
+        //企业名称
+        userCompanyRel.eq(SysUserCompanyRel::getSucrUserId,use.getUserId());
+        //统一社会信用代码
+        userCompanyRel.eq(SysUserCompanyRel::getSucrCompanyId,scyId);
+        List<SysUserCompanyRel> companyRel = sysUserCompanyRelService.findSysUserCompanyRels(userCompanyRel);
+        if(companyRel.size()==0){
+            SysUserCompanyRel userCompany =new SysUserCompanyRel();
+            userCompany.setSucrCompanyId(scyId);
+            userCompany.setSucrUserId(use.getUserId());
+            userCompany.setSucrDeptId(deptId);
+            userCompany.setSucrHandler("0");
+            sysUserCompanyRelService.createSysUserCompanyRel(userCompany);
+        }
+        //修改当前用户企业
+        sysUserCompanyRelService.createSysUserCompanyRel(sysUserCompanyRel);
+        SysCompany company = sysCompanyService.getById(scyId);
+        return R.ok(company);
     }
 
     /**
@@ -128,31 +341,24 @@ public class OwnAuthController extends BaseController {
      * @return
      */
     @PostMapping("/getlicense")
-    public SysCompany getlicense(@RequestParam("file") MultipartFile file) {
-        //获取登录用户
-        LoginUser user = tokenService.getLoginUser();
-        String companyId = user.getSysUser().getCompanyId();
+    public R getlicense(MultipartFile file) {
         //获取企业信息
         SysCompany sysCompany = ownAuthService.businessLicense(file);
-        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
-        //企业名称
-        queryWrapper.eq(SysCompany::getScyName,sysCompany.getScyName());
-        //统一社会信用代码
-        queryWrapper.eq(SysCompany::getScyRemarks,sysCompany.getScySocialCode());
-        List<SysCompany> list = sysCompanyService.findSysCompanys(queryWrapper);
+//        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
+//        //企业名称
+//        queryWrapper.eq(SysCompany::getScyName,sysCompany.getScyName());
+//        //统一社会信用代码
+//        queryWrapper.eq(SysCompany::getScySocialCode,sysCompany.getScySocialCode());
+//        List<SysCompany> list = sysCompanyService.findSysCompanys(queryWrapper);
         //不重复则储存营业执照并上传
-        if(list.size() == 0){
-            sysCompanyService.createSysCompany(sysCompany);
                 //获取上传文件token
                 String token = SecurityUtils.getToken(ServletUtils.getRequest());
                 //文件传输
-                R<PubFileInf> fileResult = remoteFileService.uploadFile(file,"01","04","00", companyId, token);
+                R<PubFileInf> fileResult = remoteFileService.uploadFile(file,"01","04","00", "", token);
                 sysCompany.setScyLicenseFile(fileResult.getData().getPfiFileId());
-        }else{
-//            zcInvoiceInf.setZiiId(list.get(0).getZiiId());
-        }
-        //返回发票信息
-        return sysCompany;
+        //返回营业执照信息
+        System.out.print("ocr识别==========>" + sysCompany);
+        return R.ok(sysCompany);
     }
     /**
      * 法人身份证正面识别
@@ -161,31 +367,20 @@ public class OwnAuthController extends BaseController {
      * @return
      */
     @PostMapping("/getCardPositive")
-    public R getCardPositive(MultipartFile file) {
-        //获取登录用户
-        LoginUser user = tokenService.getLoginUser();
-        String companyId = user.getSysUser().getCompanyId();
+    public R getCardPositive(MultipartFile file,String fileType) {
         //获取企业信息
-        SysCompany sysCompany = ownAuthService.getCardPositive(file);
-        LambdaQueryWrapper<SysCompany> queryWrapper = new LambdaQueryWrapper<>();
-        //企业名称
-        queryWrapper.eq(SysCompany::getScyName,sysCompany.getScyName());
-        //统一社会信用代码
-        queryWrapper.eq(SysCompany::getScyRemarks,sysCompany.getScySocialCode());
-        List<SysCompany> list = sysCompanyService.findSysCompanys(queryWrapper);
-        //不重复则储存营业执照并上传
-        if(list.size() == 0){
-            sysCompanyService.createSysCompany(sysCompany);
+        Map map = ownAuthService.getCardPositive(file,fileType);
             //获取上传文件token
             String token = SecurityUtils.getToken(ServletUtils.getRequest());
             //文件传输
-            R<PubFileInf> fileResult = remoteFileService.uploadFile(file,"01","04","00", companyId, token);
-            sysCompany.setScyLicenseFile(fileResult.getData().getPfiFileId());
-        }else{
-//            zcInvoiceInf.setZiiId(list.get(0).getZiiId());
-        }
+            R<PubFileInf> fileResult = remoteFileService.uploadFile(file,"01","04","00", "", token);
+      if("00".equals(fileType)){
+          map.put("fsfzzList",fileResult.getData().getPfiFileId());
+      }else{
+          map.put("jsfzzList",fileResult.getData().getPfiFileId());
+      }
         //返回发票信息
-        return R.ok(sysCompany);
+        return R.ok(map);
     }
 
     /**
@@ -201,21 +396,13 @@ public class OwnAuthController extends BaseController {
         //企业id
         String scyId = CommonUtil.objToString(map.get("scyId"));
         //开户名
-        String pbaiAccountName = CommonUtil.objToString(map.get("pbaiAccountName"));
+        String pbaiAccountName = CommonUtil.objToString(map.get("scyName"));
         //银行卡号
         String pbaiBankaccountId = CommonUtil.objToString(map.get("pbaiBankaccountId"));
         //所属银行
         String pbaiBankName = CommonUtil.objToString(map.get("pbaiBankName"));
         //备注
         String zbiRemark = CommonUtil.objToString(map.get("zbiRemark"));
-        PayBankAccInf payBankAccInf = new PayBankAccInf();
-        String  pbiId  =  IdUtils.fastSimpleUUID();
-        payBankAccInf.setPbaiId(pbiId);
-        payBankAccInf.setPbaiCstno(scyId);
-        payBankAccInf.setPbaiAccountName(pbaiAccountName);
-        payBankAccInf.setPbaiBankaccountId(pbaiBankaccountId);
-        payBankAccInf.setPbaiBankName(pbaiBankName);
-        payBankAccInfService.createPayBankAccInf(payBankAccInf);
         //查询银行行号
         LambdaQueryWrapper<ZcCfcaBankInf> queryWrapper = new LambdaQueryWrapper<>();
         //所属银行
@@ -224,10 +411,59 @@ public class OwnAuthController extends BaseController {
         if(list.size()==0){
             return R.fail("银行名称错误,请输入正确的银行名");
         }
+        //查询账户
+        LambdaQueryWrapper<PayBankAccInf> bank = new LambdaQueryWrapper<>();
+        //所属银行
+        bank.eq(PayBankAccInf::getPbaiAccountName,pbaiAccountName);
+        bank.eq(PayBankAccInf::getPbaiBankaccountId,pbaiBankaccountId);
+        List<PayBankAccInf> bankAcc = payBankAccInfService.findPayBankAccInfs(bank);
+        if(bankAcc.size()>0){
+            //取得指定时间间隔后的系统时间
+            GregorianCalendar calendar = (GregorianCalendar) Calendar.getInstance();
+            calendar.add( Calendar.HOUR_OF_DAY, -3);
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
+            System.out.println("比较时间"+formatter.format(calendar.getTime()));
+            System.out.println("最后时间"+formatter.format(bankAcc.get(0).getPbaiCfcaDate()));
+            if(formatter.format(calendar.getTime()).compareTo(formatter.format(bankAcc.get(0).getPbaiCfcaDate()))<0){
+                throw new BaseException("当前账户已存在!");
+            }
+            //企业打款申请
+            JSONObject operatorAuth = CfcaUtil.paymentApply(ISPRO, INSTITUTIONID, pbaiAccountName, pbaiBankaccountId,list.get(0).getZcbiBankNo(),zbiRemark);
+            System.out.print("绑定对公户返回结果==========>" + operatorAuth);
+            String  TxSN =  operatorAuth.getString("TxSN");
+            if("SUCCESS".equals(operatorAuth.getString("Message"))){
+                if(!"20".equals(operatorAuth.getString("Verification"))){
+                    return R.fail("绑定账户失败");
+                };
+            }else{
+                return R.fail("绑定账户失败");
+            }
+            return R.ok();
+        }
+        PayBankAccInf payBankAccInf = new PayBankAccInf();
+        String  pbiId  =  IdUtils.fastSimpleUUID();
+        payBankAccInf.setPbaiId(pbiId);
+        payBankAccInf.setPbaiCstno(scyId);
+        payBankAccInf.setPbaiAccountName(pbaiAccountName);
+        payBankAccInf.setPbaiBankaccountId(pbaiBankaccountId);
+        payBankAccInf.setPbaiBankName(pbaiBankName);
+        payBankAccInf.setPbaiStatus("1");
         //企业打款申请
         JSONObject operatorAuth = CfcaUtil.paymentApply(ISPRO, INSTITUTIONID, pbaiAccountName, pbaiBankaccountId,list.get(0).getZcbiBankNo(),zbiRemark);
         System.out.print("绑定对公户返回结果==========>" + operatorAuth);
-        /*      operatorAuth.getJSONObject(WORDS_RESULT);*/
+      String  TxSN =  operatorAuth.getString("TxSN");
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Status"))){
+                return R.fail("绑定账户失败");
+            };
+        }else{
+            return R.fail("绑定账户失败");
+        }
+        payBankAccInf.setPbaiCfcaNo(TxSN);
+        //获取当前时间
+        Date currentTime = DateUtils.getNowDate();
+        payBankAccInf.setPbaiCfcaDate(currentTime);
+        payBankAccInfService.createPayBankAccInf(payBankAccInf);
         return R.ok();
     }
 
@@ -240,50 +476,128 @@ public class OwnAuthController extends BaseController {
     @PostMapping("/payment")
     public R payment(@RequestBody Map<String,Object> map) throws Exception {
         //获取登录用户
-        LoginUser user = tokenService.getLoginUser();
-        //交易流水号
-        String originalTxSN = CommonUtil.objToString(map.get("originalTxSN"));
+        LoginUser userInfo = tokenService.getLoginUser();
+        SysUser users = userInfo.getSysUser();
+        LambdaQueryWrapper<SysUserCompanyRel> userCompanyRel = new LambdaQueryWrapper<>();
+        //用户名
+        userCompanyRel.eq(SysUserCompanyRel::getSucrUserId,users.getUserId());
+        List<SysUserCompanyRel> companyRel = sysUserCompanyRelService.findSysUserCompanyRels(userCompanyRel);
+        if(companyRel.size()==0){
+            return  R.fail("企业未认证请联系管理员");
+        }else if(CommonUtil.isEmpty(companyRel.get(0).getSucrCompanyId())){
+            return  R.fail("企业认证失败请联系管理员");
+        }
+        //查询账户
+        LambdaQueryWrapper<PayBankAccInf> bank = new LambdaQueryWrapper<>();
+        //所属银行
+        bank.eq(PayBankAccInf::getPbaiCstno,companyRel.get(0).getSucrCompanyId());
+        bank.orderByDesc(PayBankAccInf::getPbaiCfcaDate);
+        List<PayBankAccInf> bankAcc = payBankAccInfService.findPayBankAccInfs(bank);
+        if(bankAcc.size()==0){
+            return  R.fail("所属账号不存在");
+        }
         //金额(分)
         String amount = CommonUtil.objToString(map.get("amount"));
         //备注
         String zbiRemark = CommonUtil.objToString(map.get("zbiRemark"));
-        //企业打款申请
-        JSONObject operatorAuth = CfcaUtil.paymentAuth(ISPRO, INSTITUTIONID, originalTxSN, amount, zbiRemark);
+        //打款验证
+        JSONObject operatorAuth = CfcaUtil.paymentAuth(ISPRO, INSTITUTIONID, bankAcc.get(0).getPbaiCfcaNo(), amount, zbiRemark);
         System.out.print("打款认证结果==========>" + operatorAuth);
-        /*      operatorAuth.getJSONObject(WORDS_RESULT);*/
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Verification"))){
+                return R.fail("账户验证失败");
+            };
+        }else{
+            return R.fail("账户验证失败");
+        }
+        PayBankAccInf payBankAccInf =new PayBankAccInf();
+        payBankAccInf.setPbaiId(bankAcc.get(0).getPbaiId());
+        payBankAccInf.setPbaiStatus("0");
+        payBankAccInfService.updatePayBankAccInf(payBankAccInf);
         return R.ok();
     }
     /**
      * 发送短信验证码
      *
-     * @param phone    手机号
      * @return
      */
     @PostMapping("/send")
-    public R send(String phone) throws Exception {
+    public R send(@RequestBody Map<String,Object> map) throws Exception {
         //获取登录用户
         LoginUser user = tokenService.getLoginUser();
-        //企业打款申请
+        //电话
+        String phone = CommonUtil.objToString(map.get("phone"));
+        //发送短信验证码
         JSONObject operatorAuth = CfcaUtil.sendSmsCode(ISPRO, INSTITUTIONID,null,phone,null);
         System.out.print("发送短信验证码结果==========>" + operatorAuth);
-        /*      operatorAuth.getJSONObject(WORDS_RESULT);*/
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Status"))){
+                return R.fail("短信发送失败");
+            };
+        }else{
+            return R.fail("短信发送失败");
+        }
         return R.ok();
     }
 
     /**
      * 短信验证
      *
-     * @param phone    手机号
      * @return
      */
     @PostMapping("/verification")
-    public R verification(String phone,String code) throws Exception {
+    public R verification(@RequestBody Map<String,Object> map) throws Exception {
         //获取登录用户
         LoginUser user = tokenService.getLoginUser();
+        //电话
+        String phone = CommonUtil.objToString(map.get("phone"));
+        //企业id
+        String scyId = CommonUtil.objToString(map.get("scyId"));
+        //验证码
+        String code = CommonUtil.objToString(map.get("code"));
         //企业打款申请
-        JSONObject operatorAuth = CfcaUtil.checkSmsCode(ISPRO, INSTITUTIONID,code,phone,null);
+        JSONObject operatorAuth = CfcaUtil.checkSmsCode(ISPRO, INSTITUTIONID,phone,code,null);
         System.out.print("短信验证码验证结果==========>" + operatorAuth);
-        /*      operatorAuth.getJSONObject(WORDS_RESULT);*/
+        if("SUCCESS".equals(operatorAuth.getString("Message"))){
+            if(!"20".equals(operatorAuth.getString("Verification"))){
+                return R.fail("短信验证失败");
+            };
+        }else{
+            return R.fail("短信验证失败");
+        }
+        SysCompany sysCompany =new SysCompany();
+        sysCompany.setScyId(scyId);
+        //正常状态
+        sysCompany.setScyStatus("00");
+        sysCompanyService.updateSysCompany(sysCompany);
         return R.ok();
     }
+    /**
+     * 数据返现
+     *
+     * @return
+     */
+    @PostMapping("/cashBack")
+    public R cashBack() throws Exception {
+        //获取登录用户
+        LoginUser user = tokenService.getLoginUser();
+        String companyId = user.getSysUser().getCompanyId();
+        SysCompany list =null;
+        Map map =new HashMap();
+        if(CommonUtil.isNotEmpty(companyId)){
+            list  = sysCompanyService.getById(companyId);
+            map.put("list",list);
+            if(list!=null){
+                //查询账户
+                LambdaQueryWrapper<PayBankAccInf> bank = new LambdaQueryWrapper<>();
+                //所属银行
+                bank.eq(PayBankAccInf::getPbaiCstno,list.getScyId());
+                bank.orderByDesc(PayBankAccInf::getPbaiCfcaDate);
+                List<PayBankAccInf> bankAcc = payBankAccInfService.findPayBankAccInfs(bank);
+                map.put("data",bankAcc);
+            }
+        }
+        return R.ok(map);
+    }
+
 }

+ 2 - 1
tianhu-system/src/main/java/com/tianhu/system/companyAuth/service/IOwnAuthService.java

@@ -5,6 +5,7 @@ import com.keao.tianhu.starter.mybatis.plus.entity.QueryRequest;
 import com.tianhu.system.domain.SysCompany;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
 import java.util.Map;
 
 public interface IOwnAuthService {
@@ -30,6 +31,6 @@ public interface IOwnAuthService {
      * @param file
      * @return
      */
-    public SysCompany getCardPositive(MultipartFile file);
+    public Map getCardPositive(MultipartFile file,String fileType);
 
 }

+ 21 - 12
tianhu-system/src/main/java/com/tianhu/system/companyAuth/service/impl/OwnAuthServiceImpl.java

@@ -17,6 +17,8 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -90,7 +92,7 @@ public class OwnAuthServiceImpl implements IOwnAuthService {
     @Override
     public SysCompany businessLicense(MultipartFile file) {
         //获取发票信息
-        JSONObject result = OcrUtil.vatInvoice(getToken(), file);
+        JSONObject result = OcrUtil.businessLicense(getToken(), file);
         System.out.print("营业执照文字提取结果==========>" + result);
         SysCompany sysCompany = new SysCompany();
         //校验返回结果是否成功
@@ -111,14 +113,14 @@ public class OwnAuthServiceImpl implements IOwnAuthService {
             //注册资本
             String scyRegisteredCapital= wordsResult.getJSONObject("注册资本").getString("words");
             sysCompany.setScyRegisteredCapital(scyRegisteredCapital);
-            //时间格式化
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
             //成立日期
             String scyStartTime = wordsResult.getJSONObject("成立日期").getString("words");
-            sysCompany.setScyStartTime(sdf.format(scyStartTime));
+            scyStartTime= scyStartTime.replace("年","-").replace("月","-").replace("日","");
+            sysCompany.setScyStartTime(scyStartTime);
             //有效期
             String scyEndTime = wordsResult.getJSONObject("有效期").getString("words");
-            sysCompany.setScyEndTime(sdf.format(scyEndTime));
+            scyEndTime  =   scyEndTime.replace("年","-").replace("月","-").replace("日","");
+            sysCompany.setScyEndTime(scyEndTime);
         }
         //返回获取文字后的营业执照信息
         return sysCompany;
@@ -132,23 +134,30 @@ public class OwnAuthServiceImpl implements IOwnAuthService {
      */
     @SneakyThrows
     @Override
-    public SysCompany getCardPositive(MultipartFile file) {
+    public Map getCardPositive(MultipartFile file,String fileType) {
         //获取身份证信息
         JSONObject result = OcrUtil.idcard(getToken(),file,FRONT);
         System.out.print("身份证文字提取结果==========>" + result);
-        SysCompany sysCompany = new SysCompany();
+        Map map =new HashMap();
         //校验返回结果是否成功
         if (result != null && result.getJSONObject(WORDS_RESULT) != null) {
             JSONObject wordsResult = result.getJSONObject(WORDS_RESULT);
             //公民身份号码
-            String scyName = wordsResult.getJSONObject("公民身份号码").getString("words");
-            sysCompany.setScyName(scyName);
+            String scyLegalId = wordsResult.getJSONObject("公民身份号码").getString("words");
+
             //姓名
-            String scySocialCode = wordsResult.getJSONObject("姓名").getString("words");
-            sysCompany.setScySocialCode(scySocialCode);
+            String scyLegal = wordsResult.getJSONObject("姓名").getString("words");
+            if("00".equals(fileType)){
+                map.put("scyLegalId",scyLegalId);
+                map.put("scyLegal",scyLegal);
+            }else{
+                map.put("handler",scyLegal);
+                map.put("handlerCard",scyLegalId);
+            }
+
         }
         //返回身份证信息
-        return sysCompany;
+        return  map;
     }
     /**
      * 获取授权token

+ 13 - 1
tianhu-system/src/main/java/com/tianhu/system/domain/PayBankAccInf.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author cuixq
- * @since 2021-08-16
+ * @since 2021-08-25
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -62,6 +62,18 @@ public class PayBankAccInf implements Serializable {
     private String pbaiBankName;
 
     /**
+     * CFCA验证交易号
+     */
+    @TableField("PBAI_CFCA_NO")
+    private String pbaiCfcaNo;
+
+    /**
+     * CFCA验证时间
+     */
+    @TableField("PBAI_CFCA_DATE")
+    private Date pbaiCfcaDate;
+
+    /**
      * 状态(0:激活;1:停用; 2:删除)
      */
     @TableField("PBAI_STATUS")

+ 8 - 2
tianhu-system/src/main/java/com/tianhu/system/domain/SysCompany.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author cuixq
- * @since 2021-08-23
+ * @since 2021-08-25
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -80,12 +80,18 @@ public class SysCompany implements Serializable {
     private String scyPhone;
 
     /**
-     * 法人证件(pub_file_inf.pfi_file_id)
+     * 法人证件正面(pub_file_inf.pfi_file_id)
      */
     @TableField("scy_legal_file")
     private String scyLegalFile;
 
     /**
+     * 法人证件反面(pub_file_inf.pfi_file_id)
+     */
+    @TableField("scy_legal_back_file")
+    private String scyLegalBackFile;
+
+    /**
      * 法定姓名
      */
     @TableField("scy_legal")

+ 19 - 1
tianhu-system/src/main/java/com/tianhu/system/domain/SysUserCompanyRel.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author cuixq
- * @since 2021-08-18
+ * @since 2021-08-26
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -50,6 +50,24 @@ public class SysUserCompanyRel implements Serializable {
     private String sucrHandler;
 
     /**
+     * 身份证号(经办人必需维护)
+     */
+    @TableField("sucr_card")
+    private String sucrCard;
+
+    /**
+     * 身份证正面(pub_file_inf.pfi_file_id)
+     */
+    @TableField("sucr_card_file")
+    private String sucrCardFile;
+
+    /**
+     * 身份证反面(pub_file_inf.pfi_file_id)
+     */
+    @TableField("sucr_card_back_file")
+    private String sucrCardBackFile;
+
+    /**
      * 创建者
      */
     @TableField("create_by")

+ 0 - 12
tianhu-system/src/main/java/com/tianhu/system/service/impl/SysDeptServiceImpl.java

@@ -208,18 +208,6 @@ public class SysDeptServiceImpl implements ISysDeptService
     @Override
     public int insertDept(SysDept dept)
     {
-        LoginUser userInfo = tokenService.getLoginUser();
-        SysUser user = userInfo.getSysUser();
-        String companyId = user.getCompanyId();
-        if(!SalaryConstants.OPEX.equals(companyId)){
-            SysDept info = deptMapper.selectDeptById(dept.getParentId());
-            // 如果父节点不为正常状态,则不允许新增子节点
-            if (!UserConstants.DEPT_NORMAL.equals(info.getStatus()))
-            {
-                throw new CustomException("部门停用,不允许新增");
-            }
-            dept.setAncestors(info.getAncestors() + "," + dept.getParentId());
-        }
         return deptMapper.insertDept(dept);
     }
 

+ 1 - 1
tianhu-system/src/main/resources/mapper/auth/OwnAuthMapper.xml

@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.huyi.service.companyAuth.mapper.OwnAuthMapper">
+<mapper namespace="com.tianhu.system.companyAuth.mapper.OwnAuthMapper">
 
     <select id="selectBillInfList" parameterType="map" resultType="map">
         SELECT

+ 2 - 0
tianhu-system/src/main/resources/mapper/system/PayBankAccInfMapper.xml

@@ -10,6 +10,8 @@
         <result column="PBAI_ACCOUNTNO" property="pbaiAccountno" />
         <result column="PBAI_BANKACCOUNT_ID" property="pbaiBankaccountId" />
         <result column="PBAI_BANK_NAME" property="pbaiBankName" />
+        <result column="PBAI_CFCA_NO" property="pbaiCfcaNo" />
+        <result column="PBAI_CFCA_DATE" property="pbaiCfcaDate" />
         <result column="PBAI_STATUS" property="pbaiStatus" />
         <result column="PBAI_BASIC" property="pbaiBasic" />
         <result column="create_by" property="createBy" />

+ 1 - 0
tianhu-system/src/main/resources/mapper/system/SysCompanyMapper.xml

@@ -14,6 +14,7 @@
         <result column="scy_address" property="scyAddress" />
         <result column="scy_phone" property="scyPhone" />
         <result column="scy_legal_file" property="scyLegalFile" />
+        <result column="scy_legal_back_file" property="scyLegalBackFile" />
         <result column="scy_legal" property="scyLegal" />
         <result column="scy_legal_id" property="scyLegalId" />
         <result column="scy_authorization_file" property="scyAuthorizationFile" />

+ 3 - 0
tianhu-system/src/main/resources/mapper/system/SysUserCompanyRelMapper.xml

@@ -8,6 +8,9 @@
         <result column="sucr_company_id" property="sucrCompanyId" />
         <result column="sucr_dept_id" property="sucrDeptId" />
         <result column="sucr_handler" property="sucrHandler" />
+        <result column="sucr_card" property="sucrCard" />
+        <result column="sucr_card_file" property="sucrCardFile" />
+        <result column="sucr_card_back_file" property="sucrCardBackFile" />
         <result column="create_by" property="createBy" />
         <result column="create_time" property="createTime" />
         <result column="update_by" property="updateBy" />