|
@@ -1,7 +1,9 @@
|
|
package com.zhongshu.reward.server.core.service;
|
|
package com.zhongshu.reward.server.core.service;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import cn.hutool.core.lang.Assert;
|
|
import cn.hutool.core.lang.Snowflake;
|
|
import cn.hutool.core.lang.Snowflake;
|
|
|
|
+import com.wechat.pay.java.service.transferbatch.model.TransferDetailCompact;
|
|
import com.zhongshu.reward.client.ret.ResultContent;
|
|
import com.zhongshu.reward.client.ret.ResultContent;
|
|
import com.github.microservice.auth.security.helper.AuthHelper;
|
|
import com.github.microservice.auth.security.helper.AuthHelper;
|
|
import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
|
|
import com.github.microservice.components.data.mongo.mongo.helper.DBHelper;
|
|
@@ -27,11 +29,15 @@ import com.zhongshu.reward.server.core.domain.OperateDisable;
|
|
import com.zhongshu.reward.server.core.domain.TransferRuler;
|
|
import com.zhongshu.reward.server.core.domain.TransferRuler;
|
|
import com.zhongshu.reward.server.core.domain.Wallet;
|
|
import com.zhongshu.reward.server.core.domain.Wallet;
|
|
import com.zhongshu.reward.server.core.domain.WxTransferBatch;
|
|
import com.zhongshu.reward.server.core.domain.WxTransferBatch;
|
|
|
|
+import com.zhongshu.reward.server.core.helper.RedisHelper;
|
|
import com.zhongshu.reward.server.core.util.DateUtils;
|
|
import com.zhongshu.reward.server.core.util.DateUtils;
|
|
import com.zhongshu.reward.server.core.util.JedisUtil;
|
|
import com.zhongshu.reward.server.core.util.JedisUtil;
|
|
|
|
+import com.zhongshu.reward.server.core.util.wx.BusinessUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
@@ -75,22 +81,35 @@ public class WxTransferService {
|
|
@Autowired
|
|
@Autowired
|
|
DBHelper dbHelper;
|
|
DBHelper dbHelper;
|
|
|
|
|
|
- @Resource
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ RedisHelper redisHelper;
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
JedisUtil jedisUtil;
|
|
JedisUtil jedisUtil;
|
|
- private static final String TRANSFER = "com:zswl:reward:wxtransfer";
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
public ResultContent transferLock(WalletTransferParam param){
|
|
public ResultContent transferLock(WalletTransferParam param){
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
- if (jedisUtil.lock(userId + TRANSFER, 30L)){
|
|
|
|
- log.info("发起提现");
|
|
|
|
- return transfer(param);
|
|
|
|
- }else {
|
|
|
|
- log.info("获取锁失败");
|
|
|
|
- return ResultContent.buildFail("请勿重复操作");
|
|
|
|
|
|
+ String key = BusinessUtil.WXTRANSFER + ":" + userId;
|
|
|
|
+ String requestId = "";
|
|
|
|
+ try {
|
|
|
|
+ requestId = snowflake.nextIdStr();
|
|
|
|
+ boolean ret = false;
|
|
|
|
+ ret = jedisUtil.distributedLock(key, requestId, 30);
|
|
|
|
+ if (ret){
|
|
|
|
+ return transfer(param);
|
|
|
|
+ }else {
|
|
|
|
+ return ResultContent.buildFail("操作频繁,请稍后再试");
|
|
|
|
+ }
|
|
|
|
+ }catch (Exception e){
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return ResultContent.buildFail("系统异常,请联系管理员");
|
|
|
|
+ } finally {
|
|
|
|
+ jedisUtil.assignDb(BusinessUtil.REDIS_DB).releaseDistributedLock(key, requestId);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 发起提现
|
|
* 发起提现
|
|
* @param param
|
|
* @param param
|
|
@@ -98,17 +117,21 @@ public class WxTransferService {
|
|
*/
|
|
*/
|
|
public ResultContent transfer(WalletTransferParam param){
|
|
public ResultContent transfer(WalletTransferParam param){
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
String userId = authHelper.getCurrentUser().getUserId();
|
|
- OperateDisable operateDisable = operateDisableDao.findTopByUserIdAndType(userId, OperateType.TRANSFER);
|
|
|
|
- if (ObjectUtils.isNotEmpty(operateDisable)){
|
|
|
|
- if (new Date().getTime() < operateDisable.getTTL().getTime()){
|
|
|
|
- return ResultContent.build(ResultState.Fail, "系统异常,请"+ DateUtils.paresTime(operateDisable.getTTL().getTime(), DateUtils.patternyyyyMis) + "后重试");
|
|
|
|
- }else {
|
|
|
|
- operateDisableDao.delete(operateDisable);
|
|
|
|
- }
|
|
|
|
|
|
+ //校验提现操作是否被禁用
|
|
|
|
+ OperateDisable operateDisable = checkOperateDisable(userId, OperateType.TRANSFER);
|
|
|
|
+ if (null != operateDisable){
|
|
|
|
+ return ResultContent.build(ResultState.Fail, "系统异常,请"+ DateUtils.paresTime(operateDisable.getTTL().getTime(), DateUtils.patternyyyyMis) + "后重试");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Wallet wallet = walletDao.findByUserId(userId);
|
|
|
|
+ if (ObjectUtils.isEmpty(wallet)){
|
|
|
|
+ return ResultContent.buildFail("钱包暂未开通");
|
|
}
|
|
}
|
|
- Wallet wallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
|
//校验提现规则
|
|
//校验提现规则
|
|
- validTransfer(param.getTotal(), wallet);
|
|
|
|
|
|
+ ResultContent validResult = validTransfer(param.getTotal(), wallet);
|
|
|
|
+ if (validResult.isFailed()){
|
|
|
|
+ return validResult;
|
|
|
|
+ }
|
|
|
|
|
|
String outBatchNo = snowflake.nextIdStr();
|
|
String outBatchNo = snowflake.nextIdStr();
|
|
String outDetailNo = snowflake.nextIdStr();
|
|
String outDetailNo = snowflake.nextIdStr();
|
|
@@ -119,17 +142,51 @@ public class WxTransferService {
|
|
transferModel.setTotalAmount(param.getTotal().longValue());
|
|
transferModel.setTotalAmount(param.getTotal().longValue());
|
|
transferModel.setOutBatchNo(outBatchNo);
|
|
transferModel.setOutBatchNo(outBatchNo);
|
|
|
|
|
|
- List<TransferDetailInput> detailList = new ArrayList<>();
|
|
|
|
- TransferDetailInput detail = new TransferDetailInput();
|
|
|
|
- detail.setTransferAmount(param.getTotal().longValue());
|
|
|
|
- detail.setTransferRemark("佣金/返利发放");
|
|
|
|
- detail.setOpenid(param.getOpenid());
|
|
|
|
- detail.setOutDetailNo(outDetailNo);
|
|
|
|
- detailList.add(detail);
|
|
|
|
|
|
+ List<TransferDetailInput> detailList = getTransferDetailInputs(param, outDetailNo);
|
|
transferModel.setTotalNum(detailList.size());
|
|
transferModel.setTotalNum(detailList.size());
|
|
transferModel.setTransferDetailList(detailList);
|
|
transferModel.setTransferDetailList(detailList);
|
|
|
|
|
|
//初始化提现单
|
|
//初始化提现单
|
|
|
|
+ WxTransferBatch wxTransferBatch = getWxTransferBatch(param, wallet, outBatchNo, outDetailNo);
|
|
|
|
+
|
|
|
|
+ InitiateBatchTransferResponse firstResponse = wechatService.initiateBatchTransfer(transferModel, param.getAppid());
|
|
|
|
+ if (firstResponse==null){
|
|
|
|
+ //失败做一次补偿
|
|
|
|
+ firstResponse = wechatService.initiateBatchTransfer(transferModel, param.getAppid());
|
|
|
|
+ if (firstResponse == null){
|
|
|
|
+ //禁用1小时
|
|
|
|
+ disableTransfer(userId);
|
|
|
|
+ wxTransferBatch.setTransferStatus(TransferStatus.FAIL);
|
|
|
|
+ wxTransferBatch.setFailReason("提现失败请一小时后再次尝试");
|
|
|
|
+ wxTransferBatchDao.save(wxTransferBatch);
|
|
|
|
+ return ResultContent.buildFail("提现失败请一小时后再次尝试");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ wxTransferBatch.setBatchStatus(firstResponse.getBatchStatus());
|
|
|
|
+ wxTransferBatch.setWxBatchId(firstResponse.getBatchId());
|
|
|
|
+ wxTransferBatch.setTransferStatus(TransferStatus.PROCESSING);
|
|
|
|
+ wxTransferBatchDao.save(wxTransferBatch);
|
|
|
|
+
|
|
|
|
+// Wallet currentWallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
|
+// wallet.setAmount(currentWallet.getAmount().subtract(param.getTotal()));
|
|
|
|
+// wallet.setTodayTransferAmount(currentWallet.getTodayTransferAmount().add(param.getTotal()));
|
|
|
|
+// walletDao.save(wallet);
|
|
|
|
+ BigDecimal negateTotal = param.getTotal().negate();
|
|
|
|
+ walletDao.updateIncAmount(wallet.getId(), negateTotal);
|
|
|
|
+ return ResultContent.build(ResultState.Success);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void disableTransfer(String userId) {
|
|
|
|
+ OperateDisable newDisable = new OperateDisable();
|
|
|
|
+ newDisable.setUserId(userId);
|
|
|
|
+ newDisable.setType(OperateType.TRANSFER);
|
|
|
|
+ newDisable.setTTL(new Date(this.dbHelper.getTime() + 60*60 * 1000L));
|
|
|
|
+ operateDisableDao.save(newDisable);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @NotNull
|
|
|
|
+ private static WxTransferBatch getWxTransferBatch(WalletTransferParam param, Wallet wallet, String outBatchNo, String outDetailNo) {
|
|
WxTransferBatch wxTransferBatch = new WxTransferBatch();
|
|
WxTransferBatch wxTransferBatch = new WxTransferBatch();
|
|
wxTransferBatch.setBatchNo(outBatchNo);
|
|
wxTransferBatch.setBatchNo(outBatchNo);
|
|
wxTransferBatch.setDetailNo(outDetailNo);
|
|
wxTransferBatch.setDetailNo(outDetailNo);
|
|
@@ -138,38 +195,32 @@ public class WxTransferService {
|
|
wxTransferBatch.setChannel(TransferChannel.WeChat);
|
|
wxTransferBatch.setChannel(TransferChannel.WeChat);
|
|
wxTransferBatch.setBeforeWalletInfo(wallet);
|
|
wxTransferBatch.setBeforeWalletInfo(wallet);
|
|
wxTransferBatch.setWechatName(param.getWechatName());
|
|
wxTransferBatch.setWechatName(param.getWechatName());
|
|
|
|
+ return wxTransferBatch;
|
|
|
|
+ }
|
|
|
|
|
|
- InitiateBatchTransferResponse response = wechatService.initiateBatchTransfer(transferModel, param.getAppid());
|
|
|
|
- if (response==null){
|
|
|
|
- OperateDisable newDisable = new OperateDisable();
|
|
|
|
- newDisable.setUserId(userId);
|
|
|
|
- newDisable.setType(OperateType.TRANSFER);
|
|
|
|
- newDisable.setTTL(new Date(this.dbHelper.getTime() + 60*60 * 1000L));
|
|
|
|
- operateDisableDao.save(newDisable);
|
|
|
|
- wxTransferBatch.setTransferStatus(TransferStatus.FAIL);
|
|
|
|
- wxTransferBatch.setFailReason("提现失败请一小时后再次尝试");
|
|
|
|
- wxTransferBatchDao.save(wxTransferBatch);
|
|
|
|
- //失败做一次补偿
|
|
|
|
- return ResultContent.build(ResultState.Fail);
|
|
|
|
- }
|
|
|
|
-// wxTransferBatch.setBatchNo(outBatchNo);
|
|
|
|
-// wxTransferBatch.setDetailNo(outDetailNo);
|
|
|
|
-// wxTransferBatch.setWallet(wallet);
|
|
|
|
-// wxTransferBatch.setTotal(param.getTotal());
|
|
|
|
-// wxTransferBatch.setChannel(TransferChannel.WeChat);
|
|
|
|
-// wxTransferBatch.setBeforeWalletInfo(wallet);
|
|
|
|
- wxTransferBatch.setBatchStatus(response.getBatchStatus());
|
|
|
|
- wxTransferBatch.setWxBatchId(response.getBatchId());
|
|
|
|
- wxTransferBatch.setTransferStatus(TransferStatus.PROCESSING);
|
|
|
|
- wxTransferBatchDao.save(wxTransferBatch);
|
|
|
|
-
|
|
|
|
- Wallet currentWallet = walletDao.findTop1ById(param.getWalletId());
|
|
|
|
- wallet.setAmount(currentWallet.getAmount().subtract(param.getTotal()));
|
|
|
|
- wallet.setTodayTransferAmount(currentWallet.getTodayTransferAmount().add(param.getTotal()));
|
|
|
|
- walletDao.save(wallet);
|
|
|
|
- return ResultContent.build(ResultState.Success);
|
|
|
|
|
|
+ @NotNull
|
|
|
|
+ private static List<TransferDetailInput> getTransferDetailInputs(WalletTransferParam param, String outDetailNo) {
|
|
|
|
+ List<TransferDetailInput> detailList = new ArrayList<>();
|
|
|
|
+ TransferDetailInput detail = new TransferDetailInput();
|
|
|
|
+ detail.setTransferAmount(param.getTotal().longValue());
|
|
|
|
+ detail.setTransferRemark("佣金/返利发放");
|
|
|
|
+ detail.setOpenid(param.getOpenid());
|
|
|
|
+ detail.setOutDetailNo(outDetailNo);
|
|
|
|
+ detailList.add(detail);
|
|
|
|
+ return detailList;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public OperateDisable checkOperateDisable(String userId, OperateType operateType){
|
|
|
|
+ OperateDisable operateDisable = operateDisableDao.findTopByUserIdAndType(userId, operateType);
|
|
|
|
+ if (ObjectUtils.isEmpty(operateDisable)){
|
|
|
|
+ return null;
|
|
|
|
+ }else if (new Date().getTime() < operateDisable.getTTL().getTime()){
|
|
|
|
+ return operateDisable;
|
|
|
|
+ }else {
|
|
|
|
+ operateDisableDao.delete(operateDisable);
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
public Object queryTransfer(String walletId, Integer year, Integer month){
|
|
public Object queryTransfer(String walletId, Integer year, Integer month){
|
|
@@ -180,15 +231,15 @@ public class WxTransferService {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- public Object updateTransferStatus(String transferId){
|
|
|
|
|
|
+ public void updateTransferStatus(String transferId){
|
|
WxTransferBatch wxTransferBatch = wxTransferBatchDao.findTop1ById(transferId);
|
|
WxTransferBatch wxTransferBatch = wxTransferBatchDao.findTop1ById(transferId);
|
|
if (ObjectUtils.isEmpty(wxTransferBatch)){
|
|
if (ObjectUtils.isEmpty(wxTransferBatch)){
|
|
- return ResultContent.build(ResultState.Fail, "提现订单不存在");
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
TransferStatus transferStatus = wxTransferBatch.getTransferStatus();
|
|
TransferStatus transferStatus = wxTransferBatch.getTransferStatus();
|
|
if (!transferStatus.equals(TransferStatus.PROCESSING)){
|
|
if (!transferStatus.equals(TransferStatus.PROCESSING)){
|
|
- return ResultContent.build(ResultState.Success);
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
TransferStatusModel transferStatusModel = new TransferStatusModel();
|
|
TransferStatusModel transferStatusModel = new TransferStatusModel();
|
|
@@ -198,26 +249,26 @@ public class WxTransferService {
|
|
TransferBatchEntity transferBatchByNo = wechatService.getTransferBatchByNo(transferStatusModel);
|
|
TransferBatchEntity transferBatchByNo = wechatService.getTransferBatchByNo(transferStatusModel);
|
|
|
|
|
|
String batchStatus = transferBatchByNo.getTransferBatch().getBatchStatus();
|
|
String batchStatus = transferBatchByNo.getTransferBatch().getBatchStatus();
|
|
- String detailStatus = transferBatchByNo.getTransferDetailList().get(0).getDetailStatus();
|
|
|
|
|
|
+ String detailStatus = "INIT";
|
|
|
|
+ List<TransferDetailCompact> transferDetailList = transferBatchByNo.getTransferDetailList();
|
|
|
|
+ if (null != transferDetailList && !transferDetailList.isEmpty()){
|
|
|
|
+ detailStatus = transferBatchByNo.getTransferDetailList().get(0).getDetailStatus();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String walletId = wxTransferBatch.getWallet().getId();
|
|
|
|
+ BigDecimal total = wxTransferBatch.getTotal();
|
|
|
|
|
|
if(batchStatus.equals("FINISHED") && detailStatus.equals("SUCCESS")){
|
|
if(batchStatus.equals("FINISHED") && detailStatus.equals("SUCCESS")){
|
|
transferStatus = TransferStatus.SUCCESS;
|
|
transferStatus = TransferStatus.SUCCESS;
|
|
}else if(batchStatus.equals("CLOSED")){
|
|
}else if(batchStatus.equals("CLOSED")){
|
|
transferStatus = TransferStatus.CLOSE;
|
|
transferStatus = TransferStatus.CLOSE;
|
|
- Wallet wallet = walletDao.findTop1ById(wxTransferBatch.getWallet().getId());
|
|
|
|
- wallet.setAmount(wallet.getAmount().add(wxTransferBatch.getTotal()));
|
|
|
|
- wallet.setTodayTransferAmount(wallet.getTodayTransferAmount().subtract(wxTransferBatch.getTotal()));
|
|
|
|
- walletDao.save(wallet);
|
|
|
|
|
|
+ walletDao.updateIncAmount(walletId, total);
|
|
}else if (detailStatus.equals("FAIL")){
|
|
}else if (detailStatus.equals("FAIL")){
|
|
transferStatus = TransferStatus.FAIL;
|
|
transferStatus = TransferStatus.FAIL;
|
|
- Wallet wallet = walletDao.findTop1ById(wxTransferBatch.getWallet().getId());
|
|
|
|
- wallet.setAmount(wallet.getAmount().add(wxTransferBatch.getTotal()));
|
|
|
|
- wallet.setTodayTransferAmount(wallet.getTodayTransferAmount().subtract(wxTransferBatch.getTotal()));
|
|
|
|
- walletDao.save(wallet);
|
|
|
|
|
|
+ walletDao.updateIncAmount(walletId, total);
|
|
}
|
|
}
|
|
boolean update = wxTransferBatchDao.updateStatus(transferId, batchStatus, detailStatus, transferStatus);
|
|
boolean update = wxTransferBatchDao.updateStatus(transferId, batchStatus, detailStatus, transferStatus);
|
|
log.info("更新微信转账批次状态:结果:{}, id:{}, batchStatus:{}, detailStatus: {}, transferStatus: {}",update, transferId, batchStatus, detailStatus, transferStatus);
|
|
log.info("更新微信转账批次状态:结果:{}, id:{}, batchStatus:{}, detailStatus: {}, transferStatus: {}",update, transferId, batchStatus, detailStatus, transferStatus);
|
|
- return ResultContent.build(update);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
WxTransferBatchModel toModel(WxTransferBatch wxTransferBatch){
|
|
WxTransferBatchModel toModel(WxTransferBatch wxTransferBatch){
|
|
@@ -229,52 +280,51 @@ public class WxTransferService {
|
|
return model;
|
|
return model;
|
|
}
|
|
}
|
|
|
|
|
|
- void validTransfer(BigDecimal total, Wallet wallet){
|
|
|
|
|
|
+ public ResultContent validTransfer(BigDecimal total, Wallet wallet){
|
|
long currentTime = System.currentTimeMillis();
|
|
long currentTime = System.currentTimeMillis();
|
|
Integer size = 0;
|
|
Integer size = 0;
|
|
List<TransferRuler> list = transferRulerDao.findAll();
|
|
List<TransferRuler> list = transferRulerDao.findAll();
|
|
if (list.isEmpty()){
|
|
if (list.isEmpty()){
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "管理员未设置提现规则");
|
|
|
|
|
|
+ return ResultContent.buildFail("管理员未设置提现规则");
|
|
}
|
|
}
|
|
TransferRuler transferRuler = list.get(0);
|
|
TransferRuler transferRuler = list.get(0);
|
|
|
|
+
|
|
|
|
+ //判断可提现金额是否足够
|
|
|
|
+ if (total.compareTo(wallet.getAmount()) > 0){
|
|
|
|
+ return ResultContent.build(ResultState.Fail, "可提现余额不足");
|
|
|
|
+ }
|
|
|
|
+ //单笔金额
|
|
|
|
+ if (total.compareTo(transferRuler.getMinTotal()) < 0){
|
|
|
|
+ return ResultContent.buildFail("单笔提现金额低于最小值");
|
|
|
|
+ }else if (total.compareTo(transferRuler.getMaxTotal()) > 0){
|
|
|
|
+ return ResultContent.buildFail("单笔提现金额超出最大值");
|
|
|
|
+ }
|
|
//提现时间
|
|
//提现时间
|
|
if (transferRuler.getTimeUnit().equals(TimeUnitType.MONTH)){//每月
|
|
if (transferRuler.getTimeUnit().equals(TimeUnitType.MONTH)){//每月
|
|
Long dayOfMonthStartTime = DateUtils.getDayOfMonthStartTime(transferRuler.getStartDay());
|
|
Long dayOfMonthStartTime = DateUtils.getDayOfMonthStartTime(transferRuler.getStartDay());
|
|
Long dayOfMonthEndTime = DateUtils.getDayOfMonthEndTime(transferRuler.getEndDay());
|
|
Long dayOfMonthEndTime = DateUtils.getDayOfMonthEndTime(transferRuler.getEndDay());
|
|
if (currentTime < dayOfMonthStartTime || currentTime > dayOfMonthEndTime){
|
|
if (currentTime < dayOfMonthStartTime || currentTime > dayOfMonthEndTime){
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "当前不处于提现时间段");
|
|
|
|
|
|
+ return ResultContent.buildFail("当前不处于提现时间段");
|
|
}
|
|
}
|
|
size = wxTransferBatchDao.countByTime(wallet.getId(), dayOfMonthStartTime, dayOfMonthEndTime);
|
|
size = wxTransferBatchDao.countByTime(wallet.getId(), dayOfMonthStartTime, dayOfMonthEndTime);
|
|
}else if (transferRuler.getTimeUnit().equals(TimeUnitType.DAY)){
|
|
}else if (transferRuler.getTimeUnit().equals(TimeUnitType.DAY)){
|
|
Long hourMinuteStartTime = DateUtils.getHourMinuteStartTime(transferRuler.getStartHour(), transferRuler.getStartMinute());
|
|
Long hourMinuteStartTime = DateUtils.getHourMinuteStartTime(transferRuler.getStartHour(), transferRuler.getStartMinute());
|
|
Long hourMinuteEndTime = DateUtils.getHourMinuteEndTime(transferRuler.getEndHour(), transferRuler.getEndMinute());
|
|
Long hourMinuteEndTime = DateUtils.getHourMinuteEndTime(transferRuler.getEndHour(), transferRuler.getEndMinute());
|
|
if (currentTime < hourMinuteStartTime || currentTime > hourMinuteEndTime){
|
|
if (currentTime < hourMinuteStartTime || currentTime > hourMinuteEndTime){
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "当前不处于提现时间段");
|
|
|
|
|
|
+ return ResultContent.buildFail("当前不处于提现时间段");
|
|
}
|
|
}
|
|
size = wxTransferBatchDao.countByTime(wallet.getId(), hourMinuteStartTime, hourMinuteEndTime);
|
|
size = wxTransferBatchDao.countByTime(wallet.getId(), hourMinuteStartTime, hourMinuteEndTime);
|
|
}
|
|
}
|
|
- //单笔金额
|
|
|
|
- if (total.compareTo(transferRuler.getMinTotal()) < 0){
|
|
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "单笔提现金额低于最小值");
|
|
|
|
- }else if (total.compareTo(transferRuler.getMaxTotal()) > 0){
|
|
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "单笔提现金额超出最大值");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
//判断提现额度是否超出每日上限
|
|
//判断提现额度是否超出每日上限
|
|
Integer sumDayTotal = wxTransferBatchDao.sumDayTotal(wallet.getId(), DateUtils.getCurrentDayStartTime().getTime(), DateUtils.getCurrentDayEndTime().getTime());
|
|
Integer sumDayTotal = wxTransferBatchDao.sumDayTotal(wallet.getId(), DateUtils.getCurrentDayStartTime().getTime(), DateUtils.getCurrentDayEndTime().getTime());
|
|
if (total.add(BigDecimal.valueOf(sumDayTotal)).compareTo(transferRuler.getDayMaxTotal()) > 0){
|
|
if (total.add(BigDecimal.valueOf(sumDayTotal)).compareTo(transferRuler.getDayMaxTotal()) > 0){
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "超出每日提现金额上限");
|
|
|
|
-// return ResultContent.build(ResultState.Fail, "超出每日提现金额上限");
|
|
|
|
- }
|
|
|
|
- //判断可提现金额是否足够
|
|
|
|
- if (total.compareTo(wallet.getAmount()) > 0){
|
|
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "可提现余额不足");
|
|
|
|
-// return ResultContent.build(ResultState.Fail, "可提现余额不足");
|
|
|
|
|
|
+ return ResultContent.build(ResultState.Fail, "超出每日提现金额上限");
|
|
}
|
|
}
|
|
//提现次数
|
|
//提现次数
|
|
if (size >= transferRuler.getSize()){
|
|
if (size >= transferRuler.getSize()){
|
|
- throw new CommentException(com.zhongshu.reward.client.ret.ResultState.Exception, "超过可提现次数");
|
|
|
|
|
|
+ return ResultContent.build(ResultState.Fail, "超过可提现次数");
|
|
}
|
|
}
|
|
|
|
+ return ResultContent.buildSuccess();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|