feat(adminUser): 支持直销人员区域信息及报价编码生成

- 在 AccountAddRequest 中新增 List<Integer> areaIds 字段以支持区域列表
- 在 AdminUser 实体添加 areaIds 字段,多个区域以逗号分隔保存
- AdminUserController 中设置区域信息,并根据 categoryId 生成唯一报价编码
- 在 AdminUserServiceImpl 中校验直销人员必须选择区域,否则抛出业务异常
- 新增代码逻辑实现区域信息持久化及报价编码生成流程
- 优化查询代码格式,保持一致的代码风格
This commit is contained in:
曹鹏飞 2026-05-13 15:54:25 +08:00
parent 50901bf40e
commit 88f1e8779e
4 changed files with 34 additions and 8 deletions

View File

@ -18,10 +18,7 @@ import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.VUtils;
import com.nflg.mobilebroken.repository.entity.AdminUser;
import com.nflg.mobilebroken.repository.entity.TBaseDepartment;
import com.nflg.mobilebroken.repository.service.IAdminUserService;
import com.nflg.mobilebroken.repository.service.IDictionaryItemTranslateService;
import com.nflg.mobilebroken.repository.service.ITBaseDepartmentService;
import com.nflg.mobilebroken.repository.service.ITBasePositionService;
import com.nflg.mobilebroken.repository.service.*;
import com.nflg.mobilebroken.starter.annotation.MethodInfoMark;
import com.nflg.mobilebroken.starter.service.EmailService;
import lombok.extern.slf4j.Slf4j;
@ -82,6 +79,9 @@ public class AdminUserController extends ControllerBase {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Resource
private IAdminBaseSerialNumberService serialNumberService;
/**
* 获取部门列表
* @return 部门列表
@ -161,11 +161,16 @@ public class AdminUserController extends ControllerBase {
.setGongFuHandler(request.isGongFuHandler())
.setGongfu(StrUtil.contains(request.getProductLine(), Constant.MOBILE_BROKEN))
.setCategoryId(request.getCategoryId())
.setAreaIds(StrUtil.join(",", request.getAreaIds()))
.setUpdateBy(AdminUserUtil.getUserId())
.setUpdateTime(LocalDateTime.now());
if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) {
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
}
if (Objects.nonNull(request.getCategoryId()) && StrUtil.isBlank(user.getQuotationCode())) {
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
user.setQuotationCode(quotationCode);
}
adminUserService.updateById(user);
return ApiResult.success();
}

View File

@ -6,6 +6,7 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class AccountAddRequest {
@ -59,4 +60,9 @@ public class AccountAddRequest {
* 直销类别国内国外字典id
*/
private Long categoryId;
/**
* 区域id列表
*/
private List<Integer> areaIds;
}

View File

@ -144,6 +144,11 @@ public class AdminUser implements Serializable {
*/
private String quotationCode;
/**
* 区域id多个用逗号分隔
*/
private String areaIds;
@Override
public boolean equals(Object o) {

View File

@ -97,6 +97,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.exists()
)
.throwMessage("部门已存在负责人");
VUtils.trueThrowBusinessError(Objects.nonNull(request.getCategoryId()) && CollectionUtil.isEmpty(request.getAreaIds()))
.throwMessage("直销人员需要选择区域");
AdminUser user = lambdaQuery().eq(AdminUser::getLoginName, request.getLoginName()).one();
if (Objects.nonNull(user)) {
VUtils.trueThrowBusinessError(!user.getIsDel())
@ -113,11 +115,15 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.setGongFuHandler(request.isGongFuHandler())
.setGongfu(StrUtil.contains(request.getProductLine(), Constant.MOBILE_BROKEN))
.setCategoryId(request.getCategoryId())
.setAreaIds(StrUtil.join(",", request.getAreaIds()))
.setUpdateBy(AdminUserUtil.getUserId())
.setUpdateTime(LocalDateTime.now());
if (Objects.nonNull(request.getCategoryId()) && StrUtil.isBlank(user.getQuotationCode())) {
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
user.setQuotationCode(quotationCode);
}
updateById(user);
} else {
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
user = new AdminUser()
.setUserCode(request.getUserCode())
.setUserName(request.getUserName())
@ -132,9 +138,13 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.setGongfu(StrUtil.contains(request.getProductLine(), Constant.MOBILE_BROKEN))
.setCategoryId(request.getCategoryId())
.setTitleId(request.getTitleId())
.setQuotationCode(quotationCode)
.setAreaIds(StrUtil.join(",", request.getAreaIds()))
.setCreateBy(AdminUserUtil.getUserId())
.setCreateTime(LocalDateTime.now());
if (Objects.nonNull(request.getCategoryId())) {
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
user.setQuotationCode(quotationCode);
}
save(user);
}
departmentService.lambdaUpdate()
@ -186,8 +196,8 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
.filter(Objects::nonNull)
.collect(Collectors.toList());
List<DictionaryItem> categories = CollectionUtil.isEmpty(categoryIds) ? Collections.emptyList() : dictionaryItemService.lambdaQuery()
.in(DictionaryItem::getId, categoryIds)
.list();
.in(DictionaryItem::getId, categoryIds)
.list();
pageData.setItems(page.getRecords().stream().map(u -> {
AdminUser userCreate = users.stream()
.filter(it -> Objects.equals(it.getId(), u.getCreateBy()))