|
|
|
@ -21,6 +21,8 @@ import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.date.DateTime;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.text.StrPool;
|
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import com.baiye.config.properties.FileProperties;
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
@ -36,15 +38,12 @@ import com.baiye.modules.system.repository.OrganizeRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.OrganizeUserRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.RoleRepository;
|
|
|
|
|
import com.baiye.modules.system.repository.UserRepository;
|
|
|
|
|
import com.baiye.modules.system.service.CompanyService;
|
|
|
|
|
import com.baiye.modules.system.service.UserService;
|
|
|
|
|
import com.baiye.modules.system.service.dto.CompanyDto;
|
|
|
|
|
import com.baiye.modules.system.service.dto.CreateUserDTO;
|
|
|
|
|
import com.baiye.modules.system.service.dto.UpdateOrderDto;
|
|
|
|
|
import com.baiye.modules.system.service.dto.UserQueryCriteria;
|
|
|
|
|
import com.baiye.modules.system.service.*;
|
|
|
|
|
import com.baiye.modules.system.service.dto.*;
|
|
|
|
|
import com.baiye.modules.system.service.mapstruct.UserMapper;
|
|
|
|
|
import com.baiye.service.UserCacheClean;
|
|
|
|
|
import com.baiye.util.*;
|
|
|
|
|
import com.google.common.collect.ImmutableMap;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.springframework.cache.annotation.CacheConfig;
|
|
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
|
@ -80,9 +79,13 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
private final UserRepository userRepository;
|
|
|
|
|
private final PasswordEncoder passwordEncoder;
|
|
|
|
|
private final OnlineUserService onlineUserService;
|
|
|
|
|
private final OrganizeUserRepository organizeUserRepository;
|
|
|
|
|
private final OrganizeRepository organizeRepository;
|
|
|
|
|
|
|
|
|
|
private final PayTemplateService payTemplateService;
|
|
|
|
|
private final PayTemplateLogService payTemplateLogService;
|
|
|
|
|
private final PayTemplateUserService payTemplateUserService;
|
|
|
|
|
private final OrganizeUserRepository organizeUserRepository;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@ -247,7 +250,7 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
public Boolean findIsReview(Long userId) {
|
|
|
|
|
Boolean isReview = null;
|
|
|
|
|
User user = userRepository.findById(userId).orElseGet(User::new);
|
|
|
|
|
if (!Objects.isNull(user)){
|
|
|
|
|
if (!Objects.isNull(user)) {
|
|
|
|
|
isReview = user.getIsReview();
|
|
|
|
|
}
|
|
|
|
|
return isReview;
|
|
|
|
@ -484,9 +487,7 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
}
|
|
|
|
|
@NotBlank String username = user.getUsername();
|
|
|
|
|
flushCache(username);
|
|
|
|
|
return new HashMap<String, String>(1) {{
|
|
|
|
|
put("avatar", file.getName());
|
|
|
|
|
}};
|
|
|
|
|
return ImmutableMap.of("avatar", file.getName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -530,4 +531,50 @@ public class UserServiceImpl implements UserService {
|
|
|
|
|
private void flushCache(String username) {
|
|
|
|
|
userCacheClean.cleanUserCache(username);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void buyPackage(BuyComboDTO buyComboDTO) {
|
|
|
|
|
List<Long> userIds = buyComboDTO.getUserIds();
|
|
|
|
|
Long templateId = buyComboDTO.getTemplateId();
|
|
|
|
|
if (CollUtil.isNotEmpty(userIds)
|
|
|
|
|
&& ObjectUtil.isNotNull(templateId)) {
|
|
|
|
|
Long companyId = SecurityUtils.getCompanyId();
|
|
|
|
|
PayTemplate payTemplate =
|
|
|
|
|
payTemplateService.findTemplateById(templateId);
|
|
|
|
|
if (ObjectUtil.isNull(payTemplate)
|
|
|
|
|
|| payTemplate.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
throw new BadRequestException(ResponseCode.PACKAGE_ERROR.getDesc());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CompanyDto companyById = companyService.findCompanyById(companyId);
|
|
|
|
|
if (ObjectUtil.isNull(companyById)
|
|
|
|
|
|| companyById.getStatus() == DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
throw new BadRequestException(ResponseCode.ACCOUNT_DISABLED.getDesc());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Double balance =
|
|
|
|
|
companyById.getUserBalance() != null ?
|
|
|
|
|
companyById.getUserBalance() : DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
// 计算金额
|
|
|
|
|
Double totalAmount = NumberUtil.mul(payTemplate.getAmount(), Double.valueOf(String.valueOf(userIds.size())));
|
|
|
|
|
double deductionBalance = NumberUtil.sub(balance, totalAmount);
|
|
|
|
|
// 判断余额
|
|
|
|
|
if (deductionBalance < DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
throw new BadRequestException(ResponseCode.INSUFFICIENT_ACCOUNT_BALANCE.getDesc());
|
|
|
|
|
}
|
|
|
|
|
// 扣减余额
|
|
|
|
|
companyService.updateUserBalanceByCompanyId(deductionBalance, companyId);
|
|
|
|
|
PayTemplateUser templateUser;
|
|
|
|
|
for (Long userId : userIds) {
|
|
|
|
|
templateUser = new PayTemplateUser();
|
|
|
|
|
templateUser.setUserId(userId);
|
|
|
|
|
templateUser.setPayTemplateId(templateId);
|
|
|
|
|
// 插入信息
|
|
|
|
|
Boolean result = payTemplateUserService.add(templateUser);
|
|
|
|
|
payTemplateLogService.addPayTemplateLog(templateId, userId, result);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|