ZQN
2024-08-14 f6a1bf1d9b19dd8b3750034048f3876d086db1f1
project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
@@ -1,28 +1,29 @@
package com.project.system.service.impl;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.project.common.constant.UserConstants;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.core.domain.model.ImportError;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.SecurityUtils;
import com.project.common.utils.StringUtils;
import com.project.common.utils.file.ImageUtils;
import com.project.system.domain.SysCompany;
import com.project.system.domain.bo.editBo.SysCompanyBo;
import com.project.system.domain.bo.queryBo.SysCompanyQueryBo;
import com.project.system.domain.vo.SysCompanyResultVo;
import com.project.system.domain.vo.SysCompanyVo;
import com.project.system.mapper.SysCompanyMapper;
import com.project.system.service.ISysCompanyService;
import com.project.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import cn.hutool.core.convert.Convert;
import com.project.common.utils.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.transaction.annotation.Transactional;
import com.project.system.domain.vo.SysCompanyVo;
import com.project.system.domain.bo.editBo.SysCompanyBo;
import com.project.system.domain.bo.queryBo.SysCompanyQueryBo;
import com.project.system.domain.SysCompany;
import com.project.system.mapper.SysCompanyMapper;
import com.project.system.service.ISysCompanyService;
import java.util.ArrayList;
import java.util.Collection;
@@ -51,6 +52,11 @@
    public SysCompanyVo queryById(Long companyId)
    {
        SysCompany db = this.baseMapper.selectById(companyId);
        if (StringUtils.isEmpty(db.getQrcodeImg())){
            String qrcode = ImageUtils.createQrcode(db.getCompanyCode(), db.getCompanyName(), "2");
            db.setQrcodeImg(qrcode);
            this.updateById(db);
        }
        return Convert.convert(SysCompanyVo.class , db);
    }
@@ -60,9 +66,15 @@
    public Boolean insertByBo(SysCompanyBo bo)
    {
        SysCompany add = Convert.convert(SysCompany.class, bo);
        add.setCompanyStatus(1);
        validEntityBeforeSave(add);
        String qrcode = ImageUtils.createQrcode(add.getCompanyCode(), add.getCompanyName(), "2");
        add.setQrcodeImg(qrcode);
        boolean save = this.save(add);
        addCompanyUser(add, 0);
        if (isAddUser(bo.getCompanyPhone())){
            addCompanyUser(add, 0);
        }
        return save;
    }
@@ -72,14 +84,18 @@
    {
        SysCompany old = this.getById(bo.getCompanyId());
        SysCompany update = Convert.convert(SysCompany.class, bo);
        if (!old.getCompanyPhone().equals(update.getCompanyPhone())){
            boolean delUser = delCompanyUser(old.getCompanyId());
            if (!delUser) {
                throw new BaseException("原企业用户清除失败,请联系管理员!");
            }
            this.addCompanyUser(update, 0);
        }
        validEntityBeforeSave(update);
        if (!old.getCompanyPhone().equals(update.getCompanyPhone())){
            if (this.count(SysCompany::getCompanyPhone, old.getCompanyPhone())==1){
                boolean delUser = delCompanyUser(old.getCompanyPhone());
                if (!delUser) {
                    throw new BaseException("原企业用户清除失败,请联系管理员!");
                }
            }
            if (isAddUser(update.getCompanyPhone())){
                addCompanyUser(update, update.getCompanyStatus()==0 ? 1 : 0);
            }
        }
        return this.updateById(update);
    }
@@ -101,7 +117,7 @@
    public Boolean deleteByIds(Collection<Long> ids)
    {
        for (Long id : ids) {
            boolean b = delCompanyUser(id);
            boolean b = delCompanyUser(this.getById(id).getCompanyPhone());
            if (!b) {
                throw new BaseException(String.format("原企业 %1$s 用户清除失败,请联系管理员!", id));
            }
@@ -149,15 +165,22 @@
            }
        });
        List<SysCompany> companies = Convert.toList(SysCompany.class, resultVo.getVoList());
        companies.forEach(e->{
            String qrcode = ImageUtils.createQrcode(e.getCompanyCode(), e.getCompanyName(), "2");
            e.setQrcodeImg(qrcode);
        });
        boolean b = this.saveOrUpdateBatch(companies);
        for (SysCompany company : companies) {
            addCompanyUser(company,1);
            if (isAddUser(company.getCompanyPhone())){
                addCompanyUser(company,1);
            }
        }
        return b;
    }
//-------------------------------------------------------------------------------------
    /**
     * 保存前校验
@@ -166,6 +189,7 @@
    private void validEntityBeforeSave(SysCompany entity)
    {
        entity.setIsImport(0);
        if (StringUtils.isEmpty(entity.getCompanyImg())){
            throw new BaseException(String.format("%1$s,请上传营业执照", entity.getCompanyName()));
        }
@@ -193,10 +217,8 @@
            if (nameCount>0){
                throw new BaseException(String.format("%1$s,企业名已存在!", entity.getCompanyName()));
            }
            int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()));
            if (phoneCount>0){
                throw new BaseException(String.format("%1$s,企业联系电话已存在!", entity.getCompanyName()));
            }
            SysUser user = new SysUser();
            user.setPhonenumber(entity.getCompanyPhone());
        } else {
            int codeCount = this.count(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
            if (codeCount>0){
@@ -205,10 +227,6 @@
            int nameCount = this.count(lq().eq(SysCompany::getCompanyName, entity.getCompanyName()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
            if (nameCount>0){
                throw new BaseException(String.format("%1$s,企业名已存在!", entity.getCompanyName()));
            }
            int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
            if (phoneCount>0){
                throw new BaseException(String.format("%1$s,企业联系电话已存在!", entity.getCompanyName()));
            }
        }
    }
@@ -228,6 +246,10 @@
        }
        if (StringUtils.isEmpty(entity.getCompanyPhone())){
            errorList.add(new ImportError(3, "请填写企业联系人电话!"));
        } else {
            if (entity.getCompanyPhone().length()!=11){
                errorList.add(new ImportError(3, "请填写正确手机号!"));
            }
        }
        if (StringUtils.isEmpty(entity.getCompanyAddress())){
            errorList.add(new ImportError(4, "请填写企业地址!"));
@@ -240,10 +262,6 @@
        if (nameCount>0){
            errorList.add(new ImportError(0, "企业名已存在!"));
        }
        int phoneCount = this.count(lq().eq(SysCompany::getCompanyPhone, entity.getCompanyPhone()));
        if (phoneCount>0){
            errorList.add(new ImportError(3, "企业联系电话已存在!"));
        }
        entity.setCheckStatus(2);
    }
@@ -252,7 +270,8 @@
     * @param entity    企业信息
     */
    @Async
    protected void addCompanyUser(SysCompany entity, Integer isImport)
    @Override
    public void addCompanyUser(SysCompany entity, Integer isImport)
    {
        SysUser user = new SysUser();
@@ -269,6 +288,7 @@
        user.setPassword(phone);
        user.setDeptId(one.getCompanyId());
        user.setUserType("02");
        user.setRecommendUser(user.getPassword());
        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
        {
            return;
@@ -283,9 +303,7 @@
        {
            return;
        }
        user.setCreateBy(SecurityUtils.getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        user.setRecommendUser(user.getPassword());
        userService.insertUser(user);
    }
@@ -297,11 +315,11 @@
    /**
     * 删除企业用户
     * @param companyId    企业id
     * @param companyPhone    企业id
     */
    protected boolean delCompanyUser(Long companyId)
    protected boolean delCompanyUser(String companyPhone)
    {
        return userService.deleteUserByDeptId(companyId)>0;
        return userService.deleteUserByCompanyPhone(companyPhone)>0;
    }
    /**
@@ -335,4 +353,9 @@
        }
        return qw;
    }
    private Boolean isAddUser(String phone)
    {
       return userService.count(userService.lq().eq(SysUser::getUserName, phone).eq(SysUser::getDelFlag,0))==0;
    }
}