|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package com.baiye.system.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
@ -8,6 +9,7 @@ import com.baiye.enums.SalesManEnum;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
|
import com.baiye.system.checker.AdminUserChecker;
|
|
|
|
|
import com.baiye.system.converter.SysUserConverter;
|
|
|
|
|
import com.baiye.system.enums.RoleCodeEnum;
|
|
|
|
|
import com.baiye.system.event.UserCreatedEvent;
|
|
|
|
|
import com.baiye.system.event.UserDelEvent;
|
|
|
|
|
import com.baiye.system.event.UserOrganizationChangeEvent;
|
|
|
|
@ -15,6 +17,7 @@ import com.baiye.system.mapper.SysUserMapper;
|
|
|
|
|
import com.baiye.system.model.dto.SysUserNameRoleDTO;
|
|
|
|
|
import com.baiye.system.model.dto.SysUserScope;
|
|
|
|
|
import com.baiye.system.model.entity.SysRole;
|
|
|
|
|
import com.baiye.system.model.vo.SysUserBalanceVO;
|
|
|
|
|
import com.baiye.system.properties.FileProperties;
|
|
|
|
|
import com.baiye.system.service.SysMenuService;
|
|
|
|
|
import com.baiye.system.service.SysUserRoleService;
|
|
|
|
@ -35,7 +38,6 @@ import com.baiye.system.model.entity.SysMenu;
|
|
|
|
|
import com.baiye.system.model.entity.SysUser;
|
|
|
|
|
import com.baiye.system.model.qo.SysUserQO;
|
|
|
|
|
import com.baiye.system.model.vo.SysUserPageVO;
|
|
|
|
|
import com.baiye.system.service.SysRoleService;
|
|
|
|
|
import com.baiye.system.service.SysUserService;
|
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
@ -69,8 +71,6 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
private final AdminUserChecker adminUserChecker;
|
|
|
|
|
|
|
|
|
|
private final SysRoleService sysRoleService;
|
|
|
|
|
|
|
|
|
|
private final ApplicationEventPublisher publisher;
|
|
|
|
|
|
|
|
|
|
private final PasswordHelper passwordHelper;
|
|
|
|
@ -91,21 +91,28 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
List<SysUser> sysUsers = baseMapper.selectList(new LambdaQueryWrapper<>());
|
|
|
|
|
List<SysUserPageVO> userAll = Convert.toList(SysUserPageVO.class, sysUsers);
|
|
|
|
|
Map<Long, List<SysUserPageVO>> userGroup = userAll.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
|
|
|
|
|
Map<Long, List<SysUserPageVO>> userGroup = userAll.stream().collect(Collectors.groupingBy(SysUserPageVO::getWhichUserId));
|
|
|
|
|
|
|
|
|
|
result.getRecords().forEach(user -> {
|
|
|
|
|
for (SysUserPageVO user : result.getRecords()) {
|
|
|
|
|
List<SysUserPageVO> byWhichUserId = userGroup.get(user.getUserId());
|
|
|
|
|
if (CollUtil.isNotEmpty(byWhichUserId)) {
|
|
|
|
|
user.setChildren(byWhichUserId);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
user.setRoleCode(null);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public PageResult<SysUserPageVO> queryAll(PageParam pageParam, SysUserQO qo) {
|
|
|
|
|
return baseMapper.queryPage(pageParam, qo);
|
|
|
|
|
PageResult<SysUserPageVO> result = baseMapper.queryPage(pageParam, qo);
|
|
|
|
|
|
|
|
|
|
for (SysUserPageVO user : result.getRecords()) {
|
|
|
|
|
List<String> of = ListUtil.of(RoleCodeEnum.find(15L), RoleCodeEnum.find(23L));
|
|
|
|
|
if (of.contains(user.getRoleCode())) user.setIsSalesman(true);
|
|
|
|
|
user.setRoleCode(null);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -193,7 +200,6 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
// 保存用户
|
|
|
|
|
sysUser.setWhichUserId(SecurityUtils.getCurrentUserId());
|
|
|
|
|
sysUser.setResidueClueNum(0);
|
|
|
|
|
sysUser.setChargingStatus(0);
|
|
|
|
|
boolean insertSuccess = SqlHelper.retBool(baseMapper.insert(sysUser));
|
|
|
|
|
Assert.isTrue(insertSuccess, () -> {
|
|
|
|
@ -457,7 +463,12 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<SelectData<Void>> listSelectSonListData() {
|
|
|
|
|
return baseMapper.listSelectSonListData(SecurityUtils.getCurrentUserId());
|
|
|
|
|
Long userId = SecurityUtils.getCurrentUserId();
|
|
|
|
|
if (adminUserChecker.isAdminUser(userId)) {
|
|
|
|
|
return baseMapper.listSelectSonListData(userId, null);
|
|
|
|
|
}
|
|
|
|
|
List<String> list = ListUtil.of(RoleCodeEnum.find(15L), RoleCodeEnum.find(23L));
|
|
|
|
|
return baseMapper.listSelectSonListData(userId, list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -467,39 +478,57 @@ public class SysUserServiceImpl extends ExtendServiceImpl<SysUserMapper, SysUser
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public boolean detectionAvailableNumUpdate(Map<Long, Integer> map, boolean bool) {
|
|
|
|
|
if (CollUtil.isNotEmpty(map)) throw new BadRequestException("用户不能为空");
|
|
|
|
|
List<SysUser> sysUserList = this.listByIds(map.keySet());
|
|
|
|
|
public synchronized boolean detectionAvailableNumUpdate(Map<Long, Integer> map) {
|
|
|
|
|
if (CollUtil.isEmpty(map)) throw new BadRequestException("用户不能为空");
|
|
|
|
|
List<SysUserBalanceVO> sysUserList = baseMapper.listUserBalance(map.keySet());
|
|
|
|
|
Long whichUserId = sysUserList.get(0).getWhichUserId();
|
|
|
|
|
|
|
|
|
|
SysUser sysUser = baseMapper.selectById(whichUserId);
|
|
|
|
|
for (SysUser user : sysUserList) {
|
|
|
|
|
Integer clueNum = map.get(user.getUserId());
|
|
|
|
|
// 非admin下发时 并且 公司管理员账号开启了计费模式(检测余额数量是否充足)
|
|
|
|
|
if (!bool && sysUser.getChargingStatus() == 1) {
|
|
|
|
|
Integer residueClueNum = user.getResidueClueNum();
|
|
|
|
|
if (residueClueNum < clueNum) throw new BadRequestException(user.getNickname() + "用户余额不足!!");
|
|
|
|
|
user.setResidueClueNum(residueClueNum - clueNum);
|
|
|
|
|
if (!adminUserChecker.isAdminUser(whichUserId)) {
|
|
|
|
|
SysUser sysUser = baseMapper.selectById(whichUserId);
|
|
|
|
|
if (sysUser.getChargingStatus() == 1) {
|
|
|
|
|
// 检测余额是否充足
|
|
|
|
|
for (SysUserBalanceVO user : sysUserList) {
|
|
|
|
|
Integer clueNum = map.get(user.getUserId());
|
|
|
|
|
// 非admin下发时 并且 公司管理员账号开启了计费模式(检测余额数量是否充足)
|
|
|
|
|
Integer residueClueNum = user.getResidueClueNum();
|
|
|
|
|
if (residueClueNum < clueNum) throw new BadRequestException(user.getUsername() + "-用户余额不足");
|
|
|
|
|
}
|
|
|
|
|
baseMapper.charging(map);// 扣费
|
|
|
|
|
}
|
|
|
|
|
user.setDistributeNum(user.getDistributeNum() + clueNum);
|
|
|
|
|
}
|
|
|
|
|
this.updateBatchById(sysUserList);
|
|
|
|
|
baseMapper.updateDistributeNum(map);// 修改分发数量
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String detectionAvailableNum(List<Long> userIds) {
|
|
|
|
|
if (CollUtil.isNotEmpty(userIds)) throw new BadRequestException("用户不能为空");
|
|
|
|
|
List<SysUser> sysUsers = this.listByUserIds(userIds);
|
|
|
|
|
if (CollUtil.isEmpty(userIds)) throw new BadRequestException("用户不能为空");
|
|
|
|
|
List<SysUserBalanceVO> sysUsers = baseMapper.listUserBalance(userIds);
|
|
|
|
|
Long whichUserId = sysUsers.get(0).getWhichUserId();
|
|
|
|
|
if (whichUserId != 1) {
|
|
|
|
|
SysUser whichUser = baseMapper.selectById(whichUserId);
|
|
|
|
|
for (SysUser sysUser : sysUsers) {
|
|
|
|
|
if (whichUser.getChargingStatus() == 1 && sysUser.getResidueClueNum() <= 0)
|
|
|
|
|
return sysUser.getNickname();
|
|
|
|
|
SysUser whichUser = baseMapper.selectById(whichUserId);
|
|
|
|
|
for (SysUserBalanceVO sysUser : sysUsers) {
|
|
|
|
|
if (!adminUserChecker.isAdminUser(whichUserId) && whichUser.getChargingStatus() == 1 && sysUser.getResidueClueNum() <= 0) {
|
|
|
|
|
return sysUser.getUsername();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public synchronized boolean recharge(SysUserDTO sysUserDTO) {
|
|
|
|
|
Long currentUserId = SecurityUtils.getCurrentUserId();
|
|
|
|
|
Integer rechargeClueNum = sysUserDTO.getRechargeClueNum();
|
|
|
|
|
if (!adminUserChecker.isAdminUser(currentUserId)) {
|
|
|
|
|
Integer userBalance = baseMapper.findUserBalance(currentUserId);
|
|
|
|
|
if (userBalance < rechargeClueNum) throw new BadRequestException("余额不足");
|
|
|
|
|
|
|
|
|
|
Map<Long, Integer> map = new HashMap<>();
|
|
|
|
|
map.put(currentUserId, rechargeClueNum);
|
|
|
|
|
baseMapper.charging(map);
|
|
|
|
|
}
|
|
|
|
|
log.info("用户{},给{}充值,条数:{}", currentUserId, sysUserDTO.getUserId(), rechargeClueNum);
|
|
|
|
|
return SqlHelper.retBool(baseMapper.recharge(sysUserDTO.getUserId(), rechargeClueNum));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|