Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
ad1a3b605b
|
|
@ -1,15 +1,19 @@
|
|||
package com.bonus.canteen.core.account.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
|
||||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||
import com.bonus.canteen.core.account.domain.AccInfo;
|
||||
import com.bonus.canteen.core.account.domain.param.*;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
||||
|
||||
import com.bonus.canteen.core.account.service.AccOperationHistoryService;
|
||||
import com.bonus.common.core.exception.ServiceException;
|
||||
import com.bonus.common.log.enums.OperaType;
|
||||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
import com.bonus.system.api.domain.SysUser;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
|
@ -194,10 +198,44 @@ public class AccInfoController extends BaseController {
|
|||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("单人取钱")
|
||||
@PostMapping("/withdraw")
|
||||
public AjaxResult individualAccWithdraw(@RequestBody @Valid AccWithdrawParam param) {
|
||||
this.accInfoService.individualAccWithdraw(param);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("离职清空余额(个人钱包和补贴钱包)")
|
||||
@PostMapping({"/leave/clear"})
|
||||
public AjaxResult individualAccLeaveClear(@RequestBody @Valid AccLeaveClearParam param) {
|
||||
this.accInfoService.individualAccLeaveClear(param);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("个人钱包操作记录")
|
||||
@PostMapping({"/wallet/history"})
|
||||
public TableDataInfo queryAccPersonalWalOperationAddList(@RequestBody AccWalletOperationQueryParam request) {
|
||||
if(Objects.isNull(request)) {
|
||||
throw new ServiceException("请求参数为空");
|
||||
}
|
||||
if(Objects.isNull(request.getTradeType())) {
|
||||
throw new ServiceException("交易类型为空");
|
||||
}
|
||||
startPage();
|
||||
return getDataTable(accInfoService.queryAccPersonalWalOperationAddList(request));
|
||||
}
|
||||
|
||||
@ApiOperation("手机端个人钱包操作记录")
|
||||
@PostMapping({"/mobile/wallet/history"})
|
||||
public TableDataInfo queryAccPersonalWalOperationAddListForMobile(@RequestBody AccWalletOperationQueryParam request) {
|
||||
if(Objects.isNull(request)) {
|
||||
throw new ServiceException("请求参数为空");
|
||||
}
|
||||
if(Objects.isNull(request.getTradeType())) {
|
||||
throw new ServiceException("交易类型为空");
|
||||
}
|
||||
startPage();
|
||||
request.setUserId(SecurityUtils.getUserId());
|
||||
return getDataTable(accInfoService.queryAccPersonalWalOperationAddList(request));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ public class AccSubsidyController extends BaseController {
|
|||
|
||||
@ApiOperation("补贴记录")
|
||||
@PostMapping({"/add/history"})
|
||||
public TableDataInfo queryAccSubOperationAddList(@RequestBody AccSubOperationQueryParam request) {
|
||||
public TableDataInfo queryAccSubOperationAddList(@RequestBody AccWalletOperationQueryParam request) {
|
||||
startPage();
|
||||
request.setTradeType(AccTradeTypeEnum.SUBSIDY.getKey());
|
||||
return getDataTable(accSubService.queryAccSubOperationList(request));
|
||||
|
|
@ -73,7 +73,7 @@ public class AccSubsidyController extends BaseController {
|
|||
|
||||
@ApiOperation("补贴清空记录")
|
||||
@PostMapping({"/clear/history"})
|
||||
public TableDataInfo queryAccSubOperationClearList(@RequestBody AccSubOperationQueryParam request) {
|
||||
public TableDataInfo queryAccSubOperationClearList(@RequestBody AccWalletOperationQueryParam request) {
|
||||
startPage();
|
||||
request.setTradeType(AccTradeTypeEnum.CLEAR.getKey());
|
||||
return getDataTable(accSubService.queryAccSubOperationList(request));
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class AccSubOperationQueryParam extends BaseEntity {
|
||||
public class AccWalletOperationQueryParam extends BaseEntity {
|
||||
@ApiModelProperty("查询组织id集合")
|
||||
private List<Long> deptIds;
|
||||
@ApiModelProperty("开始时间")
|
||||
|
|
@ -20,12 +20,12 @@ public class AccSubOperationQueryParam extends BaseEntity {
|
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endDateTime;
|
||||
@ApiModelProperty("交易类型")
|
||||
@JsonIgnore
|
||||
private Integer tradeType;
|
||||
private String searchValue;
|
||||
private String createBy;
|
||||
private Long userId;
|
||||
|
||||
public AccSubOperationQueryParam() {
|
||||
public AccWalletOperationQueryParam() {
|
||||
this.endDateTime = LocalDateTime.now().plusDays(7);
|
||||
this.startDateTime = LocalDateTime.now().minusDays(7);
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
package com.bonus.canteen.core.account.domain.param;
|
||||
|
||||
import com.bonus.common.core.web.domain.BaseEntity;
|
||||
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 AccWithdrawParam extends BaseEntity {
|
||||
@ApiModelProperty(value = "用户编号")
|
||||
private @NotNull(
|
||||
message = "用户编号不能为空"
|
||||
) Long userId;
|
||||
@ApiModelProperty(
|
||||
value = "提现金额/分"
|
||||
)
|
||||
private @NotNull(
|
||||
message = "提现金额不能为空"
|
||||
) @Min(
|
||||
value = 0L,
|
||||
message = "提现不能小于0"
|
||||
) BigDecimal amount;
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ import java.math.BigDecimal;
|
|||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class AccSubOperationListVO {
|
||||
public class AccOperationListVO {
|
||||
@ApiModelProperty("补贴时间")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime tradeTime;
|
||||
|
|
@ -26,17 +26,17 @@ public class AccSubOperationListVO {
|
|||
private Integer userType;
|
||||
@ApiModelProperty("用户类别(展示)")
|
||||
private String userTypeName;
|
||||
@ApiModelProperty("补贴金额")
|
||||
@ApiModelProperty("金额")
|
||||
private BigDecimal amount;
|
||||
@ApiModelProperty("补贴后补贴钱包余额")
|
||||
@ApiModelProperty("钱包余额")
|
||||
private BigDecimal walletBal;
|
||||
@ApiModelProperty("补贴记录交易状态")
|
||||
@ApiModelProperty("交易状态")
|
||||
private Integer tradeState;
|
||||
@ApiModelProperty("充值结果名称")
|
||||
@ApiModelProperty("结果名称")
|
||||
private String tradeStateName;
|
||||
@ApiModelProperty("操作员")
|
||||
private String createBy;
|
||||
@ApiModelProperty("补贴订单号")
|
||||
@ApiModelProperty("交易单号")
|
||||
private Long tradeId;
|
||||
|
||||
public String getTradeStateName() {
|
||||
|
|
@ -3,8 +3,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.bo.TradeAndWallerInfo;
|
||||
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.param.AccWalletOperationQueryParam;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccTradeVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -69,8 +69,8 @@ public interface AccTradeMapper {
|
|||
*/
|
||||
public int deleteAccTradeByTradeIds(Long[] tradeIds);
|
||||
|
||||
List<AccSubOperationListVO> queryAccSubOperationList(@Param("param") AccSubOperationQueryParam param,
|
||||
@Param("encryptedSearchValue") String encryptedSearchValue);
|
||||
List<AccOperationListVO> queryAccOperationList(@Param("param") AccWalletOperationQueryParam param,
|
||||
@Param("encryptedSearchValue") String encryptedSearchValue);
|
||||
|
||||
List<TradeAndWallerInfo> queryTradeAndWallerInfoByOrderNo(@Param("orderNo") String orderNo,
|
||||
@Param("accTradeType") Integer accTradeType);
|
||||
|
|
|
|||
|
|
@ -2,9 +2,8 @@ package com.bonus.canteen.core.account.service;
|
|||
|
||||
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;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
public interface AccSubService {
|
||||
|
|
@ -20,6 +19,6 @@ public interface AccSubService {
|
|||
|
||||
AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param);
|
||||
|
||||
List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param);
|
||||
List<AccOperationListVO> queryAccSubOperationList(AccWalletOperationQueryParam param);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,12 @@ package com.bonus.canteen.core.account.service;
|
|||
|
||||
import java.util.List;
|
||||
import com.bonus.canteen.core.account.domain.AccInfo;
|
||||
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
||||
import com.bonus.canteen.core.account.domain.WalletBalanceVO;
|
||||
import com.bonus.canteen.core.account.domain.param.*;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
import com.bonus.system.api.domain.SysUser;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 账户资料Service接口
|
||||
|
|
@ -73,5 +72,7 @@ public interface IAccInfoService {
|
|||
AccInfoDetailsVO queryAccInfoByUserId(Long userId);
|
||||
void checkAccStatus(AccInfoDetailsVO accInfoVO);
|
||||
void individualAccRecharge(AccRechargeParam param);
|
||||
void individualAccWithdraw(AccWithdrawParam param);
|
||||
void individualAccLeaveClear(AccLeaveClearParam param);
|
||||
List<AccOperationListVO> queryAccPersonalWalOperationAddList(AccWalletOperationQueryParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ package com.bonus.canteen.core.account.service;
|
|||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||
import com.bonus.canteen.core.account.domain.bo.TradeAndWallerInfo;
|
||||
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.param.AccWalletOperationQueryParam;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccTradeVo;
|
||||
|
||||
import java.util.List;
|
||||
|
|
@ -70,7 +70,7 @@ public interface IAccTradeService {
|
|||
*/
|
||||
public int deleteAccTradeByTradeId(Long tradeId);
|
||||
|
||||
List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param);
|
||||
List<AccOperationListVO> queryAccOperationList(AccWalletOperationQueryParam param);
|
||||
|
||||
List<TradeAndWallerInfo> queryTradeAndWallerInfoByOrderNo(String orderNo, AccTradeTypeEnum accTradeTypeEnum);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,15 +13,15 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||
import com.bonus.canteen.core.account.constants.AccStatusEnum;
|
||||
import com.bonus.canteen.core.account.constants.WalletBalanceOperationEnum;
|
||||
import com.bonus.canteen.core.account.domain.*;
|
||||
import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
||||
import com.bonus.canteen.core.account.domain.param.*;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO;
|
||||
import com.bonus.canteen.core.account.mq.AccMqSender;
|
||||
import com.bonus.canteen.core.account.service.AccOperationHistoryService;
|
||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||
import com.bonus.canteen.core.account.service.IAccWalletInfoService;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -30,7 +30,6 @@ import cn.hutool.json.JSONUtil;
|
|||
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
||||
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
||||
import com.bonus.canteen.core.account.domain.WalletBalanceVO;
|
||||
import com.bonus.canteen.core.account.utils.AccRedisUtils;
|
||||
import com.bonus.canteen.core.common.utils.MqUtil;
|
||||
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||
|
|
@ -46,7 +45,6 @@ import com.bonus.system.api.domain.SysUser;
|
|||
import com.bonus.common.houqin.utils.SM4EncryptUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.core.task.AsyncTaskExecutor;
|
||||
|
|
@ -74,7 +72,8 @@ public class AccInfoServiceImpl implements IAccInfoService {
|
|||
@Autowired
|
||||
private AccOperationHistoryService accOperationHistoryService;
|
||||
@Autowired
|
||||
private AccMqSender accMqSender;
|
||||
@Lazy
|
||||
IAccTradeService accTradeService;
|
||||
|
||||
@Resource(
|
||||
name = "smartCanteenTaskExecutor"
|
||||
|
|
@ -413,6 +412,29 @@ public class AccInfoServiceImpl implements IAccInfoService {
|
|||
log.error("发送MQ消息失败", e);
|
||||
}
|
||||
}
|
||||
public void individualAccWithdraw(AccWithdrawParam param) {
|
||||
AccInfoDetailsVO accInfoVO = queryAccInfoByUserId(param.getUserId());
|
||||
if(Objects.isNull(accInfoVO)) {
|
||||
throw new ServiceException("账户不存在");
|
||||
}
|
||||
checkAccStatus(accInfoVO);
|
||||
WalletUpdateDTO walletUpdateDTO = new WalletUpdateDTO();
|
||||
walletUpdateDTO.setAmount(param.getAmount());
|
||||
walletUpdateDTO.setUserId(param.getUserId());
|
||||
walletUpdateDTO.setAccWalletIdEnum(AccWalletIdEnum.WALLET);
|
||||
walletUpdateDTO.setAccTradeTypeEnum(AccTradeTypeEnum.WITHDRAW);
|
||||
walletUpdateDTO.setPayChannelEnum(PayChannelEnum.GC_SYSTEM);
|
||||
walletUpdateDTO.setPayTypeEnum(PayTypeEnum.MEAL_CARD);
|
||||
accWalletInfoService.clearAccWalletBalance(walletUpdateDTO);
|
||||
try {
|
||||
DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePerson(Math.toIntExact(param.getUserId()),"update");
|
||||
String jsonString = JacksonUtil.writeValueAsString(bean);
|
||||
log.info("账户变动发送mq内容:{}", jsonString);
|
||||
MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.DEVICE_UPDATE_PERSONAL_CONFIG_V4);
|
||||
} catch (Exception e) {
|
||||
log.error("发送MQ消息失败", e);
|
||||
}
|
||||
}
|
||||
@Transactional(
|
||||
rollbackFor = {Exception.class}
|
||||
)
|
||||
|
|
@ -445,4 +467,12 @@ public class AccInfoServiceImpl implements IAccInfoService {
|
|||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public List<AccOperationListVO> queryAccPersonalWalOperationAddList(AccWalletOperationQueryParam param) {
|
||||
List<AccOperationListVO> operationListVOList = accTradeService.queryAccOperationList(param);
|
||||
operationListVOList = operationListVOList.stream().peek(operation -> {
|
||||
operation.setPhoneNumber(SM4EncryptUtils.sm4Decrypt(operation.getPhoneNumber()));
|
||||
}).collect(Collectors.toList());
|
||||
return operationListVOList ;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,15 +3,13 @@ package com.bonus.canteen.core.account.service.impl;
|
|||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||
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.WalletUpdateDTO;
|
||||
import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
||||
import com.bonus.canteen.core.account.domain.param.*;
|
||||
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.domain.vo.AccOperationListVO;
|
||||
import com.bonus.canteen.core.account.service.AccSubService;
|
||||
import com.bonus.canteen.core.account.service.IAccInfoService;
|
||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||
|
|
@ -368,8 +366,8 @@ public class AccSubServiceImpl implements AccSubService {
|
|||
return errVO;
|
||||
}
|
||||
@Override
|
||||
public List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param) {
|
||||
List<AccSubOperationListVO> operationListVOList = accTradeService.queryAccSubOperationList(param);
|
||||
public List<AccOperationListVO> queryAccSubOperationList(AccWalletOperationQueryParam param) {
|
||||
List<AccOperationListVO> operationListVOList = accTradeService.queryAccOperationList(param);
|
||||
operationListVOList = operationListVOList.stream().peek(operation -> {
|
||||
operation.setPhoneNumber(SM4EncryptUtils.sm4Decrypt(operation.getPhoneNumber()));
|
||||
}).collect(Collectors.toList());
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ package com.bonus.canteen.core.account.service.impl;
|
|||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||
import com.bonus.canteen.core.account.domain.bo.TradeAndWallerInfo;
|
||||
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.param.AccWalletOperationQueryParam;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccOperationListVO;
|
||||
import com.bonus.canteen.core.account.domain.vo.AccTradeVo;
|
||||
import com.bonus.canteen.core.account.mapper.AccTradeMapper;
|
||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||
|
|
@ -15,6 +15,8 @@ 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 org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -63,6 +65,7 @@ public class AccTradeServiceImpl implements IAccTradeService {
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public int insertAccTrade(AccTrade accTrade) {
|
||||
accTrade.setCreateTime(DateUtils.getNowDate());
|
||||
return accTradeMapper.insertAccTrade(accTrade);
|
||||
|
|
@ -88,6 +91,7 @@ public class AccTradeServiceImpl implements IAccTradeService {
|
|||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||
public int updateAccTrade(AccTrade accTrade) {
|
||||
accTrade.setUpdateTime(DateUtils.getNowDate());
|
||||
try {
|
||||
|
|
@ -130,9 +134,9 @@ public class AccTradeServiceImpl implements IAccTradeService {
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param) {
|
||||
public List<AccOperationListVO> queryAccOperationList(AccWalletOperationQueryParam param) {
|
||||
String encryptedSearchValue = SM4EncryptUtils.sm4Encrypt(param.getSearchValue());
|
||||
return accTradeMapper.queryAccSubOperationList(param, encryptedSearchValue);
|
||||
return accTradeMapper.queryAccOperationList(param, encryptedSearchValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ import com.bonus.common.houqin.utils.id.Id;
|
|||
import com.bonus.common.security.utils.SecurityUtils;
|
||||
import com.bonus.system.api.RemoteUserService;
|
||||
import com.bonus.system.api.domain.SysUser;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.checkerframework.checker.units.qual.A;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
|
@ -242,7 +243,16 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
|||
|
||||
|
||||
private void acWalletBalanceOperation(WalletBalanceOperation operation) {
|
||||
Long tradeId = null;
|
||||
try{
|
||||
List<AccWalletInfo> walletInfoList = selectAccWalletInfoByUserId(operation.getUserId());
|
||||
BigDecimal accBalTotal = walletInfoList.stream().map(AccWalletInfo::getWalletBal)
|
||||
.filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
tradeId = insertAccTradeRecode(operation, accBalTotal);
|
||||
if(WalletBalanceOperationEnum.getEnum(operation.getOperationType()) == null) {
|
||||
throw new ServiceException("钱包操作类型不存在");
|
||||
}
|
||||
|
||||
switch (WalletBalanceOperationEnum.getEnum(operation.getOperationType())) {
|
||||
case ADD_BAL:
|
||||
addAccWalletInfo(operation);
|
||||
|
|
@ -253,38 +263,7 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
|||
default:
|
||||
throw new ServiceException("钱包操作类型错误");
|
||||
}
|
||||
List<AccWalletInfo> walletInfoList = selectAccWalletInfoByUserId(operation.getUserId());
|
||||
BigDecimal accBalTotal = walletInfoList.stream().map(AccWalletInfo::getWalletBal)
|
||||
.filter(ObjectUtil::isNotNull).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
AjaxResult userResult = remoteUserService.getInfo(operation.getUserId() , SecurityConstants.INNER);
|
||||
SysUser sysUser = null;
|
||||
if(Objects.nonNull(userResult)) {
|
||||
sysUser = JSONObject.parseObject(JSON.toJSONString(userResult.get(AjaxResult.DATA_TAG)), SysUser.class);
|
||||
}
|
||||
long tradeId = Id.next();
|
||||
LocalDateTime tradeTime = LocalDateTime.now();
|
||||
AccTrade accTrade = new AccTrade();
|
||||
accTrade.setTradeId(tradeId);
|
||||
accTrade.setTradeTime(tradeTime);
|
||||
accTrade.setTradeType(operation.getTradeType());
|
||||
accTrade.setAmount(operation.getAmount());
|
||||
accTrade.setActualAmount(operation.getAmount());
|
||||
accTrade.setWalletBalTotal(accBalTotal);
|
||||
accTrade.setAccAllBal(accBalTotal);
|
||||
accTrade.setPayState(PayStateEnum.PAY_SUCC.getKey());
|
||||
accTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey());
|
||||
accTrade.setUserId(operation.getUserId());
|
||||
accTrade.setPayChannel(operation.getPayChannel());
|
||||
accTrade.setPayType(operation.getPayType());
|
||||
accTrade.setCreateBy(SecurityUtils.getUsername());
|
||||
if(Objects.nonNull(sysUser)) {
|
||||
accTrade.setDeptId(sysUser.getDeptId());
|
||||
}
|
||||
if(Objects.nonNull(operation.getOrderNo())) {
|
||||
accTrade.setOrderNo(operation.getOrderNo().toString());
|
||||
}
|
||||
this.accTradeService.insertAccTrade(accTrade);
|
||||
|
||||
walletInfoList = selectAccWalletInfoByUserId(operation.getUserId());
|
||||
AccTradeWalletDetail accTradeWalletDetail = new AccTradeWalletDetail();
|
||||
accTradeWalletDetail.setTradeId(tradeId);
|
||||
accTradeWalletDetail.setUserId(operation.getUserId());
|
||||
|
|
@ -298,7 +277,22 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
|||
accTradeWalletDetail.setTradeTime(DateUtils.getNowDate());
|
||||
accTradeWalletDetail.setCreateBy(SecurityUtils.getUsername());
|
||||
this.accTradeWalletDetailService.insertAccTradeWalletDetail(accTradeWalletDetail);
|
||||
AccTrade accTrade = new AccTrade();
|
||||
accTrade.setTradeId(tradeId);
|
||||
accTrade.setPayState(PayStateEnum.PAY_SUCC.getKey());
|
||||
accTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey());
|
||||
accTrade.setUpdateBy(SecurityUtils.getUsername());
|
||||
this.accTradeService.updateAccTrade(accTrade);
|
||||
}catch (Exception ex) {
|
||||
if(Objects.nonNull(tradeId)) {
|
||||
AccTrade accTrade = new AccTrade();
|
||||
accTrade.setTradeId(tradeId);
|
||||
accTrade.setPayState(PayStateEnum.PAY_FAIL.getKey());
|
||||
accTrade.setTradeState(AccTradeStateEnum.CANCELED.getKey());
|
||||
accTrade.setUpdateBy(SecurityUtils.getUsername());
|
||||
accTrade.setFailReason(StringUtils.substring(ex.getMessage(), 0, 100));
|
||||
this.accTradeService.updateAccTrade(accTrade);
|
||||
}
|
||||
log.error("修改钱包失败", ex);
|
||||
throw new ServiceException("修改钱包失败");
|
||||
}
|
||||
|
|
@ -313,4 +307,36 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
|||
accWalletInfoMapper.reduceAccWalletInfo(operation.getAmount(), operation.getUserId(), operation.getWalletId(),
|
||||
SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date()));
|
||||
}
|
||||
|
||||
private long insertAccTradeRecode(WalletBalanceOperation operation, BigDecimal accBalTotal) {
|
||||
AjaxResult userResult = remoteUserService.getInfo(operation.getUserId() , SecurityConstants.INNER);
|
||||
SysUser sysUser = null;
|
||||
if(Objects.nonNull(userResult)) {
|
||||
sysUser = JSONObject.parseObject(JSON.toJSONString(userResult.get(AjaxResult.DATA_TAG)), SysUser.class);
|
||||
}
|
||||
long tradeId = Id.next();
|
||||
LocalDateTime tradeTime = LocalDateTime.now();
|
||||
AccTrade accTrade = new AccTrade();
|
||||
accTrade.setTradeId(tradeId);
|
||||
accTrade.setTradeTime(tradeTime);
|
||||
accTrade.setTradeType(operation.getTradeType());
|
||||
accTrade.setAmount(operation.getAmount());
|
||||
accTrade.setActualAmount(operation.getAmount());
|
||||
accTrade.setWalletBalTotal(accBalTotal);
|
||||
accTrade.setAccAllBal(accBalTotal);
|
||||
accTrade.setPayState(PayStateEnum.PAY_INPROCESS.getKey());
|
||||
accTrade.setTradeState(AccTradeStateEnum.CREATE.getKey());
|
||||
accTrade.setUserId(operation.getUserId());
|
||||
accTrade.setPayChannel(operation.getPayChannel());
|
||||
accTrade.setPayType(operation.getPayType());
|
||||
accTrade.setCreateBy(SecurityUtils.getUsername());
|
||||
if(Objects.nonNull(sysUser)) {
|
||||
accTrade.setDeptId(sysUser.getDeptId());
|
||||
}
|
||||
if(Objects.nonNull(operation.getOrderNo())) {
|
||||
accTrade.setOrderNo(operation.getOrderNo().toString());
|
||||
}
|
||||
this.accTradeService.insertAccTrade(accTrade);
|
||||
return tradeId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,25 +0,0 @@
|
|||
package com.bonus.canteen.core.pay.constants;
|
||||
|
||||
public enum TradeTypeEnum {
|
||||
RECHARGE(1, "充值"),
|
||||
RECHARGE_REFUND(2, "充值退款"),
|
||||
CONSUME(3, "消费"),
|
||||
CONSUME_REFUND(4, "消费退款");
|
||||
|
||||
private final Integer key;
|
||||
private final String desc;
|
||||
|
||||
private TradeTypeEnum(Integer key, String desc) {
|
||||
this.key = key;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public Integer getKey() {
|
||||
return this.key;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return this.desc;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -224,7 +224,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</foreach>
|
||||
</delete>
|
||||
|
||||
<select id="queryAccSubOperationList" resultType="com.bonus.canteen.core.account.domain.vo.AccSubOperationListVO">
|
||||
<select id="queryAccOperationList" resultType="com.bonus.canteen.core.account.domain.vo.AccOperationListVO">
|
||||
SELECT ate.trade_time,
|
||||
ate.user_id,
|
||||
su.nick_name,
|
||||
|
|
@ -261,8 +261,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="param.searchValue != null and param.searchValue != ''">
|
||||
and (su.nick_name = #{param.searchValue}
|
||||
or su.phonenumber = #{encryptedSearchValue}
|
||||
or su.user_id like CONCAT('%',#{param.searchValue},'%')
|
||||
)
|
||||
</if>
|
||||
<if test="param.userId != null">
|
||||
and ate.user_id = #{param.userId}
|
||||
</if>
|
||||
</where>
|
||||
order by atwd.id desc
|
||||
</select>
|
||||
|
|
@ -280,7 +284,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
inner join acc_trade_wallet_detail atwd on
|
||||
ate.trade_id = atwd.trade_id
|
||||
where
|
||||
ate.order_no = #{orderNo}
|
||||
ate.pay_state = 3
|
||||
and ate.order_no = #{orderNo}
|
||||
and ate.trade_type = #{accTradeType}
|
||||
</select>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue