package cn.iocoder.yudao.module.pay.controller.admin.wallet; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletPageReqVO; import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletRespVO; import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletUpdateBalanceReqVO; import cn.iocoder.yudao.module.pay.controller.admin.wallet.vo.wallet.PayWalletUserReqVO; import cn.iocoder.yudao.module.pay.convert.wallet.PayWalletConvert; import cn.iocoder.yudao.module.pay.dal.dataobject.wallet.PayWalletDO; import cn.iocoder.yudao.module.pay.enums.wallet.PayWalletBizTypeEnum; import cn.iocoder.yudao.module.pay.service.wallet.PayWalletService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import static cn.iocoder.yudao.framework.common.enums.UserTypeEnum.MEMBER; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.module.pay.enums.ErrorCodeConstants.WALLET_NOT_FOUND; @Tag(name = "管理后台 - 用户钱包") @RestController @RequestMapping("/pay/wallet") @Validated @Slf4j public class PayWalletController { @Resource private PayWalletService payWalletService; @GetMapping("/get") @PreAuthorize("@ss.hasPermission('pay:wallet:query')") @Operation(summary = "获得用户钱包明细") public CommonResult getWallet(PayWalletUserReqVO reqVO) { PayWalletDO wallet = payWalletService.getOrCreateWallet(reqVO.getUserId(), MEMBER.getValue()); return success(PayWalletConvert.INSTANCE.convert02(wallet)); } @GetMapping("/page") @Operation(summary = "获得会员钱包分页") @PreAuthorize("@ss.hasPermission('pay:wallet:query')") public CommonResult> getWalletPage(@Valid PayWalletPageReqVO pageVO) { PageResult pageResult = payWalletService.getWalletPage(pageVO); return success(PayWalletConvert.INSTANCE.convertPage(pageResult)); } @PutMapping("/update-balance") @Operation(summary = "更新会员用户余额") @PreAuthorize("@ss.hasPermission('pay:wallet:update-balance')") public CommonResult updateWalletBalance(@Valid @RequestBody PayWalletUpdateBalanceReqVO updateReqVO) { // 获得用户钱包 PayWalletDO wallet = payWalletService.getOrCreateWallet(updateReqVO.getUserId(), MEMBER.getValue()); if (wallet == null) { log.error("[updateWalletBalance],updateReqVO({}) 用户钱包不存在.", updateReqVO); throw exception(WALLET_NOT_FOUND); } // 更新钱包余额 payWalletService.addWalletBalance(wallet.getId(), String.valueOf(updateReqVO.getUserId()), PayWalletBizTypeEnum.UPDATE_BALANCE, updateReqVO.getBalance()); return success(true); } }