parent
dbacf19ad0
commit
f2c63d168a
|
|
@ -5,11 +5,8 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
import com.bonus.canteen.core.account.domain.AccInfo;
|
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.*;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam;
|
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam;
|
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam;
|
|
||||||
|
|
||||||
import com.bonus.canteen.core.account.service.AccOperationHistoryService;
|
import com.bonus.canteen.core.account.service.AccOperationHistoryService;
|
||||||
import com.bonus.common.log.enums.OperaType;
|
import com.bonus.common.log.enums.OperaType;
|
||||||
|
|
@ -190,4 +187,17 @@ public class AccInfoController extends BaseController {
|
||||||
public AjaxResult queryWalletBalance(@RequestBody AccInfo accInfo) {
|
public AjaxResult queryWalletBalance(@RequestBody AccInfo accInfo) {
|
||||||
return success(this.accInfoService.queryWalletBalance(accInfo));
|
return success(this.accInfoService.queryWalletBalance(accInfo));
|
||||||
}
|
}
|
||||||
|
@ApiOperation("单人充值")
|
||||||
|
@PostMapping("/recharge")
|
||||||
|
public AjaxResult individualAccRechargeA(@RequestBody @Valid AccRechargeParam param) {
|
||||||
|
this.accInfoService.individualAccRecharge(param);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("离职清空余额(个人钱包和补贴钱包)")
|
||||||
|
@PostMapping({"/leave/clear"})
|
||||||
|
public AjaxResult individualAccLeaveClear(@RequestBody @Valid AccLeaveClearParam param) {
|
||||||
|
this.accInfoService.individualAccLeaveClear(param);
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,20 @@
|
||||||
package com.bonus.canteen.core.account.controller;
|
package com.bonus.canteen.core.account.controller;
|
||||||
|
|
||||||
import java.util.List;
|
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import com.bonus.canteen.core.account.service.IAccWalletInfoService;
|
||||||
|
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.log.annotation.SysLog;
|
||||||
import com.bonus.common.log.enums.OperaType;
|
import com.bonus.common.log.enums.OperaType;
|
||||||
import com.bonus.canteen.core.common.annotation.PreventRepeatSubmit;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PutMapping;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
import java.util.List;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
import com.bonus.common.log.annotation.SysLog;
|
|
||||||
import com.bonus.common.security.annotation.RequiresPermissions;
|
|
||||||
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
|
||||||
import com.bonus.canteen.core.account.service.IAccWalletInfoService;
|
|
||||||
import com.bonus.common.core.web.controller.BaseController;
|
|
||||||
import com.bonus.common.core.web.domain.AjaxResult;
|
|
||||||
import com.bonus.common.core.utils.poi.ExcelUtil;
|
|
||||||
import com.bonus.common.core.web.page.TableDataInfo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 钱包详情信息Controller
|
* 钱包详情信息Controller
|
||||||
|
|
@ -89,22 +81,6 @@ public class AccWalletInfoController extends BaseController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改钱包详情信息
|
|
||||||
*/
|
|
||||||
@ApiOperation(value = "修改钱包详情信息")
|
|
||||||
//@PreventRepeatSubmit
|
|
||||||
//@RequiresPermissions("account:info:edit")
|
|
||||||
@SysLog(title = "钱包详情信息", businessType = OperaType.UPDATE, logType = 1,module = "仓储管理->修改钱包详情信息")
|
|
||||||
@PostMapping("/edit")
|
|
||||||
public AjaxResult edit(@RequestBody AccWalletInfo accWalletInfo) {
|
|
||||||
try {
|
|
||||||
return toAjax(accWalletInfoService.updateAccWalletInfo(accWalletInfo));
|
|
||||||
} catch (Exception e) {
|
|
||||||
return error("系统错误, " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除钱包详情信息
|
* 删除钱包详情信息
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
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.NotNull;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AccLeaveClearParam extends BaseEntity {
|
||||||
|
@ApiModelProperty(value = "用户编号")
|
||||||
|
private @NotNull(
|
||||||
|
message = "用户编号不能为空"
|
||||||
|
) Long userId;
|
||||||
|
|
||||||
|
@ApiModelProperty("清空类型 清空-1 清空至-2")
|
||||||
|
private Integer clearType = 1;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
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 AccRechargeParam extends BaseEntity {
|
||||||
|
@ApiModelProperty(value = "用户编号")
|
||||||
|
private @NotNull(
|
||||||
|
message = "用户编号不能为空"
|
||||||
|
) Long userId;
|
||||||
|
@ApiModelProperty(
|
||||||
|
value = "充值金额/分"
|
||||||
|
)
|
||||||
|
private @NotNull(
|
||||||
|
message = "金额不能为空"
|
||||||
|
) @Max(
|
||||||
|
value = 10000000L,
|
||||||
|
message = "超过最大金额限制"
|
||||||
|
) @Min(
|
||||||
|
value = 1L,
|
||||||
|
message = "小于最小充值金额"
|
||||||
|
) BigDecimal amount;
|
||||||
|
}
|
||||||
|
|
@ -44,13 +44,6 @@ public interface AccWalletInfoMapper {
|
||||||
|
|
||||||
public int batchInsertAccWalletInfo(@Param("list") List<AccWalletInfo> accWalletInfos);
|
public int batchInsertAccWalletInfo(@Param("list") List<AccWalletInfo> accWalletInfos);
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改钱包详情信息
|
|
||||||
*
|
|
||||||
* @param accWalletInfo 钱包详情信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int updateAccWalletInfo(AccWalletInfo accWalletInfo);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除钱包详情信息
|
* 删除钱包详情信息
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,6 @@ public interface AccSubService {
|
||||||
|
|
||||||
AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param);
|
AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param);
|
||||||
|
|
||||||
public void addAccWalletBalance(BigDecimal amount, Long userId, Integer walletId);
|
|
||||||
|
|
||||||
List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param);
|
List<AccSubOperationListVO> queryAccSubOperationList(AccSubOperationQueryParam param);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,7 @@ import java.util.List;
|
||||||
import com.bonus.canteen.core.account.domain.AccInfo;
|
import com.bonus.canteen.core.account.domain.AccInfo;
|
||||||
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
||||||
import com.bonus.canteen.core.account.domain.WalletBalanceVO;
|
import com.bonus.canteen.core.account.domain.WalletBalanceVO;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam;
|
import com.bonus.canteen.core.account.domain.param.*;
|
||||||
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.domain.vo.AccInfoDetailsVO;
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO;
|
import com.bonus.canteen.core.account.domain.vo.AccInfoInvalidSumVO;
|
||||||
import com.bonus.system.api.domain.SysUser;
|
import com.bonus.system.api.domain.SysUser;
|
||||||
|
|
@ -74,4 +72,6 @@ public interface IAccInfoService {
|
||||||
List<AccInfoDetailsVO> queryAccInfoByUserIds(List<Long> userIds);
|
List<AccInfoDetailsVO> queryAccInfoByUserIds(List<Long> userIds);
|
||||||
AccInfoDetailsVO queryAccInfoByUserId(Long userId);
|
AccInfoDetailsVO queryAccInfoByUserId(Long userId);
|
||||||
void checkAccStatus(AccInfoDetailsVO accInfoVO);
|
void checkAccStatus(AccInfoDetailsVO accInfoVO);
|
||||||
|
void individualAccRecharge(AccRechargeParam param);
|
||||||
|
void individualAccLeaveClear(AccLeaveClearParam param);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,13 @@ import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||||
|
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
||||||
import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -43,14 +47,6 @@ public interface IAccWalletInfoService {
|
||||||
|
|
||||||
public int batchInsertAccWalletInfo(List<AccWalletInfo> accWalletInfos);
|
public int batchInsertAccWalletInfo(List<AccWalletInfo> accWalletInfos);
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改钱包详情信息
|
|
||||||
*
|
|
||||||
* @param accWalletInfo 钱包详情信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
public int updateAccWalletInfo(AccWalletInfo accWalletInfo);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除钱包详情信息
|
* 批量删除钱包详情信息
|
||||||
*
|
*
|
||||||
|
|
@ -70,5 +66,18 @@ public interface IAccWalletInfoService {
|
||||||
Map<Long, List<AccWalletInfoVO>> selectAccWalletInfoByUserIds(List<Long> userIds);
|
Map<Long, List<AccWalletInfoVO>> selectAccWalletInfoByUserIds(List<Long> userIds);
|
||||||
|
|
||||||
void updateMinBalance(List<Long> userIds, Integer walletId, BigDecimal minBalance);
|
void updateMinBalance(List<Long> userIds, Integer walletId, BigDecimal minBalance);
|
||||||
void acWalletBalanceOperation(WalletBalanceOperation operation);
|
|
||||||
|
void addAccWalletBalance(BigDecimal amount,
|
||||||
|
Long userId,
|
||||||
|
AccWalletIdEnum walletIdEnum,
|
||||||
|
AccTradeTypeEnum accTradeTypeEnum,
|
||||||
|
PayChannelEnum payChannelEnum,
|
||||||
|
PayTypeEnum payTypeEnum);
|
||||||
|
|
||||||
|
void clearAccWalletBalance(BigDecimal amount,
|
||||||
|
Long userId,
|
||||||
|
AccWalletIdEnum accWalletIdEnum,
|
||||||
|
AccTradeTypeEnum accTradeTypeEnum,
|
||||||
|
PayChannelEnum payChannelEnum,
|
||||||
|
PayTypeEnum payTypeEnum);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,14 @@ import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.util.*;
|
import cn.hutool.core.util.*;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
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.AccWalletIdEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccStatusEnum;
|
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.*;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountBalanceEditParam;
|
import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountEnableDisableParam;
|
import com.bonus.canteen.core.account.domain.param.*;
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
||||||
import com.bonus.canteen.core.account.domain.param.AccountInfoQueryParam;
|
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccInfoDetailsVO;
|
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.AccInfoInvalidSumVO;
|
||||||
import com.bonus.canteen.core.account.mq.AccMqSender;
|
import com.bonus.canteen.core.account.mq.AccMqSender;
|
||||||
|
|
@ -29,7 +30,10 @@ import cn.hutool.json.JSONUtil;
|
||||||
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
import com.bonus.canteen.core.account.domain.AccInfoVo;
|
||||||
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
||||||
import com.bonus.canteen.core.account.domain.WalletBalanceVO;
|
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.common.utils.MqUtil;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.core.utils.DateUtils;
|
import com.bonus.common.core.utils.DateUtils;
|
||||||
import com.bonus.common.houqin.constant.LeCodeUseSceneEnum;
|
import com.bonus.common.houqin.constant.LeCodeUseSceneEnum;
|
||||||
|
|
@ -130,27 +134,27 @@ public class AccInfoServiceImpl implements IAccInfoService {
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateAccInfo(AccountBalanceEditParam accountBalanceEditParam) {
|
public void updateAccInfo(AccountBalanceEditParam accountBalanceEditParam) {
|
||||||
LocalDate accEndDate = accountBalanceEditParam.getEndDate();
|
// LocalDate accEndDate = accountBalanceEditParam.getEndDate();
|
||||||
Map<AccWalletIdEnum, BigDecimal> walletLimits = new HashMap<>();
|
// Map<AccWalletIdEnum, BigDecimal> walletLimits = new HashMap<>();
|
||||||
walletLimits.put(AccWalletIdEnum.WALLET, accountBalanceEditParam.getMinWalletBalLimit());
|
// walletLimits.put(AccWalletIdEnum.WALLET, accountBalanceEditParam.getMinWalletBalLimit());
|
||||||
walletLimits.put(AccWalletIdEnum.SUBSIDY, accountBalanceEditParam.getMinSubBalLimit());
|
// walletLimits.put(AccWalletIdEnum.SUBSIDY, accountBalanceEditParam.getMinSubBalLimit());
|
||||||
for (Map.Entry<AccWalletIdEnum, BigDecimal> entry : walletLimits.entrySet()) {
|
// for (Map.Entry<AccWalletIdEnum, BigDecimal> entry : walletLimits.entrySet()) {
|
||||||
accWalletInfoService.updateMinBalance(ListUtil.toList(accountBalanceEditParam.getUserId()), entry.getKey().getKey(), entry.getValue());
|
// accWalletInfoService.updateMinBalance(ListUtil.toList(accountBalanceEditParam.getUserId()), entry.getKey().getKey(), entry.getValue());
|
||||||
}
|
// }
|
||||||
updateAccountEndDate(ListUtil.toList(accountBalanceEditParam.getUserId()), accEndDate);
|
// updateAccountEndDate(ListUtil.toList(accountBalanceEditParam.getUserId()), accEndDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateAccountEndDate(List<Long> userIds, LocalDate accEndDate) {
|
protected void updateAccountEndDate(List<Long> userIds, LocalDate accEndDate) {
|
||||||
if (ObjectUtil.isEmpty(userIds)) {
|
// if (ObjectUtil.isEmpty(userIds)) {
|
||||||
log.info("更新账户有效期-账户信息为空");
|
// log.info("更新账户有效期-账户信息为空");
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
try {
|
// try {
|
||||||
accInfoMapper.updateAccInfoEndDateByUserId(accEndDate, userIds, SecurityUtils.getUsername());
|
// accInfoMapper.updateAccInfoEndDateByUserId(accEndDate, userIds, SecurityUtils.getUsername());
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
log.error("[更新账户有效期失败", e);
|
// log.error("[更新账户有效期失败", e);
|
||||||
throw new ServiceException("更新账户有效期失败");
|
// throw new ServiceException("更新账户有效期失败");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -370,4 +374,44 @@ public class AccInfoServiceImpl implements IAccInfoService {
|
||||||
accInfoVo.setAccAllBal(accInfoVo.getWalletBal().add(accInfoVo.getSubsidyBal()));
|
accInfoVo.setAccAllBal(accInfoVo.getWalletBal().add(accInfoVo.getSubsidyBal()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@Transactional(
|
||||||
|
rollbackFor = {Exception.class}
|
||||||
|
)
|
||||||
|
public void individualAccRecharge(AccRechargeParam param) {
|
||||||
|
AccInfoDetailsVO accInfoVO = queryAccInfoByUserId(param.getUserId());
|
||||||
|
if(Objects.isNull(accInfoVO)) {
|
||||||
|
throw new ServiceException("账户不存在");
|
||||||
|
}
|
||||||
|
checkAccStatus(accInfoVO);
|
||||||
|
accWalletInfoService.addAccWalletBalance(
|
||||||
|
param.getAmount(),
|
||||||
|
param.getUserId(),
|
||||||
|
AccWalletIdEnum.WALLET,
|
||||||
|
AccTradeTypeEnum.RECHARGE,
|
||||||
|
PayChannelEnum.GC_SYSTEM,
|
||||||
|
PayTypeEnum.CASH);
|
||||||
|
}
|
||||||
|
@Transactional(
|
||||||
|
rollbackFor = {Exception.class}
|
||||||
|
)
|
||||||
|
public void individualAccLeaveClear(AccLeaveClearParam param) {
|
||||||
|
AccInfoDetailsVO accInfoVO = queryAccInfoByUserId(param.getUserId());
|
||||||
|
if(Objects.isNull(accInfoVO)) {
|
||||||
|
throw new ServiceException("账户不存在");
|
||||||
|
}
|
||||||
|
checkAccStatus(accInfoVO);
|
||||||
|
List<AccWalletInfo> walletInfoList = accWalletInfoService.selectAccWalletInfoByUserId(accInfoVO.getUserId());
|
||||||
|
if(CollUtil.isEmpty(walletInfoList)) {
|
||||||
|
throw new ServiceException("补贴钱包不存在");
|
||||||
|
}
|
||||||
|
for(AccWalletInfo walletInfo : walletInfoList){
|
||||||
|
accWalletInfoService.clearAccWalletBalance(
|
||||||
|
walletInfo.getWalletBal(),
|
||||||
|
param.getUserId(),
|
||||||
|
AccWalletIdEnum.getEnum(walletInfo.getWalletId()),
|
||||||
|
AccTradeTypeEnum.CLEAR,
|
||||||
|
PayChannelEnum.GC_SYSTEM,
|
||||||
|
PayTypeEnum.MEAL_CARD);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package com.bonus.canteen.core.account.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccWalletClearTypeEnum;
|
|
||||||
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
import com.bonus.canteen.core.account.constants.WalletBalanceOperationEnum;
|
import com.bonus.canteen.core.account.constants.WalletBalanceOperationEnum;
|
||||||
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
import com.bonus.canteen.core.account.domain.AccWalletInfo;
|
||||||
|
|
@ -64,7 +63,12 @@ public class AccSubServiceImpl implements AccSubService {
|
||||||
throw new ServiceException("账户不存在");
|
throw new ServiceException("账户不存在");
|
||||||
}
|
}
|
||||||
accInfoService.checkAccStatus(accInfoVO);
|
accInfoService.checkAccStatus(accInfoVO);
|
||||||
addAccWalletBalance(param.getAmount(), param.getUserId(), AccWalletIdEnum.SUBSIDY.getKey());
|
accWalletInfoService.addAccWalletBalance(param.getAmount(),
|
||||||
|
param.getUserId(),
|
||||||
|
AccWalletIdEnum.SUBSIDY,
|
||||||
|
AccTradeTypeEnum.SUBSIDY,
|
||||||
|
PayChannelEnum.GC_SYSTEM,
|
||||||
|
PayTypeEnum.SUB_GRANT);
|
||||||
}
|
}
|
||||||
@Transactional(
|
@Transactional(
|
||||||
rollbackFor = {Exception.class}
|
rollbackFor = {Exception.class}
|
||||||
|
|
@ -101,7 +105,12 @@ public class AccSubServiceImpl implements AccSubService {
|
||||||
if(Objects.isNull(walletInfo)) {
|
if(Objects.isNull(walletInfo)) {
|
||||||
throw new ServiceException("补贴钱包不存在");
|
throw new ServiceException("补贴钱包不存在");
|
||||||
}
|
}
|
||||||
clearAccWalletBalance(walletInfo.getWalletBal(), param.getUserId(), AccWalletIdEnum.SUBSIDY.getKey());
|
accWalletInfoService.clearAccWalletBalance(walletInfo.getWalletBal(),
|
||||||
|
param.getUserId(),
|
||||||
|
AccWalletIdEnum.SUBSIDY,
|
||||||
|
AccTradeTypeEnum.CLEAR,
|
||||||
|
PayChannelEnum.GC_SYSTEM,
|
||||||
|
PayTypeEnum.SUB_GRANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
// private BigDecimal calculateClearAmount(BigDecimal walletBal, Integer clearType, BigDecimal amount) {
|
// private BigDecimal calculateClearAmount(BigDecimal walletBal, Integer clearType, BigDecimal amount) {
|
||||||
|
|
@ -157,7 +166,13 @@ public class AccSubServiceImpl implements AccSubService {
|
||||||
throw new ServiceException(accInfo.getNickName() + "的账户不存在");
|
throw new ServiceException(accInfo.getNickName() + "的账户不存在");
|
||||||
}
|
}
|
||||||
accInfoService.checkAccStatus(accInfoVO);
|
accInfoService.checkAccStatus(accInfoVO);
|
||||||
addAccWalletBalance(amount, accInfo.getUserId(), AccWalletIdEnum.SUBSIDY.getKey());
|
accWalletInfoService.addAccWalletBalance(
|
||||||
|
amount,
|
||||||
|
accInfo.getUserId(),
|
||||||
|
AccWalletIdEnum.SUBSIDY,
|
||||||
|
AccTradeTypeEnum.SUBSIDY,
|
||||||
|
PayChannelEnum.GC_SYSTEM,
|
||||||
|
PayTypeEnum.SUB_GRANT);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("批量补贴充值异常, 用户id: {}, 补贴金额:{}", accInfo.getUserId(), amount, ex);
|
log.error("批量补贴充值异常, 用户id: {}, 补贴金额:{}", accInfo.getUserId(), amount, ex);
|
||||||
}
|
}
|
||||||
|
|
@ -200,30 +215,6 @@ public class AccSubServiceImpl implements AccSubService {
|
||||||
|
|
||||||
log.info("批量清空补贴结束");
|
log.info("批量清空补贴结束");
|
||||||
}
|
}
|
||||||
public void addAccWalletBalance(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.ADD_BAL.getKey());
|
|
||||||
if (AccWalletIdEnum.SUBSIDY.getKey().equals(walletId)) {
|
|
||||||
operation.setTradeType(AccTradeTypeEnum.SUBSIDY.getKey());
|
|
||||||
operation.setPayChannel(PayChannelEnum.GW_SYSTEM.getKey());
|
|
||||||
operation.setPayType(PayTypeEnum.SUB_GRANT.getKey());
|
|
||||||
} else if (AccWalletIdEnum.WALLET.getKey().equals(walletId)) {
|
|
||||||
operation.setTradeType(AccTradeTypeEnum.RECHARGE.getKey());
|
|
||||||
operation.setPayChannel(PayChannelEnum.ALI.getKey());
|
|
||||||
operation.setPayType(PayTypeEnum.ALI_H5_PAY.getKey());
|
|
||||||
}
|
|
||||||
accWalletInfoService.acWalletBalanceOperation(operation);
|
|
||||||
log.info("新增补贴结束");
|
|
||||||
} finally {
|
|
||||||
AccRedisUtils.unlockUpdateAccWalletBalance(userId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// public void reduceAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) {
|
// public void reduceAccWalletBalance(BigDecimal amount, Long userId, Integer walletId) {
|
||||||
// log.info("清空补贴入参: amount:{}, userId:{},walletId:{}", amount, userId, walletId);
|
// log.info("清空补贴入参: amount:{}, userId:{},walletId:{}", amount, userId, walletId);
|
||||||
|
|
@ -244,25 +235,6 @@ public class AccSubServiceImpl implements AccSubService {
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
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());
|
|
||||||
operation.setPayChannel(PayChannelEnum.GW_SYSTEM.getKey());
|
|
||||||
operation.setPayType(PayTypeEnum.SUB_GRANT.getKey());
|
|
||||||
accWalletInfoService.acWalletBalanceOperation(operation);
|
|
||||||
log.info("清空补贴结束");
|
|
||||||
} finally {
|
|
||||||
AccRedisUtils.unlockUpdateAccWalletBalance(userId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param) {
|
public AccBatchOperationWalletPreCheckVO batchOperationWalletClearCheck(AccSubsidyBatchClearParam param) {
|
||||||
log.info("批量清空校验操作人数:{}", param.getUserIds().size());
|
log.info("批量清空校验操作人数:{}", param.getUserIds().size());
|
||||||
List<AccInfoDetailsVO> accInfoVOList = accInfoService.queryAccInfoByUserIds(param.getUserIds());
|
List<AccInfoDetailsVO> accInfoVOList = accInfoService.queryAccInfoByUserIds(param.getUserIds());
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
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.constants.WalletBalanceOperationEnum;
|
||||||
import com.bonus.canteen.core.account.domain.AccTrade;
|
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||||
import com.bonus.canteen.core.account.domain.AccTradeWalletDetail;
|
import com.bonus.canteen.core.account.domain.AccTradeWalletDetail;
|
||||||
|
|
@ -20,7 +21,10 @@ import com.bonus.canteen.core.account.domain.bo.WalletBalanceOperation;
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
import com.bonus.canteen.core.account.domain.vo.AccWalletInfoVO;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeWalletDetailService;
|
import com.bonus.canteen.core.account.service.IAccTradeWalletDetailService;
|
||||||
|
import com.bonus.canteen.core.account.utils.AccRedisUtils;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||||
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||||
import com.bonus.common.core.constant.SecurityConstants;
|
import com.bonus.common.core.constant.SecurityConstants;
|
||||||
import com.bonus.common.core.exception.ServiceException;
|
import com.bonus.common.core.exception.ServiceException;
|
||||||
import com.bonus.common.core.utils.DateUtils;
|
import com.bonus.common.core.utils.DateUtils;
|
||||||
|
|
@ -114,18 +118,6 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改钱包详情信息
|
|
||||||
*
|
|
||||||
* @param accWalletInfo 钱包详情信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public int updateAccWalletInfo(AccWalletInfo accWalletInfo) {
|
|
||||||
accWalletInfo.setUpdateTime(DateUtils.getNowDate());
|
|
||||||
return accWalletInfoMapper.updateAccWalletInfo(accWalletInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除钱包详情信息
|
* 批量删除钱包详情信息
|
||||||
*
|
*
|
||||||
|
|
@ -180,23 +172,73 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAccWalletInfo(WalletBalanceOperation operation) {
|
|
||||||
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(),
|
|
||||||
SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void clearAccWalletInfo(WalletBalanceOperation operation) {
|
// private void clearAccWalletInfo(WalletBalanceOperation operation) {
|
||||||
// accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId(),
|
// accWalletInfoMapper.clearAccWalletInfo(operation.getUserId(), operation.getWalletId(),
|
||||||
// SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date()));
|
// SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date()));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void acWalletBalanceOperation(WalletBalanceOperation operation) {
|
public void addAccWalletBalance(BigDecimal amount,
|
||||||
|
Long userId,
|
||||||
|
AccWalletIdEnum walletIdEnum,
|
||||||
|
AccTradeTypeEnum accTradeTypeEnum,
|
||||||
|
PayChannelEnum payChannelEnum,
|
||||||
|
PayTypeEnum payTypeEnum) {
|
||||||
|
log.info("新增钱包入参: amount:{}, userId:{},walletId:{}", amount, userId, walletIdEnum.getKey());
|
||||||
|
AccRedisUtils.lockUpdateAccWalletBalance(userId);
|
||||||
|
try {
|
||||||
|
WalletBalanceOperation operation = operationBuilder(amount,
|
||||||
|
userId,
|
||||||
|
walletIdEnum.getKey(),
|
||||||
|
accTradeTypeEnum.getKey(),
|
||||||
|
payChannelEnum.getKey(),
|
||||||
|
payTypeEnum.getKey());
|
||||||
|
operation.setOperationType(WalletBalanceOperationEnum.ADD_BAL.getKey());
|
||||||
|
acWalletBalanceOperation(operation);
|
||||||
|
log.info("新增钱包结束");
|
||||||
|
} finally {
|
||||||
|
AccRedisUtils.unlockUpdateAccWalletBalance(userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void clearAccWalletBalance(BigDecimal amount,
|
||||||
|
Long userId,
|
||||||
|
AccWalletIdEnum accWalletIdEnum,
|
||||||
|
AccTradeTypeEnum accTradeTypeEnum,
|
||||||
|
PayChannelEnum payChannelEnum,
|
||||||
|
PayTypeEnum payTypeEnum) {
|
||||||
|
log.info("扣减钱包入参: userId:{},walletId:{}", userId, accWalletIdEnum.getKey());
|
||||||
|
AccRedisUtils.lockUpdateAccWalletBalance(userId);
|
||||||
|
try {
|
||||||
|
WalletBalanceOperation operation = operationBuilder(amount,
|
||||||
|
userId,
|
||||||
|
accWalletIdEnum.getKey(),
|
||||||
|
accTradeTypeEnum.getKey(),
|
||||||
|
payChannelEnum.getKey(),
|
||||||
|
payTypeEnum.getKey());
|
||||||
|
operation.setOperationType(WalletBalanceOperationEnum.REDUCE_BAL.getKey());
|
||||||
|
acWalletBalanceOperation(operation);
|
||||||
|
log.info("扣减钱包结束");
|
||||||
|
} finally {
|
||||||
|
AccRedisUtils.unlockUpdateAccWalletBalance(userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private WalletBalanceOperation operationBuilder(BigDecimal amount, Long userId, Integer walletId,
|
||||||
|
Integer tradeType, Integer payChannel, Integer payType) {
|
||||||
|
WalletBalanceOperation operation = new WalletBalanceOperation();
|
||||||
|
operation.setUserId(userId);
|
||||||
|
operation.setAmount(amount);
|
||||||
|
operation.setWalletId(walletId);
|
||||||
|
operation.setTradeType(tradeType);
|
||||||
|
operation.setPayChannel(payChannel);
|
||||||
|
operation.setPayType(payType);
|
||||||
|
return operation;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void acWalletBalanceOperation(WalletBalanceOperation operation) {
|
||||||
try{
|
try{
|
||||||
switch (WalletBalanceOperationEnum.getEnum(operation.getOperationType())) {
|
switch (WalletBalanceOperationEnum.getEnum(operation.getOperationType())) {
|
||||||
case ADD_BAL:
|
case ADD_BAL:
|
||||||
|
|
@ -254,4 +296,14 @@ public class AccWalletInfoServiceImpl implements IAccWalletInfoService {
|
||||||
throw new ServiceException("修改钱包失败");
|
throw new ServiceException("修改钱包失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addAccWalletInfo(WalletBalanceOperation operation) {
|
||||||
|
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(),
|
||||||
|
SecurityUtils.getUserId().toString(), DateUtils.toLocalDateTime(new Date()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,10 @@ package com.bonus.canteen.core.pay.constants;
|
||||||
//import com.bonus.canteen.core.pay.channel.account.extension.AccPayExtension;
|
//import com.bonus.canteen.core.pay.channel.account.extension.AccPayExtension;
|
||||||
//import com.bonus.canteen.core.pay.channel.ali.extension.AliPayExtension;
|
//import com.bonus.canteen.core.pay.channel.ali.extension.AliPayExtension;
|
||||||
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
public enum PayChannelEnum {
|
public enum PayChannelEnum {
|
||||||
ACC(1, "系统账户", null), //AccPayExtension.class
|
ACC(1, "系统账户", null), //AccPayExtension.class
|
||||||
ALI(3, "支付宝", null), //AliPayExtension.class
|
ALI(3, "支付宝", null), //AliPayExtension.class
|
||||||
GW_SYSTEM(20, "系统后台", null);
|
GC_SYSTEM(20, "系统后台", null);
|
||||||
|
|
||||||
private final Integer key;
|
private final Integer key;
|
||||||
private final String desc;
|
private final String desc;
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,23 @@ package com.bonus.canteen.core.pay.controller;
|
||||||
import com.alipay.api.AlipayApiException;
|
import com.alipay.api.AlipayApiException;
|
||||||
import com.alipay.api.internal.util.AlipaySignature;
|
import com.alipay.api.internal.util.AlipaySignature;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
||||||
|
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
import com.bonus.canteen.core.account.domain.AccTrade;
|
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||||
import com.bonus.canteen.core.account.service.AccSubService;
|
import com.bonus.canteen.core.account.service.AccSubService;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||||
|
import com.bonus.canteen.core.account.service.IAccWalletInfoService;
|
||||||
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||||
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
||||||
import com.bonus.canteen.core.account.domain.vo.AccTradeVo;
|
import com.bonus.canteen.core.account.domain.vo.AccTradeVo;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||||
import com.bonus.canteen.core.pay.util.AlipayConfig;
|
import com.bonus.canteen.core.pay.util.AlipayConfig;
|
||||||
import com.bonus.common.security.utils.SecurityUtils;
|
import com.bonus.common.security.utils.SecurityUtils;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
@ -36,7 +41,9 @@ public class NotifyCotroller {
|
||||||
IAccTradeService accTradeService;
|
IAccTradeService accTradeService;
|
||||||
@Autowired
|
@Autowired
|
||||||
AccSubService accSubService;
|
AccSubService accSubService;
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private IAccWalletInfoService accWalletInfoService;
|
||||||
@RequestMapping("getnotify")
|
@RequestMapping("getnotify")
|
||||||
public void getNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException {
|
public void getNotify(HttpServletRequest request, HttpServletResponse response) throws AlipayApiException, IOException {
|
||||||
Map<String, String> params = new HashMap<String, String>();
|
Map<String, String> params = new HashMap<String, String>();
|
||||||
|
|
@ -80,7 +87,13 @@ public class NotifyCotroller {
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
accWalletInfoService.addAccWalletBalance(
|
||||||
|
totalAmount,
|
||||||
|
SecurityUtils.getUserId(),
|
||||||
|
AccWalletIdEnum.WALLET,
|
||||||
|
AccTradeTypeEnum.RECHARGE,
|
||||||
|
PayChannelEnum.ALI,
|
||||||
|
PayTypeEnum.ALI_H5_PAY);
|
||||||
}
|
}
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
} else if (AliPayTradeStatusEnum.TRADE_STATUS_SUCCESS.getKey().equals(trade_status)) {
|
} else if (AliPayTradeStatusEnum.TRADE_STATUS_SUCCESS.getKey().equals(trade_status)) {
|
||||||
|
|
@ -95,7 +108,13 @@ public class NotifyCotroller {
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
accWalletInfoService.addAccWalletBalance(
|
||||||
|
totalAmount,
|
||||||
|
SecurityUtils.getUserId(),
|
||||||
|
AccWalletIdEnum.WALLET,
|
||||||
|
AccTradeTypeEnum.RECHARGE,
|
||||||
|
PayChannelEnum.ALI,
|
||||||
|
PayTypeEnum.ALI_H5_PAY);
|
||||||
}
|
}
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,9 @@ import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
import com.bonus.canteen.core.account.domain.AccTrade;
|
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||||
import com.bonus.canteen.core.account.service.AccSubService;
|
import com.bonus.canteen.core.account.service.AccSubService;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||||
|
import com.bonus.canteen.core.account.service.IAccWalletInfoService;
|
||||||
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
||||||
|
import com.bonus.canteen.core.pay.constants.PayChannelEnum;
|
||||||
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
import com.bonus.canteen.core.pay.constants.PayStateEnum;
|
||||||
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
import com.bonus.canteen.core.pay.constants.PayTypeEnum;
|
||||||
import com.bonus.canteen.core.pay.util.AlipayConfig;
|
import com.bonus.canteen.core.pay.util.AlipayConfig;
|
||||||
|
|
@ -23,6 +25,7 @@ import com.bonus.common.security.utils.SecurityUtils;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
|
@ -48,7 +51,9 @@ public class PayController {
|
||||||
IAccTradeService accTradeService;
|
IAccTradeService accTradeService;
|
||||||
@Autowired
|
@Autowired
|
||||||
AccSubService accSubService;
|
AccSubService accSubService;
|
||||||
|
@Autowired
|
||||||
|
@Lazy
|
||||||
|
private IAccWalletInfoService accWalletInfoService;
|
||||||
@PostMapping("pay")
|
@PostMapping("pay")
|
||||||
public void pay(@RequestBody AccTradeVo accTradeVo, HttpServletResponse response) throws AlipayApiException, IOException {
|
public void pay(@RequestBody AccTradeVo accTradeVo, HttpServletResponse response) throws AlipayApiException, IOException {
|
||||||
// 预装数据,存档
|
// 预装数据,存档
|
||||||
|
|
@ -114,7 +119,13 @@ public class PayController {
|
||||||
AccTrade accTradeInDB = accTradeService.selectAccTradeByOrderNo(accTradeVo.getOrderNo());
|
AccTrade accTradeInDB = accTradeService.selectAccTradeByOrderNo(accTradeVo.getOrderNo());
|
||||||
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
BigDecimal totalAmount = new BigDecimal(response.getTotalAmount());
|
BigDecimal totalAmount = new BigDecimal(response.getTotalAmount());
|
||||||
accSubService.addAccWalletBalance(totalAmount, accTradeVo.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
accWalletInfoService.addAccWalletBalance(
|
||||||
|
totalAmount,
|
||||||
|
accTradeVo.getUserId(),
|
||||||
|
AccWalletIdEnum.WALLET,
|
||||||
|
AccTradeTypeEnum.RECHARGE,
|
||||||
|
PayChannelEnum.ALI,
|
||||||
|
PayTypeEnum.ALI_H5_PAY);
|
||||||
}
|
}
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -104,25 +104,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
</foreach>
|
</foreach>
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<update id="updateAccWalletInfo" parameterType="com.bonus.canteen.core.account.domain.AccWalletInfo">
|
|
||||||
update acc_wallet_info
|
|
||||||
<trim prefix="SET" suffixOverrides=",">
|
|
||||||
<if test="accId != null">acc_id = #{accId},</if>
|
|
||||||
<if test="walletId != null">wallet_id = #{walletId},</if>
|
|
||||||
<if test="walletBal != null">wallet_bal = #{walletBal},</if>
|
|
||||||
<if test="limitBalance != null">limit_balance = #{limitBalance},</if>
|
|
||||||
<if test="frozenBalance != null">frozen_balance = #{frozenBalance},</if>
|
|
||||||
<if test="expiredTime != null">expired_time = #{expiredTime},</if>
|
|
||||||
<if test="lastSubsidyAmount != null">last_subsidy_amount = #{lastSubsidyAmount},</if>
|
|
||||||
<if test="lastSubsidyTime != null">last_subsidy_time = #{lastSubsidyTime},</if>
|
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
|
||||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
|
||||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
|
||||||
</trim>
|
|
||||||
where user_id = #{userId}
|
|
||||||
</update>
|
|
||||||
|
|
||||||
<delete id="deleteAccWalletInfoByUserId" parameterType="Long">
|
<delete id="deleteAccWalletInfoByUserId" parameterType="Long">
|
||||||
delete from acc_wallet_info where user_id = #{userId}
|
delete from acc_wallet_info where user_id = #{userId}
|
||||||
</delete>
|
</delete>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue