ZQN
2024-06-17 3a2b86071fca71b4c789762ccb2dfaf7423b0c07
project-system/src/main/java/com/project/system/service/impl/SysCompanyServiceImpl.java
@@ -1,13 +1,18 @@
package com.project.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.project.common.constant.UserConstants;
import com.project.common.core.domain.entity.SysUser;
import com.project.common.exception.base.BaseException;
import com.project.common.utils.SecurityUtils;
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.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.transaction.annotation.Transactional;
import com.project.system.domain.vo.SysCompanyVo;
@@ -29,7 +34,7 @@
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class SysCompanyServiceImpl extends ServiceImpl<SysCompanyMapper, SysCompany> implements ISysCompanyService {
    private final ISysUserService userService;
    @Override//列表查询
    public List<SysCompanyVo> queryList(SysCompanyQueryBo bo)
@@ -52,16 +57,26 @@
    public Boolean insertByBo(SysCompanyBo bo)
    {
        SysCompany add = Convert.convert(SysCompany.class, bo);
        validEntityBeforeSave(add);
        return this.save(add);
        validEntityBeforeSave(add, 0);
        boolean save = this.save(add);
        addCompanyUser(add);
        return save;
    }
    @Override//修改
    @Transactional
    public Boolean updateByBo(SysCompanyBo bo)
    {
        SysCompany old = this.getById(bo.getCompanyId());
        SysCompany update = Convert.convert(SysCompany.class, bo);
        validEntityBeforeSave(update);
        if (!old.getCompanyPhone().equals(update.getCompanyPhone())){
            boolean delUser = delCompanyUser(old.getCompanyId());
            if (!delUser) {
                throw new BaseException("原企业用户清除失败,请联系管理员!");
            }
            this.addCompanyUser(update);
        }
        validEntityBeforeSave(update, 0);
        return this.updateById(update);
    }
@@ -69,22 +84,136 @@
    @Transactional
    public Boolean deleteByIds(Collection<Long> ids)
    {
        //做一些业务上的校验,判断是否需要校验
        for (Long id : ids) {
            boolean b = delCompanyUser(id);
            if (!b) {
                throw new BaseException(String.format("原企业 %1$s 用户清除失败,请联系管理员!", id));
            }
        }
        return this.removeByIds(ids);
    }
    @Override//导入
    @Transactional
    public Boolean importList(List<SysCompanyVo> list)
    {
        if (list==null || list.size()<1){
            throw new BaseException("未获取到导入信息");
        }
        List<SysCompany> companies = Convert.toList(SysCompany.class, list);
        companies.forEach(e-> validEntityBeforeSave(e,1));
        boolean b = this.saveOrUpdateBatch(companies);
        companies.forEach(this::addCompanyUser);
        return b;
    }
//-------------------------------------------------------------------------------------
    //保存前校验
    private void validEntityBeforeSave(SysCompany entity)
    /**
     * 保存前校验
     * @param entity    参数
     * @param isImport  是否导入:0否,1是
     */
    private void validEntityBeforeSave(SysCompany entity, int isImport)
    {
        //做一些数据校验,如唯一约束
        if (isImport!=1){
            if (StringUtils.isEmpty(entity.getCompanyImg())){
                throw new BaseException(String.format("%1$s,请上传营业执照", entity.getCompanyName()));
            }
        }
        if (StringUtils.isEmpty(entity.getCompanyCode())){
            throw new BaseException(String.format("%1$s,请填写企业社会编码!", entity.getCompanyName()));
        }
        if (StringUtils.isEmpty(entity.getCompanyUser())){
            throw new BaseException(String.format("%1$s,请填写企业联系人!", entity.getCompanyName()));
        }
        if (StringUtils.isEmpty(entity.getCompanyPhone())){
            throw new BaseException(String.format("%1$s,请填写企业联系人电话!", entity.getCompanyName()));
        }
        if (StringUtils.isEmpty(entity.getCompanyName())){
            throw new BaseException("请填写企业名!");
        }
        if (entity.getCompanyId()==null){ //新增
            int codeCount = this.count(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()));
            if (codeCount>0){
                throw new BaseException(String.format("%1$s,企业社会编码已存在!", entity.getCompanyName()));
            }
            int nameCount = this.count(lq().eq(SysCompany::getCompanyName, entity.getCompanyName()));
            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()));
            }
        } else {
            int codeCount = this.count(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()).ne(SysCompany::getCompanyId,entity.getCompanyId()));
            if (codeCount>0){
                throw new BaseException(String.format("%1$s,企业社会编码已存在!", entity.getCompanyName()));
            }
            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()));
            }
        }
    }
    //获取查询参数
    /**
     * 添加企业用户
     * @param entity    企业信息
     */
    @Async
    protected void addCompanyUser(SysCompany entity)
    {
        SysUser user = new SysUser();
        SysCompany one = this.getOne(lq().eq(SysCompany::getCompanyCode, entity.getCompanyCode()));
        String phone = entity.getCompanyPhone();
        user.setPhonenumber(phone);
        user.setUserName(entity.getCompanyUser());
        user.setPassword(phone);
        user.setDeptId(one.getCompanyId());
        user.setUserType("02");
        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
        {
            return;
        }
        else if (StringUtils.isNotEmpty(user.getPhonenumber())
                && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
        {
            return;
        }
        else if (StringUtils.isNotEmpty(user.getEmail())
                && UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user)))
        {
            return;
        }
        user.setCreateBy(SecurityUtils.getUsername());
        user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
        user.setRecommendUser(user.getPassword());
        userService.insertUser(user);
    }
    /**
     * 删除企业用户
     * @param companyId    企业id
     */
    protected boolean delCompanyUser(Long companyId)
    {
        return userService.deleteUserByDeptId(companyId)>0;
    }
    /**
     * 获取查询参数
     * @param bo    参数
     * @return  查询参数
     */
    private QueryWrapper<SysCompany> getQw(SysCompanyQueryBo bo)
    {
        QueryWrapper<SysCompany> qw = Wrappers.query();