diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java index 1427155..d5f0581 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/constants/AccTradeStateEnum.java @@ -23,4 +23,14 @@ public enum AccTradeStateEnum { public String getDesc() { return this.desc; } + + public static String getDesc(Integer key) { + AccTradeStateEnum[] tradeValues = values(); + for (AccTradeStateEnum temp : tradeValues) { + if (temp.getKey().equals(key)) { + return temp.getDesc(); + } + } + return ""; + } } 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 fdd751a..6c2573d 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 @@ -1,33 +1,17 @@ package com.bonus.canteen.core.account.controller; -import cn.hutool.core.util.ObjectUtil; -import com.bonus.canteen.core.account.domain.AccInfo; -import com.bonus.canteen.core.account.domain.param.AccOperationQueryParam; -import com.bonus.canteen.core.account.domain.param.AccSubsidyParam; -import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam; -import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam; -import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; -import com.bonus.canteen.core.account.service.AccOperationHistoryService; +import com.bonus.canteen.core.account.constants.AccTradeTypeEnum; +import com.bonus.canteen.core.account.domain.param.*; import com.bonus.canteen.core.account.service.AccSubService; -import com.bonus.canteen.core.account.service.IAccInfoService; -import com.bonus.common.core.utils.poi.ExcelUtil; import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; -import com.bonus.common.houqin.constant.RetCodeEnum; -import com.bonus.common.houqin.i18n.I18n; -import com.bonus.common.log.annotation.SysLog; -import com.bonus.common.log.enums.OperaType; -import com.bonus.system.api.domain.SysUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import java.util.List; /** * 账户资料Controller @@ -79,9 +63,19 @@ public class AccSubsidyController extends BaseController { return AjaxResult.success(accSubService.batchOperationWalletClearCheck(param)); } -// @ApiOperation("补贴记录") -// @PostMapping({"/history"}) -// public AjaxResult queryAccSubRechargePage(@RequestBody AccSubRechargePageDTO request) { -// return AjaxResult.success(this.accSubService.queryAccSubRechargePage(request)); -// } + @ApiOperation("补贴记录") + @PostMapping({"/add/history"}) + public TableDataInfo queryAccSubOperationAddList(@RequestBody AccSubOperationQueryParam request) { + startPage(); + request.setTradeType(AccTradeTypeEnum.SUBSIDY.getKey()); + return getDataTable(accSubService.queryAccSubOperationList(request)); + } + + @ApiOperation("补贴清空记录") + @PostMapping({"/clear/history"}) + public TableDataInfo queryAccSubOperationClearList(@RequestBody AccSubOperationQueryParam request) { + startPage(); + request.setTradeType(AccTradeTypeEnum.CLEAR.getKey()); + return getDataTable(accSubService.queryAccSubOperationList(request)); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubOperationQueryParam.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubOperationQueryParam.java new file mode 100644 index 0000000..e65655e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/param/AccSubOperationQueryParam.java @@ -0,0 +1,22 @@ +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 java.time.LocalDateTime; +import java.util.List; + +@Data +public class AccSubOperationQueryParam extends BaseEntity { + @ApiModelProperty("查询组织id集合") + private List deptIdList; + @ApiModelProperty("开始时间") + private LocalDateTime startDateTime; + @ApiModelProperty("结束时间") + private LocalDateTime endDateTime; + @ApiModelProperty("交易类型") + @JsonIgnore + private Integer tradeType; +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccSubOperationListVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccSubOperationListVO.java new file mode 100644 index 0000000..06d057e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/domain/vo/AccSubOperationListVO.java @@ -0,0 +1,47 @@ +package com.bonus.canteen.core.account.domain.vo; + +import cn.hutool.core.util.ObjectUtil; +import com.bonus.canteen.core.account.constants.AccTradeStateEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class AccSubOperationListVO { + @ApiModelProperty("补贴时间") + private LocalDateTime tradeTime; + @ApiModelProperty("人员id") + private Long userId; + @ApiModelProperty("用户姓名") + private String nickName; + @ApiModelProperty("用户手机号") + private String phoneNumber; + @ApiModelProperty("所属组织") + private String deptName; + @ApiModelProperty("人员类别") + private Integer userType; + @ApiModelProperty("用户类别(展示)") + private String userTypeName; + @ApiModelProperty("补贴金额") + private BigDecimal amount; + @ApiModelProperty("补贴后补贴钱包余额") + private BigDecimal walletBal; + @ApiModelProperty("补贴记录交易状态") + private Integer tradeState; + @ApiModelProperty("充值结果名称") + private String tradeStateName; + @ApiModelProperty("操作员") + private String createBy; + @ApiModelProperty("补贴订单号") + private Long tradeId; + + public String getTradeStateName() { + if (ObjectUtil.isNotNull(this.tradeState)) { + return AccTradeStateEnum.TAKE_EFFECT.getKey().equals(this.tradeState) ? "成功" : AccTradeStateEnum.getDesc(this.tradeState); + } else { + return this.tradeStateName; + } + } +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java index 73c8670..5954141 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/mapper/AccTradeMapper.java @@ -2,6 +2,8 @@ package com.bonus.canteen.core.account.mapper; import java.util.List; import com.bonus.canteen.core.account.domain.AccTrade; +import com.bonus.canteen.core.account.domain.param.AccSubOperationQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; import com.bonus.canteen.core.account.domain.vo.AccTradeVo; /** @@ -62,4 +64,6 @@ public interface AccTradeMapper { * @return 结果 */ public int deleteAccTradeByTradeIds(Long[] tradeIds); + + List queryAccSubOperationList(AccSubOperationQueryParam param); } 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 7b1f5de..944a9b5 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,8 +1,9 @@ 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.vo.AccBatchOperationWalletPreCheckVO; -import org.springframework.web.multipart.MultipartFile; +import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; import java.math.BigDecimal; import java.util.List; @@ -21,4 +22,7 @@ public interface AccSubService { AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyParam param); public void addAccWalletBalance(BigDecimal amount, Long userId, Integer walletId); + + List queryAccSubOperationList(AccSubOperationQueryParam param); + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java index b323d42..1de1a92 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/IAccTradeService.java @@ -1,9 +1,12 @@ package com.bonus.canteen.core.account.service; -import java.util.List; import com.bonus.canteen.core.account.domain.AccTrade; +import com.bonus.canteen.core.account.domain.param.AccSubOperationQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; import com.bonus.canteen.core.account.domain.vo.AccTradeVo; +import java.util.List; + /** * 账户交易记录Service接口 * @@ -62,4 +65,6 @@ public interface IAccTradeService { * @return 结果 */ public int deleteAccTradeByTradeId(Long tradeId); + + List queryAccSubOperationList(AccSubOperationQueryParam param); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccSubServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccSubServiceImpl.java index 1ca8b87..806864d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccSubServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccSubServiceImpl.java @@ -7,19 +7,20 @@ import com.bonus.canteen.core.account.constants.AccWalletIdEnum; import com.bonus.canteen.core.account.constants.WalletBalanceOperationEnum; import com.bonus.canteen.core.account.domain.AccWalletInfo; import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation; +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.vo.AccBatchOperationWallerErrorVO; import com.bonus.canteen.core.account.domain.vo.AccBatchOperationWalletPreCheckVO; import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO; +import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; import com.bonus.canteen.core.account.service.AccSubService; import com.bonus.canteen.core.account.service.IAccInfoService; +import com.bonus.canteen.core.account.service.IAccTradeService; import com.bonus.canteen.core.account.service.IAccWalletInfoService; import com.bonus.canteen.core.account.utils.AccRedisUtils; import com.bonus.canteen.core.pay.constants.PayChannelEnum; import com.bonus.canteen.core.pay.constants.PayTypeEnum; -import com.bonus.canteen.core.pay.constants.TradeTypeEnum; import com.bonus.common.core.exception.ServiceException; -import com.bonus.common.houqin.i18n.I18n; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +44,10 @@ public class AccSubServiceImpl implements AccSubService { @Autowired @Lazy private IAccWalletInfoService accWalletInfoService; + @Autowired + @Lazy + IAccTradeService accTradeService; + @Resource( name = "smartCanteenTaskExecutor" ) @@ -95,7 +100,7 @@ public class AccSubServiceImpl implements AccSubService { if(Objects.isNull(walletInfo)) { throw new ServiceException("补贴钱包不存在"); } - clearAccWalletBalance(param.getUserId(), AccWalletIdEnum.SUBSIDY.getKey()); + clearAccWalletBalance(walletInfo.getWalletBal(), param.getUserId(), AccWalletIdEnum.SUBSIDY.getKey()); } private BigDecimal calculateClearAmount(BigDecimal walletBal, Integer clearType, BigDecimal amount) { @@ -239,12 +244,13 @@ public class AccSubServiceImpl implements AccSubService { } } - public void clearAccWalletBalance(Long userId, Integer walletId) { + public void clearAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) { log.info("清空补贴入参: userId:{},walletId:{}", userId, walletId); AccRedisUtils.lockUpdateAccWalletBalance(userId); try { WalletBalanceOperation operation = new WalletBalanceOperation(); operation.setUserId(userId); + operation.setAmount(amount); operation.setWalletId(walletId); operation.setOperationType(WalletBalanceOperationEnum.REDUCE_BAL.getKey()); operation.setTradeType(AccTradeTypeEnum.CLEAR.getKey()); @@ -347,4 +353,8 @@ public class AccSubServiceImpl implements AccSubService { 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/AccTradeServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java index 4d05aad..9ab1be1 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/account/service/impl/AccTradeServiceImpl.java @@ -1,20 +1,19 @@ package com.bonus.canteen.core.account.service.impl; -import java.util.List; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.bonus.canteen.core.account.domain.bo.AccOperationHistory; +import com.bonus.canteen.core.account.domain.AccTrade; +import com.bonus.canteen.core.account.domain.param.AccSubOperationQueryParam; +import com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO; import com.bonus.canteen.core.account.domain.vo.AccTradeVo; -import com.bonus.canteen.core.account.mapper.AccOperationHistoryMapper; +import com.bonus.canteen.core.account.mapper.AccTradeMapper; +import com.bonus.canteen.core.account.service.IAccTradeService; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.houqin.utils.id.Id; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.bonus.canteen.core.account.mapper.AccTradeMapper; -import com.bonus.canteen.core.account.domain.AccTrade; -import com.bonus.canteen.core.account.service.IAccTradeService; + +import java.util.List; /** * 账户交易记录Service业务层处理 @@ -121,4 +120,9 @@ public class AccTradeServiceImpl implements IAccTradeService { public int deleteAccTradeByTradeId(Long tradeId) { return accTradeMapper.deleteAccTradeByTradeId(tradeId); } + + @Override + public List queryAccSubOperationList(AccSubOperationQueryParam param) { + return accTradeMapper.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 5d003a0..e4d4fc2 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 @@ -185,9 +185,9 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { accWalletInfoMapper.reduceAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId()); } - private void clearAccWalletInfo(WalletBalanceOperation operation) { - accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId()); - } +// private void clearAccWalletInfo(WalletBalanceOperation operation) { +// accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId()); +// } public void acWalletBalanceOperation(WalletBalanceOperation operation) { switch (WalletBalanceOperationEnum.getEnum(operation.getOperationType())) { @@ -195,7 +195,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { addAccWalletInfo(operation); break; case REDUCE_BAL: - clearAccWalletInfo(operation); + reduceAccWalletInfo(operation); break; default: throw new ServiceException("钱包操作类型错误"); @@ -208,7 +208,6 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService { if(Objects.nonNull(userResult)) { sysUser = userResult.getDataAs(SysUser.class); } - long tradeId = Id.next(); LocalDateTime tradeTime = LocalDateTime.now(); AccTrade accTrade = new AccTrade(); diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml index fc12f24..8058422 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/account/AccTradeMapper.xml @@ -213,4 +213,56 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{tradeId} + + + \ No newline at end of file