去掉shiro框架
This commit is contained in:
122
src/main/java/com/label/service/CompanyService.java
Normal file
122
src/main/java/com/label/service/CompanyService.java
Normal file
@@ -0,0 +1,122 @@
|
||||
package com.label.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.label.common.exception.BusinessException;
|
||||
import com.label.common.result.PageResult;
|
||||
import com.label.entity.SysCompany;
|
||||
import com.label.mapper.SysCompanyMapper;
|
||||
import com.label.mapper.SysUserMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CompanyService {
|
||||
|
||||
private final SysCompanyMapper companyMapper;
|
||||
private final SysUserMapper userMapper;
|
||||
|
||||
public PageResult<SysCompany> list(int page, int pageSize, String status) {
|
||||
pageSize = Math.min(pageSize, 100);
|
||||
LambdaQueryWrapper<SysCompany> wrapper = new LambdaQueryWrapper<SysCompany>()
|
||||
.orderByDesc(SysCompany::getCreatedAt);
|
||||
if (status != null && !status.isBlank()) {
|
||||
wrapper.eq(SysCompany::getStatus, status);
|
||||
}
|
||||
|
||||
Page<SysCompany> result = companyMapper.selectPage(new Page<>(page, pageSize), wrapper);
|
||||
return PageResult.of(result.getRecords(), result.getTotal(), page, pageSize);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public SysCompany create(String companyName, String companyCode) {
|
||||
String normalizedName = requireText(companyName, "公司名称不能为空");
|
||||
String normalizedCode = normalizeCode(companyCode);
|
||||
|
||||
ensureUniqueCode(null, normalizedCode);
|
||||
ensureUniqueName(null, normalizedName);
|
||||
|
||||
SysCompany company = new SysCompany();
|
||||
company.setCompanyName(normalizedName);
|
||||
company.setCompanyCode(normalizedCode);
|
||||
company.setStatus("ACTIVE");
|
||||
companyMapper.insert(company);
|
||||
log.info("公司已创建: id={}, code={}", company.getId(), normalizedCode);
|
||||
return company;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public SysCompany update(Long companyId, String companyName, String companyCode) {
|
||||
SysCompany company = getExistingCompany(companyId);
|
||||
String normalizedName = requireText(companyName, "公司名称不能为空");
|
||||
String normalizedCode = normalizeCode(companyCode);
|
||||
|
||||
ensureUniqueCode(companyId, normalizedCode);
|
||||
ensureUniqueName(companyId, normalizedName);
|
||||
|
||||
company.setCompanyName(normalizedName);
|
||||
company.setCompanyCode(normalizedCode);
|
||||
companyMapper.updateById(company);
|
||||
return company;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void updateStatus(Long companyId, String status) {
|
||||
SysCompany company = getExistingCompany(companyId);
|
||||
if (!"ACTIVE".equals(status) && !"DISABLED".equals(status)) {
|
||||
throw new BusinessException("INVALID_COMPANY_STATUS", "公司状态不合法", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
company.setStatus(status);
|
||||
companyMapper.updateById(company);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void delete(Long companyId) {
|
||||
getExistingCompany(companyId);
|
||||
Long userCount = userMapper.countByCompanyId(companyId);
|
||||
if (userCount != null && userCount > 0) {
|
||||
throw new BusinessException("COMPANY_HAS_USERS", "公司下仍存在用户,无法删除", HttpStatus.CONFLICT);
|
||||
}
|
||||
companyMapper.deleteById(companyId);
|
||||
}
|
||||
|
||||
private SysCompany getExistingCompany(Long companyId) {
|
||||
SysCompany company = companyMapper.selectById(companyId);
|
||||
if (company == null) {
|
||||
throw new BusinessException("NOT_FOUND", "公司不存在: " + companyId, HttpStatus.NOT_FOUND);
|
||||
}
|
||||
return company;
|
||||
}
|
||||
|
||||
private void ensureUniqueCode(Long companyId, String companyCode) {
|
||||
SysCompany existing = companyMapper.selectByCompanyCode(companyCode);
|
||||
if (existing != null && !existing.getId().equals(companyId)) {
|
||||
throw new BusinessException("DUPLICATE_COMPANY_CODE", "公司代码已存在", HttpStatus.CONFLICT);
|
||||
}
|
||||
}
|
||||
|
||||
private void ensureUniqueName(Long companyId, String companyName) {
|
||||
SysCompany existing = companyMapper.selectOne(new LambdaQueryWrapper<SysCompany>()
|
||||
.eq(SysCompany::getCompanyName, companyName)
|
||||
.last("LIMIT 1"));
|
||||
if (existing != null && !existing.getId().equals(companyId)) {
|
||||
throw new BusinessException("DUPLICATE_COMPANY_NAME", "公司名称已存在", HttpStatus.CONFLICT);
|
||||
}
|
||||
}
|
||||
|
||||
private String requireText(String text, String message) {
|
||||
if (text == null || text.isBlank()) {
|
||||
throw new BusinessException("INVALID_COMPANY_FIELD", message, HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return text.trim();
|
||||
}
|
||||
|
||||
private String normalizeCode(String companyCode) {
|
||||
return requireText(companyCode, "公司代码不能为空").toUpperCase();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user