|
|
|
@ -22,8 +22,9 @@ import com.baiye.modules.system.repository.UserRepository;
|
|
|
|
|
import com.baiye.modules.system.service.CompanyService;
|
|
|
|
|
import com.baiye.modules.system.service.UserMessageService;
|
|
|
|
|
import com.baiye.modules.system.service.dto.CompanyDto;
|
|
|
|
|
import com.baiye.modules.telemarkting.dao.AllCallInfoRepository;
|
|
|
|
|
import com.baiye.util.DateTimeUtil;
|
|
|
|
|
import com.baiye.util.RedisUtils;
|
|
|
|
|
import com.baiye.util.SmsUtil;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
@ -52,6 +53,8 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
private final UserMessageService userMessageService;
|
|
|
|
|
private final OnlineUserService onlineUserService;
|
|
|
|
|
private final UserReportRepository userReportRepository;
|
|
|
|
|
private final RedisUtils redisUtils;
|
|
|
|
|
private final SmsUtil smsUtil;
|
|
|
|
|
private final double price = 0.18;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -62,11 +65,11 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public void callCost() {
|
|
|
|
|
//查看这些人员 在套餐时间内 的总时长是否超出 注意套餐 是否已经刷新,重新计算
|
|
|
|
|
//1.查看当前日期是否在套餐时间范围,
|
|
|
|
|
//2.查看前一天扣减表。有数据说明已经超出,做扣减,入库--
|
|
|
|
|
|
|
|
|
|
List<PayTemplateUser> byDay = payTemplateUserRepository.findByDay(DateUtil.today());
|
|
|
|
|
if (byDay.size() <= 0) {
|
|
|
|
|
return;
|
|
|
|
@ -89,7 +92,6 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
//今天的通话记录
|
|
|
|
|
List<UserReport> userReports = list.stream().filter(c -> DateTimeUtil.betweenByDay(c.getCreateTime(), DateUtil.date())).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (durationTotal > callDuration && userReports.size() > 0) {
|
|
|
|
|
//今天得通话时长
|
|
|
|
|
long durationToday = userReports.get(0).getBreatheTotalDuration();
|
|
|
|
@ -120,7 +122,7 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
* @param companyById 公司信息
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
|
|
|
|
public CallSettlement deduction(PayTemplateUser info, Long durationToday, Double estimateAmountToDay, Long companyId, CompanyDto companyById) {
|
|
|
|
|
CallSettlement callSettlement = new CallSettlement();
|
|
|
|
|
long userId = info.getUserId();
|
|
|
|
@ -142,21 +144,20 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
callSettlement.setEstimateAmount(estimateAmountToDay);
|
|
|
|
|
} else {
|
|
|
|
|
//不够的情况 不加预扣
|
|
|
|
|
companyService.updateUserBalanceByCompanyId(userBalance + estimateAmount - deductAmount, companyId);
|
|
|
|
|
if (estimateAmount + userBalance > deductAmount) {
|
|
|
|
|
|
|
|
|
|
companyService.updateUserBalanceByCompanyId(userBalance + estimateAmount - deductAmount, companyId);
|
|
|
|
|
// TODO: 2022/6/8 0008 发送通知
|
|
|
|
|
MessageNotification messageNotification = new MessageNotification();
|
|
|
|
|
messageNotification.setMessageTitle("充值提醒");
|
|
|
|
|
messageNotification.setMessageType(2);
|
|
|
|
|
messageNotification.setUserId(companyById.getUserId());
|
|
|
|
|
messageNotification.setMessageContext("您的账号余额已不足,及时充值");
|
|
|
|
|
MessageNotification notification = messageNotificationRepository.save(messageNotification);
|
|
|
|
|
userMessageService.createUserMessage(Collections.singletonList(companyById.getUserId()), notification, DefaultNumberConstants.TWO_NUMBER);
|
|
|
|
|
//判断当前公司是否已经短信通知过
|
|
|
|
|
Object o = redisUtils.get("call_sms:" + companyId);
|
|
|
|
|
if (o == null || (int) o == 0) {
|
|
|
|
|
User one = userRepository.getOne(companyById.getUserId());
|
|
|
|
|
smsUtil.sendAliYunSmsNotice(one.getPhone(), "{\"name\":\"" + one.getUsername() + "\"}");
|
|
|
|
|
//短信通知后 缓存在redis
|
|
|
|
|
redisUtils.set("call_sms:" + companyId, 1);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//不足以扣款
|
|
|
|
|
companyService.updateUserBalanceByCompanyId(userBalance + estimateAmount - deductAmount, companyId);
|
|
|
|
|
// TODO: 2022/6/8 0008 下线 修改用户状态
|
|
|
|
|
// 下线 修改用户状态
|
|
|
|
|
User userById = userRepository.findUserById(userId);
|
|
|
|
|
userRepository.updateStatusById(Boolean.FALSE, userId);
|
|
|
|
|
try {
|
|
|
|
@ -168,8 +169,6 @@ public class CallCostServiceImpl implements CallCostService {
|
|
|
|
|
}
|
|
|
|
|
callSettlement.setDeductAmount(deductAmount);
|
|
|
|
|
callSettlement.setDeductDuration(durationToday);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return callSettlement;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|