parent
e3ce76f466
commit
d1062d72f5
|
|
@ -232,6 +232,8 @@ public class AppUserController extends ControllerBase {
|
|||
if (!Objects.equals(user.getState(), UserState.ToBeActivated.getState()) && Objects.nonNull(request.getEnable())) {
|
||||
user.setState(request.getEnable() ? UserState.Activated.getState() : UserState.Disabled.getState());
|
||||
}
|
||||
String quotationCode = appUserService.getAppUserQuotationCode(request.getCompanyIds());
|
||||
user.setQuotationCode(quotationCode);
|
||||
appUserService.updateById(user);
|
||||
}
|
||||
|
||||
|
|
@ -288,6 +290,9 @@ public class AppUserController extends ControllerBase {
|
|||
.in(AppUser::getId, children.stream().map(AppUser::getId).collect(Collectors.toList()))
|
||||
.update();
|
||||
}
|
||||
//更新报价人代码g
|
||||
String quotationCode = appUserService.getAppUserQuotationCode(request.getCompanyIds());
|
||||
user.setQuotationCode(quotationCode);
|
||||
appUserService.updateById(user);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ public class BaseAreaController extends ControllerBase {
|
|||
// ent.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
// ent.setDataModifyTime(LocalDateTime.now());
|
||||
ent.setAreaCode(UniqueSequenceGenerator.generateCode(Constant.AreaCodePrefix));
|
||||
ent.setAreaQuoteCode(baseAreaEditDTO.getAreaQuoteCode());
|
||||
baseAreaService.save(ent);
|
||||
return ApiResult.success(true);
|
||||
|
||||
|
|
@ -108,6 +109,7 @@ public class BaseAreaController extends ControllerBase {
|
|||
oldEnt.setDataModifyUserNo(AdminUserUtil.getUserNo());
|
||||
oldEnt.setDataModifyUserName(AdminUserUtil.getUserName());
|
||||
oldEnt.setDataModifyTime(LocalDateTime.now());
|
||||
oldEnt.setAreaQuoteCode(baseAreaEditDTO.getAreaQuoteCode());
|
||||
baseAreaService.updateById(oldEnt);
|
||||
return ApiResult.success(true);
|
||||
|
||||
|
|
|
|||
|
|
@ -17,4 +17,7 @@ public class BaseAreaEditDTO {
|
|||
|
||||
@NotBlank(message = "区域名称不能为空")
|
||||
private String areaName;
|
||||
|
||||
@NotBlank(message = "区域报价编码不能为空")
|
||||
private String areaQuoteCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,7 @@ public class AdminController extends ControllerBase {
|
|||
.setExtra("name", user.getUserName())
|
||||
.setExtra("code", user.getUserCode())
|
||||
.setExtra("email", user.getEmail())
|
||||
.setExtra("quotationCode", user.getQuotationCode())
|
||||
.setExtra("roles", roleCodes.stream().map(RoleVO::getCode).collect(Collectors.toList()))
|
||||
.setExtra("language", Constant.DEFAULT_LANGUAGE_CODE + "-中文")
|
||||
);
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ public class AdminUserVO {
|
|||
//微信openid
|
||||
private String openId;
|
||||
|
||||
//报价代码
|
||||
private String quotationCode;
|
||||
/**
|
||||
* 产品线,多个用逗号分隔
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -84,6 +84,10 @@ public class TBaseAreaVO implements Serializable {
|
|||
*/
|
||||
private List<TBaseAreaVO> children;
|
||||
|
||||
/**
|
||||
* 报价区域代码
|
||||
*/
|
||||
private String areaQuoteCode;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,10 @@
|
|||
<artifactId>freemarker</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.retry</groupId>
|
||||
<artifactId>spring-retry</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,59 @@
|
|||
package com.nflg.mobilebroken.repository.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("admin_base_serial_number")
|
||||
public class AdminBaseSerialNumber implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 0 管理端的报价人编号;1 代理商的报价人单号
|
||||
*/
|
||||
private Integer businessType;
|
||||
|
||||
/**
|
||||
* 当前时间 YYYYMMDD
|
||||
*/
|
||||
private String currentDateStr;
|
||||
|
||||
/**
|
||||
* 当前最大流水号
|
||||
*/
|
||||
private Integer maxSerial;
|
||||
|
||||
/**
|
||||
* 乐观锁版本号
|
||||
*/
|
||||
private Integer version;
|
||||
|
||||
/**
|
||||
* 前缀
|
||||
*/
|
||||
private String businessPrefixNumber;
|
||||
|
||||
/**
|
||||
* 流水号的长度
|
||||
*/
|
||||
private Integer serialLength;
|
||||
}
|
||||
|
|
@ -132,4 +132,10 @@ public class AdminUser implements Serializable {
|
|||
*/
|
||||
@TableField("is_gongfu")
|
||||
private boolean gongfu;
|
||||
|
||||
/**
|
||||
* 报价人代码
|
||||
*/
|
||||
private String quotationCode;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -151,6 +151,12 @@ public class AppUser implements Serializable {
|
|||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 报价人代码
|
||||
*/
|
||||
private String quotationCode;
|
||||
|
||||
|
||||
/**
|
||||
* 地域类型,字典id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,77 @@
|
|||
package com.nflg.mobilebroken.repository.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
*
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@Accessors(chain = true)
|
||||
@TableName("quotation_model_forbid")
|
||||
public class QuotationModelForbid implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* 禁止机型的流水ID
|
||||
*/
|
||||
private Integer modelId;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Integer userId;
|
||||
|
||||
/**
|
||||
* 用户类型 0 内部用户;1 外部用户
|
||||
*/
|
||||
private Integer userType;
|
||||
|
||||
/**
|
||||
* 是否仅售
|
||||
*/
|
||||
private Boolean isForbid;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 新增人编号
|
||||
*/
|
||||
private Integer createById;
|
||||
|
||||
/**
|
||||
* 修改人编号
|
||||
*/
|
||||
private Integer updateById;
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
|
|||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2025
|
||||
* @since 2026
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -47,7 +47,7 @@ public class TBaseArea implements Serializable {
|
|||
private String areaName;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
* 状态 0-禁用 1-启用
|
||||
*/
|
||||
private Byte areaState;
|
||||
|
||||
|
|
@ -85,4 +85,9 @@ public class TBaseArea implements Serializable {
|
|||
* 是否删除0-否 1-是
|
||||
*/
|
||||
private Integer delIs;
|
||||
|
||||
/**
|
||||
* 报价区域代码
|
||||
*/
|
||||
private String areaQuoteCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.nflg.mobilebroken.repository.mapper;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
public interface AdminBaseSerialNumberMapper extends BaseMapper<AdminBaseSerialNumber> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
package com.nflg.mobilebroken.repository.mapper;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
public interface QuotationModelForbidMapper extends BaseMapper<QuotationModelForbid> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.nflg.mobilebroken.repository.service;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
public interface IAdminBaseSerialNumberService extends IService<AdminBaseSerialNumber> {
|
||||
|
||||
/**
|
||||
* 生成流水号
|
||||
* @param businessType 业务类型
|
||||
* @param prefixNumber 前缀
|
||||
* @param specialNumber 特殊编号
|
||||
* @param hasTimeStr 是否包含时间
|
||||
* @param serialLength 流水号长度
|
||||
* @return 流水号
|
||||
*/
|
||||
String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
|
||||
boolean hasTimeStr, Integer serialLength);
|
||||
}
|
||||
|
|
@ -22,6 +22,14 @@ import java.util.List;
|
|||
*/
|
||||
public interface IAppUserService extends IService<AppUser> {
|
||||
|
||||
/**
|
||||
* 获取用户报价码
|
||||
*
|
||||
* @param companyId 公司id
|
||||
* @return 报价码
|
||||
*/
|
||||
String getAppUserQuotationCode(List<Integer> companyId);
|
||||
|
||||
AppUser getUser(String userName, String password);
|
||||
|
||||
void disable(Integer id);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package com.nflg.mobilebroken.repository.service;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
public interface IQuotationModelForbidService extends IService<QuotationModelForbid> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.nflg.mobilebroken.repository.entity.AdminBaseSerialNumber;
|
||||
import com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IAdminBaseSerialNumberService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.retry.annotation.Backoff;
|
||||
import org.springframework.retry.annotation.Retryable;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
@Service
|
||||
public class AdminBaseSerialNumberServiceImpl extends ServiceImpl<AdminBaseSerialNumberMapper, AdminBaseSerialNumber> implements IAdminBaseSerialNumberService {
|
||||
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||
private static final int MAX_RETRY = 5; // 最大重试次数
|
||||
|
||||
@Retryable(
|
||||
maxAttempts = 5, // 最大重试次数(包括第一次调用)
|
||||
backoff = @Backoff(delay = 1000) // 重试间隔1秒
|
||||
)
|
||||
|
||||
@Override
|
||||
public String generateSerialNumber(Integer businessType, String prefixNumber, String specialNumber,
|
||||
boolean hasTimeStr, Integer serialLength) {
|
||||
String currentDate = "";
|
||||
String serialNo = "";
|
||||
AdminBaseSerialNumber serialNumber = this.lambdaQuery()
|
||||
.eq(AdminBaseSerialNumber::getBusinessType, businessType)
|
||||
.one();
|
||||
if (hasTimeStr) {
|
||||
currentDate = LocalDate.now().format(DATE_FORMATTER);
|
||||
}
|
||||
|
||||
if (Objects.isNull(serialNumber)) {
|
||||
// 插入数据库
|
||||
AdminBaseSerialNumber newModel = new AdminBaseSerialNumber()
|
||||
.setBusinessType(businessType)
|
||||
.setCurrentDateStr(currentDate)
|
||||
.setMaxSerial(1)
|
||||
.setBusinessPrefixNumber(prefixNumber)
|
||||
.setSerialLength(serialLength);
|
||||
this.save(newModel);
|
||||
serialNo = prefixNumber + specialNumber + currentDate + String.format("%0" + serialLength + "d", 1);
|
||||
} else {
|
||||
// 判断是否有时间
|
||||
Integer startSerial = 1;
|
||||
if (hasTimeStr) {
|
||||
if (serialNumber.getCurrentDateStr().equals(currentDate)) {
|
||||
startSerial = serialNumber.getMaxSerial() + 1;
|
||||
}
|
||||
}
|
||||
serialNumber.setSerialLength(serialLength);
|
||||
serialNumber.setMaxSerial(startSerial);
|
||||
serialNumber.setCurrentDateStr(currentDate);
|
||||
this.updateById(serialNumber);
|
||||
serialNo = prefixNumber + specialNumber + currentDate + String.format("%0" + serialLength + "d", startSerial);
|
||||
}
|
||||
return serialNo;
|
||||
}
|
||||
}
|
||||
|
|
@ -67,6 +67,10 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
@Resource
|
||||
private IDictionaryItemTranslateService dictionaryItemTranslateService;
|
||||
|
||||
@Resource
|
||||
private IAdminBaseSerialNumberService serialNumberService;
|
||||
|
||||
|
||||
@Override
|
||||
public AdminUser getUser(String userName, String password) {
|
||||
AdminUser user = lambdaQuery()
|
||||
|
|
@ -103,6 +107,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
.setUpdateTime(LocalDateTime.now());
|
||||
updateById(user);
|
||||
} else {
|
||||
String quotationCode = serialNumberService.generateSerialNumber(0, "NF", "", false, 6);
|
||||
user = new AdminUser()
|
||||
.setUserCode(request.getUserCode())
|
||||
.setUserName(request.getUserName())
|
||||
|
|
@ -116,6 +121,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
.setGongFuHandler(request.isGongFuHandler())
|
||||
.setGongfu(StrUtil.contains(request.getProductLine(), Constant.MOBILE_BROKEN))
|
||||
.setTitleId(request.getTitleId())
|
||||
.setQuotationCode(quotationCode)
|
||||
.setCreateBy(AdminUserUtil.getUserId())
|
||||
.setCreateTime(LocalDateTime.now());
|
||||
save(user);
|
||||
|
|
@ -204,6 +210,7 @@ public class AdminUserServiceImpl extends ServiceImpl<AdminUserMapper, AdminUser
|
|||
.setGongFuHandler(u.isGongFuHandler())
|
||||
.setProductLine(u.getProductLine())
|
||||
.setGongfu(u.isGongfu())
|
||||
.setQuotationCode(u.getQuotationCode())
|
||||
.setRoles(
|
||||
roles.stream()
|
||||
.filter(r -> rmaps.contains(r.getId()))
|
||||
|
|
|
|||
|
|
@ -22,13 +22,11 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
|||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.ttzero.excel.util.StringUtil;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -202,6 +200,9 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
|||
if (applyfor.getType() == AppUserApplyforType.ADD.getState().byteValue()) {
|
||||
//新增账号
|
||||
AppUser appUser = appUserService.getById(applyfor.getCreateBy());
|
||||
List<Integer> companyIds = new ArrayList<>();
|
||||
companyIds.add(applyfor.getCompanyId());
|
||||
String quoationCode = appUserService.getAppUserQuotationCode(companyIds);
|
||||
AppUser user = new AppUser()
|
||||
.setLoginName(applyfor.getUserEmail())
|
||||
.setName(applyfor.getUserName())
|
||||
|
|
@ -221,12 +222,21 @@ public class AppUserApplyforServiceImpl extends ServiceImpl<AppUserApplyforMappe
|
|||
.setCreateBy(appUser.getName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setExpireTime(appUser.getExpireTime())
|
||||
.setQuotationCode(quoationCode)
|
||||
.setSalesUserName(appUser.getSalesUserName());
|
||||
appUserService.save(user);
|
||||
} else if (applyfor.getType() == AppUserApplyforType.ENABLE.getState().byteValue()) {
|
||||
//账号启用
|
||||
AppUser appUser = appUserService.getById(applyfor.getUserId());
|
||||
AppUser applyUser = appUserService.getById(applyfor.getCreateBy());
|
||||
|
||||
if(StringUtil.isNotBlank(appUser.getCompanyId())) {
|
||||
Set<Integer> companyIds = Arrays.stream(appUser.getCompanyId().split(","))
|
||||
.map(Integer::parseInt)
|
||||
.collect(Collectors.toSet());
|
||||
String quoationCode = appUserService.getAppUserQuotationCode(new ArrayList<>(companyIds));
|
||||
appUser.setQuotationCode(quoationCode);
|
||||
}
|
||||
appUser.setState(UserState.Activated.getState())
|
||||
.setUpdateBy(applyUser.getName())
|
||||
.setUpdateTime(LocalDateTime.now());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
|
@ -30,6 +31,7 @@ import java.time.LocalDate;
|
|||
import java.time.LocalDateTime;
|
||||
import java.time.chrono.ChronoLocalDate;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -71,6 +73,101 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
@Resource
|
||||
private ITBaseAreaService baseAreaService;
|
||||
|
||||
@Resource
|
||||
private IAdminBaseSerialNumberService adminBaseSerialNumberService;
|
||||
|
||||
@Override
|
||||
public String getAppUserQuotationCode(List<Integer> companyId) {
|
||||
if (CollectionUtil.isEmpty(companyId))
|
||||
return "";
|
||||
// 根据公司ID查询公司的区域信息
|
||||
List<TBaseCustomer> customers = customerService.lambdaQuery()
|
||||
.in(TBaseCustomer::getId, companyId)
|
||||
.eq(TBaseCustomer::getQuotationUse, true)
|
||||
.list();
|
||||
if (CollectionUtil.isEmpty(customers)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// 获取到公司的区域代码
|
||||
List<String> areaCodes = customers.stream()
|
||||
.map(TBaseCustomer::getAreaCode)
|
||||
.collect(Collectors.toList());
|
||||
Set<String> uniqueAreaCodes = areaCodes.stream()
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.flatMap(code -> Arrays.stream(code.split(",")))
|
||||
.filter(StrUtil::isNotBlank)
|
||||
.collect(Collectors.toSet());
|
||||
VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(uniqueAreaCodes)).throwMessage("存在未维护区域信息的代理公司,请先维护区域信息");
|
||||
String specialCode = "";
|
||||
List<TBaseArea> areas = adminAreaService.lambdaQuery()
|
||||
.in(TBaseArea::getAreaCode, uniqueAreaCodes)
|
||||
.list();
|
||||
VUtils.trueThrowBusinessError(CollectionUtil.isEmpty(areas)).throwMessage("代理公司的区域信息维护有误,请先维护区域信息");
|
||||
// for (TBaseArea area : areas) {
|
||||
// VUtils.trueThrowBusinessError(StrUtil.isBlank(area.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
|
||||
// specialCode += "-" + area.getAreaQuoteCode();
|
||||
// }
|
||||
// 如果是只有一个公司或区域,就返回区域报价代码
|
||||
if (areas.size() == 1) {
|
||||
VUtils.trueThrowBusinessError(StrUtil.isBlank(areas.get(0).getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
|
||||
specialCode = areas.get(0).getAreaQuoteCode();
|
||||
}
|
||||
// 如果存在多个公司或区域,需要查询上级
|
||||
Set<Integer> parentIds = areas.stream()
|
||||
.map(TBaseArea::getParentAreaRowId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
List<TBaseArea> parentAreas = adminAreaService.lambdaQuery()
|
||||
.in(TBaseArea::getId, parentIds)
|
||||
.list();
|
||||
// 如果只有一个上级,就返回上级报价代码
|
||||
if (parentAreas.size() == 1) {
|
||||
VUtils.trueThrowBusinessError(StrUtil.isBlank(parentAreas.get(0).getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
|
||||
specialCode = parentAreas.get(0).getAreaQuoteCode();
|
||||
} else {
|
||||
// 多个上级,区别处理,合并相同上级的,单独列出一个上级的
|
||||
Map<Integer, Long> parentCountMap = areas.stream()
|
||||
.map(TBaseArea::getParentAreaRowId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.groupingBy(
|
||||
Function.identity(),
|
||||
Collectors.counting()
|
||||
));
|
||||
Set<Integer> parentIds2 = parentCountMap.entrySet().stream()
|
||||
.filter(entry -> entry.getValue() > 2) // 出现次数大于2
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
for (Integer parentId : parentIds2) {
|
||||
TBaseArea parentArea = parentAreas.stream()
|
||||
.filter(area -> area.getId().equals(parentId))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
VUtils.trueThrowBusinessError(ObjectUtil.isNull(parentArea) || StrUtil.isBlank(parentArea.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
|
||||
specialCode += "-" + parentArea.getAreaQuoteCode();
|
||||
}
|
||||
|
||||
Set<Integer> parentIds1 = parentCountMap.entrySet().stream()
|
||||
.filter(entry -> entry.getValue() == 1) // 出现次数=1
|
||||
.map(Map.Entry::getKey)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<TBaseArea> parentAreas1 = areas.stream()
|
||||
.filter(area -> parentIds1.contains(area.getParentAreaRowId()))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
for (TBaseArea baseArea : parentAreas1) {
|
||||
VUtils.trueThrowBusinessError(StrUtil.isBlank(baseArea.getAreaQuoteCode())).throwMessage("区域报价代码没有维护,请先维护");
|
||||
specialCode += "-" + baseArea.getAreaQuoteCode();
|
||||
}
|
||||
}
|
||||
|
||||
String code = adminBaseSerialNumberService.generateSerialNumber(1, "", specialCode, false, 6);
|
||||
return code;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AppUser getUser(String userName, String password) {
|
||||
AppUser user = lambdaQuery()
|
||||
|
|
@ -157,6 +254,8 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
}
|
||||
String encodePassword = PASSWORDENCODER.encode(request.getPassword());
|
||||
AppUser user = lambdaQuery().eq(AppUser::getLoginName, request.getLoginName()).one();
|
||||
String quotationCode = getAppUserQuotationCode(request.getCompanyIds());
|
||||
|
||||
if (Objects.nonNull(user)) {
|
||||
VUtils.trueThrowBusinessError(!user.getIsDel()).throwMessage("登录名已存在");
|
||||
user.setIsDel(false)
|
||||
|
|
@ -175,9 +274,11 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
.setDepartmentId(request.getDepartmentId())
|
||||
.setRegionTypeId(request.getRegionTypeId())
|
||||
.setState(UserState.ToBeActivated.getState())
|
||||
.setQuotationCode(quotationCode)
|
||||
.setExpireTime(LocalDate.of(LocalDateTime.now().getYear() + 1, 1, 1));
|
||||
updateById(user);
|
||||
} else {
|
||||
// String quotationCode = adminBaseSerialNumberService.generateSerialNumber(1, "A", "", false, 6);
|
||||
user = new AppUser()
|
||||
.setLoginName(request.getLoginName())
|
||||
.setName(request.getUserName())
|
||||
|
|
@ -194,6 +295,7 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
.setRegionTypeId(request.getRegionTypeId())
|
||||
.setCreateBy(AdminUserUtil.getUserName())
|
||||
.setCreateTime(LocalDateTime.now())
|
||||
.setQuotationCode(quotationCode)
|
||||
.setState(UserState.ToBeActivated.getState())
|
||||
.setExpireTime(LocalDate.of(LocalDateTime.now().getYear() + 1, 1, 1));
|
||||
save(user);
|
||||
|
|
@ -402,17 +504,33 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
public void migrate(MigrateAppUserRequest request) {
|
||||
AppUser appUser = getPrimaryByCompanyId(request.getCompanyId().toString());
|
||||
VUtils.trueThrowBusinessError(Objects.isNull(appUser)).throwMessage("该公司还未设置主账号");
|
||||
List<Integer> companyIds = new ArrayList<>();
|
||||
companyIds.add(request.getCompanyId());
|
||||
|
||||
for (Integer userId : request.getUserIds()) {
|
||||
String quotaionCode = getAppUserQuotationCode(companyIds);
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getQuotationCode, quotaionCode)
|
||||
.set(AppUser::getCompanyId, request.getCompanyId())
|
||||
.set(AppUser::getExpireTime, appUser.getExpireTime())
|
||||
// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
.set(AppUser::getAreaId, null)
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.eq(AppUser::getIsPrimary, false)
|
||||
.in(AppUser::getId, request.getUserIds())
|
||||
.eq(AppUser::getId, userId)
|
||||
.update();
|
||||
}
|
||||
// lambdaUpdate()
|
||||
// .set(AppUser::getCompanyId, request.getCompanyId())
|
||||
// .set(AppUser::getExpireTime, appUser.getExpireTime())
|
||||
//// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
// .set(AppUser::getAreaId, null)
|
||||
// .set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
// .eq(AppUser::getIsDel, false)
|
||||
// .eq(AppUser::getIsPrimary, false)
|
||||
// .in(AppUser::getId, request.getUserIds())
|
||||
// .update();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageData<AppUserForAdminVO> searchAppUserForAdmin(SearchAppUserForAdminRequest request) {
|
||||
|
|
@ -576,13 +694,27 @@ public class AppUserServiceImpl extends ServiceImpl<AppUserMapper, AppUser> impl
|
|||
@Override
|
||||
public void enable(EnableAppUserRequest request) {
|
||||
if (request.getEnable()) {
|
||||
for (Integer id : request.getIds()) {
|
||||
AppUser appUser = getById(id);
|
||||
List<Integer> companyIds = Arrays.stream(appUser.getCompanyId().split(",")).filter(StrUtil::isNotBlank).map(Integer::valueOf).collect(Collectors.toList());
|
||||
String quoationCode = getAppUserQuotationCode(companyIds);
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getQuotationCode, quoationCode)
|
||||
.set(AppUser::getState, UserState.Activated.getState())
|
||||
.set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
.set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
.eq(AppUser::getIsDel, false)
|
||||
.in(AppUser::getId, request.getIds())
|
||||
.eq(AppUser::getId, id)
|
||||
.update();
|
||||
}
|
||||
|
||||
// lambdaUpdate()
|
||||
// .set(AppUser::getState, UserState.Activated.getState())
|
||||
// .set(AppUser::getUpdateBy, AdminUserUtil.getUserId())
|
||||
// .set(AppUser::getUpdateTime, LocalDateTime.now())
|
||||
// .eq(AppUser::getIsDel, false)
|
||||
// .in(AppUser::getId, request.getIds())
|
||||
// .update();
|
||||
} else {
|
||||
lambdaUpdate()
|
||||
.set(AppUser::getState, UserState.Disabled.getState())
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package com.nflg.mobilebroken.repository.service.impl;
|
||||
|
||||
import com.nflg.mobilebroken.repository.entity.QuotationModelForbid;
|
||||
import com.nflg.mobilebroken.repository.mapper.QuotationModelForbidMapper;
|
||||
import com.nflg.mobilebroken.repository.service.IQuotationModelForbidService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author 代码生成器生成
|
||||
* @since 2026
|
||||
*/
|
||||
@Service
|
||||
public class QuotationModelForbidServiceImpl extends ServiceImpl<QuotationModelForbidMapper, QuotationModelForbid> implements IQuotationModelForbidService {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.AdminBaseSerialNumberMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nflg.mobilebroken.repository.mapper.QuotationModelForbidMapper">
|
||||
|
||||
</mapper>
|
||||
|
|
@ -33,7 +33,7 @@ public class CodeGeneratorTest {
|
|||
, Paths.get(System.getProperty("user.dir")) + "/src/main/resources/mapper"))
|
||||
)
|
||||
.strategyConfig(builder -> {
|
||||
builder.addInclude("admin_permission_role_column_map") //只生成指定表
|
||||
builder.addInclude("t_base_area") //只生成指定表
|
||||
.entityBuilder()
|
||||
.enableLombok()
|
||||
.enableChainModel()
|
||||
|
|
|
|||
Loading…
Reference in New Issue