From 240c49a5b7378ea95fff4a92ec4e90d5126b0091 Mon Sep 17 00:00:00 2001 From: gaowdong Date: Thu, 10 Apr 2025 13:13:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E8=B4=B4=E7=AE=A1=E7=90=86=20=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AccSubsidyController.java | 12 +- .../domain/param/AccSubsidyAddParam.java | 34 ++++ ...aram.java => AccSubsidyBatchAddParam.java} | 15 +- .../param/AccSubsidyBatchClearParam.java | 27 +++ .../domain/param/AccSubsidyClearParam.java | 25 +++ .../account/mapper/AccWalletInfoMapper.java | 17 +- .../core/account/service/AccSubService.java | 15 +- .../impl/AccOperationHistoryServiceImpl.java | 4 +- .../service/impl/AccSubServiceImpl.java | 158 +++++++++--------- .../impl/AccWalletInfoServiceImpl.java | 15 +- .../core/utils/CommonConfiguration.java | 3 +- .../mapper/account/AccWalletInfoMapper.xml | 16 +- 12 files changed, 218 insertions(+), 123 deletions(-) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyAddParam.java rename bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/{AccSubsidyParam.java => AccSubsidyBatchAddParam.java} (72%) create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchClearParam.java create mode 100644 bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyClearParam.java diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccSubsidyController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccSubsidyController.java index 6c2573d..fcfa0b3 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccSubsidyController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/controller/AccSubsidyController.java @@ -27,39 +27,39 @@ public class AccSubsidyController extends BaseController { private AccSubService accSubService; @ApiOperation("单人补贴") @PostMapping("/add") - public AjaxResult individualAccSubsidyAdd(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult individualAccSubsidyAdd(@RequestBody @Valid AccSubsidyAddParam param) { this.accSubService.individualAccSubsidyAdd(param); return AjaxResult.success(); } @ApiOperation("补贴清空") @PostMapping({"/clear"}) - public AjaxResult individualAccSubsidyClear(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult individualAccSubsidyClear(@RequestBody @Valid AccSubsidyClearParam param) { this.accSubService.individualAccSubsidyClear(param); return AjaxResult.success(); } @ApiOperation("批量补贴") @PostMapping("/batch/add") - public AjaxResult batchAccSubsidyAdd(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult batchAccSubsidyAdd(@RequestBody @Valid AccSubsidyBatchAddParam param) { this.accSubService.batchAccSubsidyAdd(param); return AjaxResult.success(); } @ApiOperation("批量补贴校验") @PostMapping("/batch/add/check") - public AjaxResult batchAccSubsidyAddCheck(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult batchAccSubsidyAddCheck(@RequestBody @Valid AccSubsidyBatchAddParam param) { return AjaxResult.success(accSubService.batchOperationWalletAddCheck(param)); } @ApiOperation("批量补贴清空") @PostMapping({"/batch/clear"}) - public AjaxResult batchAccSubsidyClear(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult batchAccSubsidyClear(@RequestBody @Valid AccSubsidyBatchClearParam param) { this.accSubService.batchAccSubsidyClear(param); return AjaxResult.success(); } @ApiOperation("批量补贴清空校验") @PostMapping({"/batch/clear/check"}) - public AjaxResult batchAccSubsidyClearCheck(@RequestBody @Valid AccSubsidyParam param) { + public AjaxResult batchAccSubsidyClearCheck(@RequestBody @Valid AccSubsidyBatchClearParam param) { return AjaxResult.success(accSubService.batchOperationWalletClearCheck(param)); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyAddParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyAddParam.java new file mode 100644 index 0000000..418b44e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyAddParam.java @@ -0,0 +1,34 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +public class AccSubsidyAddParam extends BaseEntity { + @ApiModelProperty(value = "用户编号") + private @NotNull( + message = "用户编号不能为空" + ) Long userId; + @ApiModelProperty( + value = "充值金额/分" + ) + private @NotNull( + message = "金额不能为空" + ) @Max( + value = 10000000L, + message = "超过最大金额限制" + ) @Min( + value = 1L, + message = "小于最小充值金额" + ) BigDecimal amount; + @ApiModelProperty("操作类型 补贴-1 清空补贴-2") + @JsonIgnore + private Integer operationType; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchAddParam.java similarity index 72% rename from bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyParam.java rename to bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchAddParam.java index 0f4f3e0..417a971 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyParam.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchAddParam.java @@ -10,18 +10,11 @@ import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; + @Data -public class AccSubsidyParam extends BaseEntity { +public class AccSubsidyBatchAddParam extends BaseEntity { @ApiModelProperty( - value = "用户编号", - required = true - ) - private @NotNull( - message = "用户编号不能为空" - ) Long userId; - @ApiModelProperty( - value = "用户编号", - required = true + value = "用户编号" ) private @NotNull( message = "用户编号不能为空" @@ -39,8 +32,6 @@ public class AccSubsidyParam extends BaseEntity { value = 1L, message = "小于最小充值金额" ) BigDecimal amount; - @ApiModelProperty("清空类型 清空-1 清空至-2") - private Integer clearType = 1; @ApiModelProperty("操作类型 补贴-1 清空补贴-2") @JsonIgnore private Integer operationType; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchClearParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchClearParam.java new file mode 100644 index 0000000..8a2b8ae --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyBatchClearParam.java @@ -0,0 +1,27 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.List; + +@Data +public class AccSubsidyBatchClearParam extends BaseEntity { + @ApiModelProperty( + value = "用户编号" + ) + private @NotNull( + message = "用户编号不能为空" + ) List userIds; + @ApiModelProperty("清空类型 清空-1 清空至-2") + private Integer clearType = 1; + @ApiModelProperty("操作类型 补贴-1 清空补贴-2") + @JsonIgnore + private Integer operationType; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyClearParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyClearParam.java new file mode 100644 index 0000000..ae2eec6 --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubsidyClearParam.java @@ -0,0 +1,25 @@ +package com.bonus.canteen.core.account.domain.param; + +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +public class AccSubsidyClearParam extends BaseEntity { + @ApiModelProperty(value = "用户编号") + private @NotNull( + message = "用户编号不能为空" + ) Long userId; + + @ApiModelProperty("清空类型 清空-1 清空至-2") + private Integer clearType = 1; + @ApiModelProperty("操作类型 补贴-1 清空补贴-2") + @JsonIgnore + private Integer operationType; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java index 93e41e1..4564576 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccWalletInfoMapper.java @@ -2,6 +2,7 @@ package com.bonus.canteen.core.account.mapper; import java.math.BigDecimal; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.List; import com.bonus.canteen.core.account.domain.AccWalletInfo; import org.apache.ibatis.annotations.Param; @@ -21,7 +22,7 @@ public interface AccWalletInfoMapper { * @return 钱包详情信息 */ public List selectAccWalletInfoByUserId(Long userId); - public AccWalletInfo selectAccWalletInfoByUserIdAndWalletId(Long userId, Integer walletId); + public AccWalletInfo selectAccWalletInfoByUserIdAndWalletId(@Param("userId") Long userId, @Param("walletId") Integer walletId); List selectAccWalletInfoByUserIds(@Param("userIds") List userIds); @@ -71,18 +72,24 @@ public interface AccWalletInfoMapper { @Param("walletId") Integer walletId, @Param("userIds") List userIds, @Param("updateBy") String updateBy, - @Param("updateTime") LocalDate updateTime); + @Param("updateTime") LocalDateTime updateTime); void addAccWalletInfo(@Param("amount") BigDecimal amount, @Param("userId") Long userId, - @Param("walletId") Integer walletId + @Param("walletId") Integer walletId, + @Param("updateBy") String updateBy, + @Param("updateTime") LocalDateTime updateTime ); void reduceAccWalletInfo(@Param("amount") BigDecimal amount, @Param("userId") Long userId, - @Param("walletId") Integer walletId + @Param("walletId") Integer walletId, + @Param("updateBy") String updateBy, + @Param("updateTime") LocalDateTime updateTime ); void clearAccWalletInfo(@Param("userId") Long userId, - @Param("walletId") Integer walletId + @Param("walletId") Integer walletId, + @Param("updateBy") String updateBy, + @Param("updateTime") LocalDateTime updateTime ); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccSubService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccSubService.java index 944a9b5..e379b9e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccSubService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/AccSubService.java @@ -1,7 +1,6 @@ package com.bonus.canteen.core.account.service; -import com.bonus.canteen.core.account.domain.param.AccSubOperationQueryParam; -import com.bonus.canteen.core.account.domain.param.AccSubsidyParam; +import com.bonus.canteen.core.account.domain.param.*; import com.bonus.canteen.core.account.domain.vo.AccBatchOperationWalletPreCheckVO; import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; @@ -9,17 +8,17 @@ import java.math.BigDecimal; import java.util.List; public interface AccSubService { - void individualAccSubsidyAdd(AccSubsidyParam param); + void individualAccSubsidyAdd(AccSubsidyAddParam param); - void individualAccSubsidyClear(AccSubsidyParam param); + void individualAccSubsidyClear(AccSubsidyClearParam param); - void batchAccSubsidyAdd(AccSubsidyParam param); + void batchAccSubsidyAdd(AccSubsidyBatchAddParam param); - void batchAccSubsidyClear(AccSubsidyParam param); + void batchAccSubsidyClear(AccSubsidyBatchClearParam param); - AccBatchOperationWalletPreCheckVO batchOperationWalletAddCheck(AccSubsidyParam param); + AccBatchOperationWalletPreCheckVO batchOperationWalletAddCheck(AccSubsidyBatchAddParam param); - AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyParam param); + AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param); public void addAccWalletBalance(BigDecimal amount, Long userId, Integer walletId); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java index 9b1e967..77b9d09 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccOperationHistoryServiceImpl.java @@ -1,5 +1,7 @@ package com.bonus.canteen.core.account.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bonus.canteen.core.account.domain.bo.AccOperationHistory; import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; @@ -31,7 +33,7 @@ public class AccOperationHistoryServiceImpl extends ServiceImpl= 0 ? BigDecimal.ZERO : walletBal.subtract(amount); - } else { - clearAmount = amount.compareTo(walletBal) >= 0 ? walletBal : amount; - } - return clearAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : clearAmount; - } +// private BigDecimal calculateClearAmount(BigDecimal walletBal, Integer clearType, BigDecimal amount) { +// BigDecimal clearAmount; +// if (AccWalletClearTypeEnum.CLEAR_BY.getKey().equals(clearType)) { +// clearAmount = amount.compareTo(walletBal) >= 0 ? BigDecimal.ZERO : walletBal.subtract(amount); +// } else { +// clearAmount = amount.compareTo(walletBal) >= 0 ? walletBal : amount; +// } +// return clearAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : clearAmount; +// } - public void batchAccSubsidyClear(AccSubsidyParam param) { + public void batchAccSubsidyClear(AccSubsidyBatchClearParam param) { log.info("批量清空补贴用户数量:{}", param.getUserIds().size()); if(CollUtil.isEmpty(param.getUserIds())) { throw new ServiceException("批量清空补贴用户为空"); @@ -124,12 +123,12 @@ public class AccSubServiceImpl implements AccSubService { throw new ServiceException("批量清空补贴查询到的用户为空"); } else { this.asyncTaskExecutor.execute(() -> { - this.batchAccSubsidyClearHandler(accInfoVOList, param.getAmount(), param.getClearType()); + this.batchAccSubsidyClearHandler(accInfoVOList, param.getClearType()); }); } } - public void batchAccSubsidyAdd(AccSubsidyParam param) { + public void batchAccSubsidyAdd(AccSubsidyBatchAddParam param) { log.info("批量补贴用户数量:{}", param.getUserIds().size()); if(CollUtil.isEmpty(param.getUserIds())) { throw new ServiceException("批量补贴用户为空"); @@ -171,7 +170,7 @@ public class AccSubServiceImpl implements AccSubService { log.info("批量补贴结束"); } - private void batchAccSubsidyClearHandler(List accInfoDetails, BigDecimal amount, Integer clearType) { + private void batchAccSubsidyClearHandler(List accInfoDetails, Integer clearType) { log.info("批量清空补贴开始:{}", accInfoDetails.size()); AccRedisUtils.lockBatchUpdateAccWallet(); try { @@ -182,11 +181,10 @@ public class AccSubServiceImpl implements AccSubService { throw new ServiceException(accInfo.getNickName() + "的账户不存在"); } accInfoService.checkAccStatus(accInfoVO); - AccSubsidyParam param = new AccSubsidyParam(); - param.setAmount(amount); + AccSubsidyClearParam param = new AccSubsidyClearParam(); param.setUserId(accInfo.getUserId()); param.setClearType(clearType); - clearAccSubsidyHandler(accInfoVO, param); + clearAllAccSubsidyHandler(accInfoVO, param); } catch (Exception var10) { log.error("批量清空补贴充值异常", var10); } @@ -225,24 +223,24 @@ public class AccSubServiceImpl implements AccSubService { } } - public void reduceAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) { - log.info("清空补贴入参: amount:{}, userId:{},walletId:{}", amount, userId, walletId); - AccRedisUtils.lockUpdateAccWalletBalance(userId); - try { - WalletBalanceOperation operation = new WalletBalanceOperation(); - operation.setAmount(amount); - operation.setUserId(userId); - operation.setWalletId(walletId); - operation.setOperationType(WalletBalanceOperationEnum.REDUCE_BAL.getKey()); - operation.setTradeType(AccTradeTypeEnum.CLEAR.getKey()); - operation.setPayChannel(PayChannelEnum.GW_SYSTEM.getKey()); - operation.setPayType(PayTypeEnum.SUB_GRANT.getKey()); - accWalletInfoService.acWalletBalanceOperation(operation); - log.info("清空补贴结束"); - } finally { - AccRedisUtils.unlockUpdateAccWalletBalance(userId); - } - } +// public void reduceAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) { +// log.info("清空补贴入参: amount:{}, userId:{},walletId:{}", amount, userId, walletId); +// AccRedisUtils.lockUpdateAccWalletBalance(userId); +// try { +// WalletBalanceOperation operation = new WalletBalanceOperation(); +// operation.setAmount(amount); +// operation.setUserId(userId); +// operation.setWalletId(walletId); +// operation.setOperationType(WalletBalanceOperationEnum.REDUCE_BAL.getKey()); +// operation.setTradeType(AccTradeTypeEnum.CLEAR.getKey()); +// operation.setPayChannel(PayChannelEnum.GW_SYSTEM.getKey()); +// operation.setPayType(PayTypeEnum.SUB_GRANT.getKey()); +// accWalletInfoService.acWalletBalanceOperation(operation); +// log.info("清空补贴结束"); +// } finally { +// AccRedisUtils.unlockUpdateAccWalletBalance(userId); +// } +// } public void clearAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) { log.info("清空补贴入参: userId:{},walletId:{}", userId, walletId); @@ -263,7 +261,7 @@ public class AccSubServiceImpl implements AccSubService { } } - public AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyParam param) { + public AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param) { log.info("批量清空校验操作人数:{}", param.getUserIds().size()); List accInfoVOList = accInfoService.queryAccInfoByUserIds(param.getUserIds()); if (CollUtil.isEmpty(accInfoVOList)) { @@ -272,7 +270,7 @@ public class AccSubServiceImpl implements AccSubService { List errVOList = new ArrayList<>(); List validUserList = new ArrayList<>(); List amountList = new ArrayList<>(); - + BigDecimal walletBal = null; for (AccInfoDetailsVO accInfo : accInfoVOList) { try { checkAccount(accInfo); @@ -280,7 +278,7 @@ public class AccSubServiceImpl implements AccSubService { if(Objects.isNull(walletInfo)) { throw new ServiceException("补贴钱包不存在"); } - BigDecimal walletBal = walletInfo.getWalletBal(); + walletBal = walletInfo.getWalletBal(); // if (walletBal.compareTo(BigDecimal.ZERO) <= 0) { // throw new ServiceException("补贴钱包余额必须大于0元"); // } else { @@ -294,14 +292,22 @@ public class AccSubServiceImpl implements AccSubService { amountList.add(walletBal); validUserList.add(walletInfo.getUserId()); } catch (Exception ex) { - errVOList.add(createErrorVO(accInfo, param.getAmount(), ex.getMessage())); + errVOList.add(createErrorVO(accInfo, walletBal, ex.getMessage())); } } BigDecimal validTotalAmount = amountList.stream().reduce(BigDecimal.ZERO, BigDecimal::add); - return buildResult(param, validUserList, errVOList, validTotalAmount); + AccBatchOperationWalletPreCheckVO result = new AccBatchOperationWalletPreCheckVO(); + result.setTotalUserSum(param.getUserIds().size()); + result.setValidCount(validUserList.size()); + result.setValidTotalAmount(validTotalAmount); + result.setValidUserIdList(validUserList); + result.setInvalidCount(errVOList.size()); + result.setErrVOList(errVOList); + result.setRemark(param.getRemark()); + return result; } - public AccBatchOperationWalletPreCheckVO batchOperationWalletAddCheck(AccSubsidyParam param) { + public AccBatchOperationWalletPreCheckVO batchOperationWalletAddCheck(AccSubsidyBatchAddParam param) { log.info("批量校验操作人数:{}", param.getUserIds().size()); List accInfoVOList = accInfoService.queryAccInfoByUserIds(param.getUserIds()); if (CollUtil.isEmpty(accInfoVOList)) { @@ -319,7 +325,16 @@ public class AccSubServiceImpl implements AccSubService { } } BigDecimal validTotalAmount = param.getAmount().multiply(new BigDecimal(sucVoList.size())); - return buildResult(param, sucVoList, errVOList, validTotalAmount); + AccBatchOperationWalletPreCheckVO result = new AccBatchOperationWalletPreCheckVO(); + result.setTotalUserSum(param.getUserIds().size()); + result.setValidCount(sucVoList.size()); + result.setValidTotalAmount(validTotalAmount); + result.setValidUserIdList(sucVoList); + result.setInvalidCount(errVOList.size()); + result.setErrVOList(errVOList); + result.setAmount(param.getAmount()); + result.setRemark(param.getRemark()); + return result; } private void checkAccount(AccInfoDetailsVO accInfo) { @@ -336,23 +351,6 @@ public class AccSubServiceImpl implements AccSubService { errVO.setErrorMessage(errMsg); return errVO; } - - private AccBatchOperationWalletPreCheckVO buildResult(AccSubsidyParam param, - List sucVoList, - List errVOList, - BigDecimal validTotalAmount) { - AccBatchOperationWalletPreCheckVO result = new AccBatchOperationWalletPreCheckVO(); - result.setTotalUserSum(param.getUserIds().size()); - result.setValidCount(sucVoList.size()); - result.setValidTotalAmount(validTotalAmount); - result.setValidUserIdList(sucVoList); - result.setInvalidCount(errVOList.size()); - result.setErrVOList(errVOList); - result.setAmount(param.getAmount()); - result.setRemark(param.getRemark()); - return result; - } - @Override public List queryAccSubOperationList(AccSubOperationQueryParam param) { return accTradeService.queryAccSubOperationList(param); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java index e4d4fc2..2aa7dff 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccWalletInfoServiceImpl.java @@ -9,6 +9,8 @@ import java.util.Objects; import java.util.stream.Collectors; import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.bonus.canteen.core.account.constants.AccTradeStateEnum; import com.bonus.canteen.core.account.constants.AccTradeTypeEnum; import com.bonus.canteen.core.account.constants.WalletBalanceOperationEnum; @@ -170,7 +172,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { try { accWalletInfoMapper.updateMinBalanceByUserId(minBalance, walletId, userIds, - SecurityUtils.getUserId().toString(), DateUtils.toLocalDate(new Date())); + SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date())); } catch (Exception e) { log.error("修改钱包最低余额限制失败", e); throw new ServiceException("修改钱包最低余额限制失败"); @@ -178,15 +180,18 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { } private void addAccWalletInfo(WalletBalanceOperation operation) { - accWalletInfoMapper.addAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId()); + accWalletInfoMapper.addAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId(), + SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date())); } private void reduceAccWalletInfo(WalletBalanceOperation operation) { - accWalletInfoMapper.reduceAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId()); + accWalletInfoMapper.reduceAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId(), + SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date())); } // private void clearAccWalletInfo(WalletBalanceOperation operation) { -// accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId()); +// accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId(), +// SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date())); // } public void acWalletBalanceOperation(WalletBalanceOperation operation) { @@ -206,7 +211,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { AjaxResult userResult = remoteUserService.getInfo(operation.getUserId() , SecurityConstants.INNER); SysUser sysUser = null; if(Objects.nonNull(userResult)) { - sysUser = userResult.getDataAs(SysUser.class); + sysUser = JSONObject.parseObject(JSON.toJSONString(userResult.get(AjaxResult.DATA_TAG)), SysUser.class); } long tradeId = Id.next(); LocalDateTime tradeTime = LocalDateTime.now(); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java index 35afd95..0ec3145 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/utils/CommonConfiguration.java @@ -1,11 +1,12 @@ package com.bonus.canteen.core.utils; import com.bonus.common.houqin.i18n.I18nConfiguration; +import com.bonus.common.houqin.utils.SpringContextHolder; import com.bonus.common.houqin.utils.id.IdWorkConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; @Configuration -@Import({IdWorkConfiguration.class, I18nConfiguration.class}) +@Import({IdWorkConfiguration.class, I18nConfiguration.class, SpringContextHolder.class}) public class CommonConfiguration { } diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml index 011cfc3..cf67a1a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccWalletInfoMapper.xml @@ -157,22 +157,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" UPDATE acc_wallet_info - SET wallet_bal = wallet_bal + #{amount} + SET wallet_bal = wallet_bal + #{amount}, + update_by = #{updateBy}, + update_time = #{updateTime} WHERE user_id = #{userId} AND wallet_id = #{walletId} UPDATE acc_wallet_info - SET wallet_bal = wallet_bal - #{amount} - WHERE user_id = #{custId} + SET wallet_bal = wallet_bal - #{amount}, + update_by = #{updateBy}, + update_time = #{updateTime} + WHERE user_id = #{userId} AND wallet_id = #{walletId} UPDATE acc_wallet_info - SET wallet_bal = 0 - WHERE user_id = #{custId} + SET wallet_bal = 0, + update_by = #{updateBy}, + update_time = #{updateTime} + WHERE user_id = #{userId} AND wallet_id = #{walletId} \ No newline at end of file