Commit 90a8208a by zhiwj

短信发送校验

parent 68e52203
......@@ -56,6 +56,9 @@ public interface Constants {
*/
String ENTERPRISE_BILLING_SMS_PACKAGE_COUNT = "enterprise_billing_sms_package_count";
/**
* 审批的url
*/
String AUDIT_TODO_URL = "/damo-system/user/approve";
}
......@@ -12,6 +12,17 @@ import com.gic.enterprise.dto.SmsRecordDTO;
public interface SmsRecordApiService {
/**
* @Title: verifySendSms
* @Description: 校验用户能否发送短信
* @author zhiwj
* @param enterpriseId
* @param sendCount
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
* @throws
*/
ServiceResponse<Void> verifySendSms(Integer enterpriseId, Integer sendCount);
/**
* 保存明细
* @Title: saveSmsRecord
* @Description:
......
......@@ -7,6 +7,9 @@ import com.gic.enterprise.constant.AccountStandardEnum;
import com.gic.enterprise.constant.Constants;
import com.gic.enterprise.dto.DictDTO;
import com.gic.enterprise.dto.SmsRecordDTO;
import com.gic.enterprise.entity.TabBillingAccount;
import com.gic.enterprise.error.ErrorCode;
import com.gic.enterprise.response.EnterpriseServiceResponse;
import com.gic.enterprise.service.*;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
......@@ -43,6 +46,35 @@ public class SmsRecordApiServiceImpl implements SmsRecordApiService {
private DictApiService dictApiService;
@Override
public ServiceResponse<Void> verifySendSms(Integer enterpriseId, Integer sendCount) {
if (enterpriseId == null || sendCount == null) {
return EnterpriseServiceResponse.failure(ErrorCode.PARAMETER_ERROR);
}
RedissonClient redisClient = RedisUtil.getRedisClient();
RAtomicLong smsCountR = redisClient.getAtomicLong(Constants.ENTERPRISE_BILLING_SMS_PACKAGE_COUNT + enterpriseId);
long smsPackageCount = smsCountR.get();
if (smsPackageCount > sendCount) {
logger.info("enterpriseId:{}, 短信套餐包条数:{}, 发送条数:{}, 可以发送", enterpriseId, smsPackageCount, sendCount);
return ServiceResponse.success();
}
long missCount = sendCount - smsPackageCount;
TabBillingAccount billingAccount = billingAccountService.getByEnterpriseId(enterpriseId);
Double accountBalance = billingAccount.getAccountBalance();
Integer unitFee = accountStandardService.queryUnitFee(enterpriseId, AccountStandardEnum.SMS.getCode());
double needFee = (double) (missCount * unitFee) / 1000;
if (needFee > accountBalance) {
logger.info("enterpriseId:{}, 短信套餐包条数:{}, 余额:{}, 发送条数:{}, 不能发送", enterpriseId, smsPackageCount, accountBalance, sendCount);
return EnterpriseServiceResponse.failure(ErrorCode.OPERATION_FAILED.getCode(), "余额不足, 不能发送");
} else {
logger.info("enterpriseId:{}, 短信套餐包条数:{},余额:{}, 发送条数:{}, 可以发送", enterpriseId, smsPackageCount, accountBalance, sendCount);
return EnterpriseServiceResponse.success();
}
}
@Override
public ServiceResponse<Void> saveSmsRecord(SmsRecordDTO smsRecordDTO) {
ServiceResponse paramResult = ValidUtil.allCheckValidate(smsRecordDTO, SmsRecordDTO.SmsRecordValid.class);
if (!paramResult.isSuccess()) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment