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.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.Collection; import java.util.List; /** * 企业信息Service业务层处理 * * @author manton */ @Service @RequiredArgsConstructor(onConstructor_ = @Autowired) public class SysCompanyServiceImpl extends ServiceImpl implements ISysCompanyService { private final ISysUserService userService; @Override//列表查询 public List queryList(SysCompanyQueryBo bo) { QueryWrapper qw = getQw(bo); List list = this.list(qw); return Convert.toList(SysCompanyVo.class , list); } @Override//id查询 public SysCompanyVo queryById(Long companyId) { SysCompany db = this.baseMapper.selectById(companyId); return Convert.convert(SysCompanyVo.class , db); } @Override//添加 @Transactional public Boolean insertByBo(SysCompanyBo bo) { SysCompany add = Convert.convert(SysCompany.class, bo); 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); 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); } @Override//删除 @Transactional public Boolean deleteByIds(Collection 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 list) { if (list==null || list.size()<1){ throw new BaseException("未获取到导入信息"); } List companies = Convert.toList(SysCompany.class, list); companies.forEach(e-> validEntityBeforeSave(e,1)); boolean b = this.saveOrUpdateBatch(companies); companies.forEach(this::addCompanyUser); return b; } //------------------------------------------------------------------------------------- /** * 保存前校验 * @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())); } } if (isImport==1){ entity.setCheckStatus(2); } } /** * 添加企业用户 * @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 getQw(SysCompanyQueryBo bo) { QueryWrapper qw = Wrappers.query(); qw.like(StringUtils.isNotEmpty(bo.getCompanyName()), "company_name", bo.getCompanyName()); qw.eq(StringUtils.isNotEmpty(bo.getCompanyCode()), "company_code", bo.getCompanyCode()); qw.eq(StringUtils.isNotEmpty(bo.getCompanyUser()), "company_user", bo.getCompanyUser()); qw.eq(StringUtils.isNotEmpty(bo.getCompanyPhone()), "company_phone", bo.getCompanyPhone()); qw.eq(StringUtils.isNotEmpty(bo.getCompanyAddress()), "company_address", bo.getCompanyAddress()); qw.eq(StringUtils.isNotEmpty(bo.getCompanyImg()), "company_img", bo.getCompanyImg()); qw.eq(bo.getCompanyStatus() != null, "company_status", bo.getCompanyStatus()); qw.eq(StringUtils.isNotEmpty(bo.getRegionCode()), "region_code", bo.getRegionCode()); qw.like(StringUtils.isNotEmpty(bo.getRegionName()), "region_name", bo.getRegionName()); qw.eq(bo.getCheckStatus() != null, "check_status", bo.getCheckStatus()); qw.eq(bo.getSortNum() != null, "sort_num", bo.getSortNum()); if (StringUtils.isNotEmpty(bo.getIsAsc()) && StringUtils.isNotEmpty(bo.getOrderByColumn())){ if ("acs".equals(bo.getIsAsc())) { qw.orderByAsc(bo.getOrderByColumn()); } else if ("desc".equals(bo.getIsAsc())) { qw.orderByDesc(bo.getOrderByColumn()); } } return qw; } }