server/dianziqian/src/main/java/com/jzq/JzqHttpApiTest.java
@@ -84,14 +84,16 @@ // req.setLegalMobile("153XXXXXXXX"); Map<String, Object> params=bodyParams; String url=SERVICE_URL+"/v2/user/organizationCreate"; params.put("name","安徽豆米科技有限公司"); params.put("name","安徽豆米科技有限公司1"); params.put("identificationType",1); params.put("organizationRegNo","913401000967388938"); params.put("organizationRegNo","913401000967388931"); params.put("organizationType",0); params.put("organizationCode","913401000967388938"); params.put("organizationCode","913401000967388931"); params.put("organizationRegImg", new File("D://test.png")); params.put("legalName","杨龙"); params.put("emailOrMobile","jp@doumee.com"); params.put("legalName","杨龙1"); params.put("emailOrMobile","jp1@doumee.com"); System.out.println(JSONObject.toJSONString(params)); String str= HttpClientUtils.init().getPost(url,null,params,true); System.out.println(str); } @@ -217,7 +219,7 @@ public static void main(String[] args) { // new JzqHttpApiTest().testOrganizationCreate(); new JzqHttpApiTest().testOrganizationCreate(); // new JzqHttpApiTest().testOrganizationAuditStatus(); // new JzqHttpApiTest().uploadEntSign("豆米科技公章新",new File("D://sing.png"),"jp@doumee.com"); server/platform/src/main/java/com/doumee/api/business/CompanyController.java
@@ -110,9 +110,9 @@ @ApiOperation("查询全部数据(账号分配企业使用)") @PostMapping("/pageAll") @RequiresPermissions("business:companypermission:create") public ApiResponse<PageData<Company>> findPageAll (@RequestBody PageWrap<Company> pageWrap) { pageWrap.getModel().setQueryFlag(Constants.ONE);//查询全部 return ApiResponse.success(companyService.findPage(pageWrap)); public ApiResponse<List<Company>> findPageAll (@RequestBody Company pageWrap) { pageWrap.setQueryFlag(Constants.ONE);//查询全部 return ApiResponse.success(companyService.findList(pageWrap)); } @ApiOperation("导出Excel") server/platform/src/main/java/com/doumee/api/system/SystemUserController.java
@@ -70,6 +70,15 @@ systemUserBiz.create(systemUser); return ApiResponse.success(null); } @PreventRepeat @ApiOperation("修改用户状态") @GetMapping("/updUserStatus") @RequiresPermissions("system:user:update") public ApiResponse updUserStatus( @RequestParam Integer id,@RequestParam Integer status) { systemUserBiz.updUserStatus(id,status); return ApiResponse.success(null); } @ApiOperation("删除") @GetMapping("/delete/{id}") server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -31,6 +31,15 @@ * @throws Exception */ @Scheduled(fixedDelay= 60*1000,initialDelay = 30000) public void startSignAuthAuto() throws Exception { log.info("==============定时注册企业君子签账号=======start======"); companyService.startSignAuthAuto(); log.info("==============定时注册企业君子签账号======end======="); } /** * @throws Exception */ @Scheduled(fixedDelay= 60*1000,initialDelay = 30000) public void dealComSignAuthStatus() throws Exception { log.info("==============定时查询企业电子签认证状态=======start======"); companyService.dealSignAuthStatus(); server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -1,5 +1,6 @@ package com.doumee.biz.system.impl; import cn.emay.sdk.core.dto.sms.response.SmsResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.doumee.biz.system.SystemUserBiz; import com.doumee.core.constants.ResponseStatus; @@ -7,6 +8,7 @@ import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.SmsEmailMapper; import com.doumee.dao.business.model.Company; import com.doumee.dao.system.dto.*; import com.doumee.dao.system.model.SystemDepartment; @@ -14,12 +16,14 @@ import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.model.SystemUserRole; import com.doumee.service.business.CompanyService; import com.doumee.service.business.impl.SmsEmailServiceImpl; import com.doumee.service.system.*; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; @@ -34,9 +38,13 @@ @Autowired private SystemUserService systemUserService; @Autowired private SmsEmailMapper smsEmailMapper; @Autowired private CompanyService companyService; @Value("${debug_model}") private boolean debugModel; @Autowired private SystemUserRoleService systemUserRoleService; @@ -109,22 +117,29 @@ public void create(CreateSystemUserDTO systemUser) { // 验证用户名 // systemUser.setUsername(systemUser.getMobile()); if(StringUtils.isBlank(systemUser.getMobile()) || StringUtils.isBlank(systemUser.getCaptcha())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(!debugModel){ SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,systemUser.getMobile(),systemUser.getCaptcha()); } SystemUser queryUserDto = new SystemUser(); queryUserDto.setUsername(systemUser.getUsername()); queryUserDto.setDeleted(Boolean.FALSE); queryUserDto.setType(Constants.ZERO); SystemUser user = systemUserService.findOne(queryUserDto); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在"); } // 验证工号 if (StringUtils.isNotBlank(systemUser.getEmpNo())) { // 验证手机号 if (StringUtils.isNotBlank(systemUser.getMobile())) { queryUserDto = new SystemUser(); queryUserDto.setDeleted(Boolean.FALSE); queryUserDto.setEmpNo(systemUser.getEmpNo()); queryUserDto.setEmpNo(systemUser.getMobile()); user = systemUserService.findOne(queryUserDto); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在"); } } // 生成密码盐 @@ -132,6 +147,10 @@ // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt)); systemUser.setSalt(salt); LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); systemUser.setType(loginUserInfo.getType()); systemUser.setStatus(Constants.ZERO); systemUser.setCompanyId(loginUserInfo.getCompanyId()); Integer userId = systemUserService.create(systemUser); // 设置部门 if (systemUser.getDepartmentId() != null) { @@ -152,17 +171,7 @@ systemDepartmentUser.setOperaTime(new Date()); systemDepartmentUserService.create(systemDepartmentUser); } // 设置岗位 // if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { // for (Integer positionId : systemUser.getPositionIds()) { // SystemPositionUser systemPositionUser = new SystemPositionUser(); // systemPositionUser.setPositionId(positionId); // systemPositionUser.setUserId(userId); // systemPositionUser.setOperaUser(systemUser.getCreateUser()); // systemPositionUser.setOperaTime(new Date()); // systemPositionUserService.create(systemPositionUser); // } // } } @Override @@ -181,15 +190,30 @@ } // 验证工号 if (StringUtils.isNotBlank(systemUser.getEmpNo())) { if (StringUtils.isNotBlank(systemUser.getMobile())) { queryUserDto = new SystemUser(); queryUserDto.setEmpNo(systemUser.getEmpNo()); queryUserDto.setEmpNo(systemUser.getMobile()); queryUserDto.setDeleted(Boolean.FALSE); user = systemUserService.findOne(queryUserDto); if (user != null && !user.getId().equals(systemUser.getId())) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在"); } user = systemUserService.findById(systemUser.getId()); if(user == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,用户信息不存在!"); } if(!StringUtils.equals(systemUser.getMobile(),user.getMobile())){ //如果手机号发生变化验证验证码 if(StringUtils.isBlank(systemUser.getMobile()) || StringUtils.isBlank(systemUser.getCaptcha())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"短信验证码不能为空!"); } if(!debugModel){ SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,systemUser.getMobile(),systemUser.getCaptcha()); } } } systemUser.setType(null);//不支持修改 systemUser.setCompanyId(null);//不支持修改 // 修改用户 systemUserService.updateById(systemUser); // 设置部门 @@ -204,20 +228,7 @@ systemDepartmentUser.setOperaTime(new Date()); systemDepartmentUserService.create(systemDepartmentUser); } // 设置岗位 /* SystemPositionUser deletePositionDto = new SystemPositionUser(); deletePositionDto.setUserId(systemUser.getId()); systemPositionUserService.delete(deletePositionDto); if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { for (Integer positionId : systemUser.getPositionIds()) { SystemPositionUser systemPositionUser = new SystemPositionUser(); systemPositionUser.setPositionId(positionId); systemPositionUser.setUserId(systemUser.getId()); systemPositionUser.setOperaUser(systemUser.getUpdateUser()); systemPositionUser.setOperaTime(new Date()); systemPositionUserService.create(systemPositionUser); } }*/ } @Override server/service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
@@ -20,4 +20,8 @@ interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } @Bean public EasySqlInjector sqlInjector() { return new EasySqlInjector(); } } server/service/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -20,7 +20,7 @@ @ApiModel("附件上传信息表") @TableName("`multifile`") public class Multifile { @TableId(type = IdType.AUTO) @ApiModelProperty(value = "主键", example = "1") @ExcelColumn(name="主键") private Integer id; server/service/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java
@@ -23,4 +23,6 @@ @ApiModelProperty(value = "子账号节点") private String sonUserId; @ApiModelProperty(value = "短信验证码") private String captcha; } server/service/src/main/java/com/doumee/service/business/CompanyService.java
@@ -97,6 +97,8 @@ long count(Company company); void startSignAuth(Integer id); void startSignAuthAuto( ); void dealSignAuthStatus(); void dealSignIdStatus(); server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -268,6 +268,11 @@ multifileList.add(initMultiFileByCompay(company,company.getSignImg(),Constants.MultiFile.COM_SING_IMG.getKey())); objList.add(Constants.MultiFile.COM_SING_IMG.getKey()); company.setSignIdStatus(Constants.ZERO);//标记电子签章未上传 if(StringUtils.isNotBlank(company.getSignId())){ //删除现有的签章 signService.deleteEntSign(company.getSignId()); } company.setSignId(""); } if(company.getIdcardImgList()!=null && company.getIdcardImgList()!=null){ for(Multifile f : company.getIdcardImgList()){ @@ -405,7 +410,9 @@ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该企业【名称】【统一信用代码或者【企业账号】已存在,请确认后重新提交!"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(model.getSignIdStatus(),Constants.ONE)){ company.setSignId(model.getSignId()); } dealFileDataForUpdate(company); Company update = new Company(); @@ -423,7 +430,10 @@ update.setInvoiceAddr(company.getInvoiceAddr()); update.setSignIdStatus(company.getSignIdStatus()); update.setInvoiceEmail(company.getInvoiceEmail()); if(StringUtils.isNotBlank(company.getEmail())){ if(StringUtils.isNotBlank(company.getEmail()) ||!StringUtils.equals(company.getName(),model.getName()) ||!StringUtils.equals(company.getLegalName(),model.getLegalName()) ||!StringUtils.equals(company.getCode(),model.getCode()) ){ //如果邮箱发生改变 update.setSignStatus(Constants.ZERO); } @@ -524,6 +534,33 @@ //更新认证状态 companyMapper.updateById(update); } @Override public void startSignAuthAuto( ){ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda() .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getSignStatus,Constants.ZERO)); if(companyList!=null && companyList.size()>0) { for (Company company : companyList) { Multifile f = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda() .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.COM_BUSINESS_LICENSE.getKey()) .eq(Multifile::getObjId,company.getId()) .last("limit 1")); if(f == null){ return; } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); boolean status = signService.organizationCreate(company.getName(),company.getCode(),company.getLegalName(),company.getEmail(), path + f.getFileurl(),null); Company update = new Company(); update.setId(company.getId()); update.setSignStatus(status?Constants.ONE:Constants.TWO); update.setSignDate(new Date()); //更新认证状态 companyMapper.updateById(update); } } } /** * 电子签认证 * public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File businessimg,String notifyUrl){ @@ -553,7 +590,6 @@ //更新认证状态 companyMapper.updateById(update); } } } @@ -567,7 +603,7 @@ public void dealSignIdStatus(){ List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda() .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getSignStatus,Constants.ONE) .eq(Company::getSignStatus,Constants.THREE) .eq(Company::getSignIdStatus,Constants.ZERO)); if(companyList!=null && companyList.size()>0){ for(Company company :companyList){ @@ -600,12 +636,32 @@ } // @Override // public List<Company> findList(Company company) { // QueryWrapper<Company> wrapper = new QueryWrapper<>(company); // return companyMapper.selectList(wrapper); // } // @Override public List<Company> findList(Company company) { QueryWrapper<Company> wrapper = new QueryWrapper<>(company); company.setIsdeleted(Constants.ZERO); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(company.getQueryFlag() == 0){ //只能看权限范围内 if(user.getCompanyIdList() == null || user.getCompanyIdList().size() == 0){ wrapper.lambda().eq(Company::getId,-1);//设置无效访问 }else { wrapper.lambda().in(Company::getId, user.getCompanyIdList()); } // queryWrapper.exists("select b.id from company_permission b where b.user_id="+user.getId()+" and b.isdeleted=0 and b.company_id=company.id"); } else if (company.getQueryFlag() == 1) { //查詢是否有查看權限 wrapper.select("*,(select count(1) from company_permission b where b.user_id="+user.getId()+" and b.isdeleted=0 and b.company_id=company.id) as hasPerimission"); } return companyMapper.selectList(wrapper); } @Override public PageData<Company> findPage(PageWrap<Company> pageWrap) { IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); server/service/src/main/java/com/doumee/service/business/third/SignService.java
@@ -83,11 +83,11 @@ } public void initParams(){ long ts=System.currentTimeMillis(); long ts=System.currentTimeMillis()/1000; String nonce=DigestUtils.md5Hex(System.currentTimeMillis()+""); String sign=DigestUtils.sha256Hex("nonce"+nonce+"ts"+ts+"app_key"+APP_KEY+"app_secret"+APP_SECRET); bodyParams=new IdentityHashMap<>(); bodyParams.put("ts",ts); bodyParams.put("ts",System.currentTimeMillis()/1000); bodyParams.put("app_key",APP_KEY); bodyParams.put("sign",sign); bodyParams.put("nonce",nonce);//这只只是为了生成一个随机值 @@ -125,6 +125,7 @@ */ public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,String businessimgPath, String notifyUrl){ try { initParams(); File businessimg =netFileToLoclFile(businessimgPath); if(businessimg == null || !businessimg.isFile() || !businessimg.exists()){ return false; @@ -166,10 +167,12 @@ */ public boolean organizationReApply(String fullname,String creditCode,String legalName,String email,String businessimgPath,String notifyUrl){ try { File businessimg = new File(new URI(businessimgPath)); if(businessimg == null|| !businessimg.isFile() || !businessimg.exists()){ return false ; } initParams(); Map<String, Object> params=bodyParams; String url=SERVICE_URL+"/v2/user/organizationReapply"; params.put("name",fullname); @@ -230,6 +233,7 @@ */ public int organizationAuditStatus (String email){ try { initParams(); Map<String, Object> params=bodyParams; String url=SERVICE_URL+"/v2/user/organizationAuditStatus"; params.put("emailOrMobile",email); @@ -257,6 +261,7 @@ */ public String applySign(String name,String fileUrl,String fullname,String creditCoe,String email,String postionJson,String singId,String notifyUrl){ try { initParams(); String url=SERVICE_URL+"/v2/sign/applySign"; Map<String, Object> params=bodyParams; params.put("contractName",name); //合同名称 @@ -305,7 +310,7 @@ * @param postionJson */ public String applySignLocalFile(String name,String fullname,String file,String creditCoe,String email,String postionJson,String singId,String notifyUrl){ try { try { initParams(); String url=SERVICE_URL+"/v2/sign/applySign"; Map<String, Object> params=bodyParams; params.put("contractName",name); //合同名称 @@ -352,7 +357,7 @@ * @param creditCode */ public String signLink(String applyNo,String name,String creditCode) { try { try { initParams(); Map<String, Object> params = bodyParams; String url = SERVICE_URL + "/v2/sign/link"; params.put("applyNo",applyNo); //发起合同签署接口返回的APL编号 @@ -377,7 +382,7 @@ */ public String linkFile(String applyNo) { try { try { initParams(); Map<String, Object> params = bodyParams; String url = SERVICE_URL + "/v2/sign/linkFile"; //构建请求参数 @@ -401,8 +406,8 @@ */ public String uploadEntSign(String signName,String path,String email ) { try { File signImgFile = new File(new URI(path)); try { initParams(); File signImgFile =netFileToLoclFile(path); Map<String, Object> params = bodyParams; String url = SERVICE_URL + "/v2/user/uploadEntSign"; //构建请求参数 @@ -427,7 +432,7 @@ */ public boolean deleteEntSign(String signId ) { try { try { initParams(); Map<String, Object> params = bodyParams; String url = SERVICE_URL + "/v2/user/deleteEntSign"; //构建请求参数