增加短信通知

master
wujingtao 2 years ago
parent 1c813c5347
commit 77ba978ac6

@ -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;
}

@ -21,6 +21,7 @@ import com.baiye.modules.system.service.AliPayService;
import com.baiye.modules.system.service.CompanyService;
import com.baiye.modules.system.service.dto.AliPayPcDTO;
import com.baiye.modules.system.service.dto.CompanyDto;
import com.baiye.util.RedisUtils;
import com.baiye.util.SecurityUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -47,6 +48,7 @@ public class AliPayServiceImpl implements AliPayService {
private final CompanyService companyService;
private final AliPayProperties aliPay;
private final RedisUtils redisUtils;
@Value("${snowflake.workerId}")
private int workerId;
@ -86,6 +88,8 @@ public class AliPayServiceImpl implements AliPayService {
companyById.getUserBalance() : DefaultNumberConstants.ZERO_NUMBER;
companyService.updateUserBalanceByCompanyId
(NumberUtil.add(balance, order.getAmount()), companyId);
redisUtils.set("call_sms:" + companyId, 0);
}
payOrderRepository.save(order);
return ResponseCode.RECHARGE_SUCCESS.getDesc();

@ -25,12 +25,24 @@ public class SmsUtil {
private String signName;
@Value("${sms.aliyun.templateCode}")
private String templateCode;
@Value("${sms.aliyun.templateCode1}")
private String templateCode1;
/**
*
*
*/
public Boolean sendAliYunSms(String phone, String param) {
//json字符串 如:{"code":"XXX"}";
return getData(phone, param, templateCode);
}
public Boolean sendAliYunSmsNotice(String phone, String param) {
//json字符串 如:{"name":"XXX"}";
String templateCode1 = "SMS_243261646";
return getData(phone, param, templateCode1);
}
private Boolean getData(String phone, String param, String code) {
//设置超时时间-可自行调整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
@ -40,8 +52,7 @@ public class SmsUtil {
SendSmsRequest request = new SendSmsRequest();
request.setPhoneNumbers(phone);
request.setSignName(signName);
request.setTemplateCode(templateCode);
//json字符串 如:{"code":"XXX"}";
request.setTemplateCode(code);
request.setTemplateParam(param);
try {
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
@ -54,4 +65,5 @@ public class SmsUtil {
}
return false;
}
}

@ -29,7 +29,6 @@ spring:
hibernate:
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
enable_lazy_load_no_trans: true
ribbon:
ReadTimeout: 3000
ConnectTimeout: 3000
@ -72,7 +71,7 @@ sms:
accessKeySecret: 2ngpjkzXBKHPZhVj2yDZSGVX3fXAwT
signName: 百业互联科技
templateCode: SMS_232894146
templateCode1: SMS_243261646
snowflake:
workerId: 9
datacenterId: 9

Loading…
Cancel
Save