jiangping
2024-01-25 c58316993ee13c6f4dc727f9a052b6ba4e8fff7d
开发业务接口
已修改11个文件
210 ■■■■ 文件已修改
server/dianziqian/src/main/java/com/jzq/JzqHttpApiTest.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/CompanyController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/system/SystemUserController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/task/ScheduleTool.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Multifile.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/system/dto/CreateSystemUserDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/CompanyService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/third/SignService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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";
            //构建请求参数