| | |
| | | import com.dy.common.webUtil.BaseResponseUtils; |
| | | import com.dy.common.webUtil.ResultCodeMsg; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeWallet; |
| | | import com.dy.pipIrrGlobal.pojoSe.SeWalletRecharge; |
| | | import com.dy.pipIrrSell.result.SellResultCode; |
| | | import com.dy.pipIrrSell.wallet.dto.DtoRecharge; |
| | | import io.swagger.v3.oas.annotations.Operation; |
| | | import io.swagger.v3.oas.annotations.media.Content; |
| | | import io.swagger.v3.oas.annotations.media.Schema; |
| | | import io.swagger.v3.oas.annotations.responses.ApiResponse; |
| | | import io.swagger.v3.oas.annotations.responses.ApiResponses; |
| | | import io.swagger.v3.oas.annotations.tags.Tag; |
| | | import jakarta.validation.Valid; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.validation.BindingResult; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Optional; |
| | |
| | | public class WalletCtrl { |
| | | private final WalletSv walletSv; |
| | | |
| | | /** |
| | | * 注册电子钱包账户 |
| | | * 注册钱先验证该农户是否已经注册电子钱包 |
| | | * @param clientId |
| | | * @return |
| | | */ |
| | | @Operation(summary = "注册电子钱包", description = "注册电子钱包") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | |
| | | schema = @Schema(implementation = Boolean.class))} |
| | | ) |
| | | }) |
| | | @PostMapping(path = "add") |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @PostMapping(path = "add_wallet") |
| | | @SsoAop() |
| | | //public BaseResponse<Boolean> add(@RequestBody Long clientId){ |
| | | public BaseResponse<Boolean> add(@RequestParam("clientId") @NotNull(message = "农户编号不能为空") Long clientId){ |
| | | public BaseResponse<Boolean> addWallet(@RequestParam("clientId") @NotNull(message = "农户编号不能为空") Long clientId){ |
| | | if(clientId == null || clientId < 0) { |
| | | return BaseResponseUtils.buildFail("农户编号不能为空"); |
| | | return BaseResponseUtils.buildFail(SellResultCode.CLIENT_ID_CANNOT_BE_NULL.getMessage()); |
| | | } |
| | | |
| | | if(walletSv.getWalletByClientId(clientId) != null) { |
| | | return BaseResponseUtils.buildFail(SellResultCode.WALLET_ACCOUNT_EXIST.getMessage()); |
| | | } |
| | | |
| | | SeWallet seWallet = new SeWallet(); |
| | | seWallet.setClientid(clientId); |
| | | seWallet.setMoney(0f); |
| | | seWallet.setCreatedt(new Date()); |
| | | Integer rec = Optional.ofNullable(walletSv.add(seWallet)).orElse(0); |
| | | seWallet.setClientId(clientId); |
| | | seWallet.setMoney(0d); |
| | | seWallet.setLastOperate(LastOperateENUM.OPEN_ACCOUNT.getCode()); |
| | | seWallet.setLastOperateTime(new Date()); |
| | | seWallet.setCreateTime(new Date()); |
| | | Long rec = Optional.ofNullable(walletSv.addWallet(seWallet)).orElse(0L); |
| | | if(rec == 0) { |
| | | return BaseResponseUtils.buildFail("注册电子钱包-电子钱包记录写入异常"); |
| | | return BaseResponseUtils.buildFail(SellResultCode.WALLET_OPEN_ACCOUNT_FAIL.getMessage()); |
| | | } |
| | | |
| | | return BaseResponseUtils.buildSuccess(true) ; |
| | | } |
| | | |
| | | //@Operation(summary = "电子钱包充值", description = "电子钱包充值") |
| | | //@ApiResponses(value = { |
| | | // @ApiResponse( |
| | | // responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | // description = "操作结果:true:成功,false:失败(BaseResponse.content)", |
| | | // content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | // schema = @Schema(implementation = Boolean.class))} |
| | | // ) |
| | | //}) |
| | | //@PostMapping(path = "addRecharge") |
| | | //@Transactional(rollbackFor = Exception.class) |
| | | //@SsoAop() |
| | | //public BaseResponse<Boolean> addRecharge(@RequestBody @Valid DtoWalletRecharge po, @Parameter(hidden = true) BindingResult bindingResult){ |
| | | // DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | // if(bindingResult != null && bindingResult.hasErrors()){ |
| | | // return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage()); |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // SeWallet seWallet = new SeWallet(); |
| | | // seWallet.setClientid(clientId); |
| | | // seWallet.setMoney(0f); |
| | | // seWallet.setCreatedt(new Date()); |
| | | // Integer rec = Optional.ofNullable(walletSv.add(seWallet)).orElse(0); |
| | | // if(rec == 0) { |
| | | // return BaseResponseUtils.buildFail("注册电子钱包-电子钱包记录写入异常"); |
| | | // } |
| | | // |
| | | // return BaseResponseUtils.buildSuccess(true) ; |
| | | //} |
| | | /** |
| | | * 电子钱包账户充值 |
| | | * @param po |
| | | * @param bindingResult |
| | | * @return |
| | | */ |
| | | @Operation(summary = "电子钱包充值", description = "电子钱包充值") |
| | | @ApiResponses(value = { |
| | | @ApiResponse( |
| | | responseCode = ResultCodeMsg.RsCode.SUCCESS_CODE, |
| | | description = "操作结果:true:成功,false:失败(BaseResponse.content)", |
| | | content = {@Content(mediaType = MediaType.APPLICATION_JSON_VALUE, |
| | | schema = @Schema(implementation = Boolean.class))} |
| | | ) |
| | | }) |
| | | @PostMapping(path = "add_recharge", consumes = MediaType.APPLICATION_JSON_VALUE) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @SsoAop() |
| | | public BaseResponse<Boolean> addRecharge(@RequestBody @Valid DtoRecharge po, BindingResult bindingResult){ |
| | | Long clientId = Optional.ofNullable(po .getClientId()).orElse(0L); |
| | | Double amount = Optional.ofNullable(po.getAmount()).orElse(0.0); |
| | | |
| | | // 验证该农户是否已经注册电子钱包账户并取出ID及当前账户余额 |
| | | SeWallet seWallet = walletSv.getWalletByClientId(clientId); |
| | | if(seWallet == null) { |
| | | return BaseResponseUtils.buildFail(SellResultCode.NO_ACCOUNT.getMessage()); |
| | | } |
| | | Long wallerId = Optional.ofNullable(seWallet.getId()).orElse(0L); |
| | | Double money = Optional.ofNullable(seWallet.getMoney()).orElse(0.0); |
| | | |
| | | // 计算充值后余额 |
| | | Double afterRrecharge = money + amount; |
| | | |
| | | // 修改电子钱包余额、最后操作类型、最后操作时间 |
| | | seWallet.setMoney(afterRrecharge); |
| | | seWallet.setLastOperate(LastOperateENUM.RECHARGE.getCode()); |
| | | seWallet.setLastOperateTime(new Date()); |
| | | Integer rec_updateWaller = Optional.ofNullable(walletSv.updateWallet(seWallet)).orElse(0); |
| | | if(rec_updateWaller == 0) { |
| | | return BaseResponseUtils.buildFail(SellResultCode.UPDATE_ACCOUNT_FAIL.getMessage()); |
| | | } |
| | | |
| | | // 添加充值记录 |
| | | SeWalletRecharge seWalletRecharge = new SeWalletRecharge(); |
| | | seWalletRecharge.setWalletId(wallerId); |
| | | seWalletRecharge.setClientId(clientId); |
| | | seWalletRecharge.setMoney(money); |
| | | seWalletRecharge.setAmount(amount); |
| | | seWalletRecharge.setAfterRecharge(afterRrecharge); |
| | | seWalletRecharge.setRechargeTime(new Date()); |
| | | Long rec = Optional.ofNullable(walletSv.addRecharge(seWalletRecharge)).orElse(0L); |
| | | if(rec == 0) { |
| | | return BaseResponseUtils.buildFail(SellResultCode.WALLET_OPEN_ACCOUNT_FAIL.getMessage()); |
| | | } |
| | | return BaseResponseUtils.buildSuccess(true) ; |
| | | } |
| | | |
| | | } |