新增余额支付接口
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
package com.gxwebsoft.common.system.controller;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.gxwebsoft.common.core.config.ConfigProperties;
|
||||||
|
import com.gxwebsoft.common.core.utils.RedisUtil;
|
||||||
|
import com.gxwebsoft.common.core.utils.RequestUtil;
|
||||||
|
import com.gxwebsoft.common.core.web.BaseController;
|
||||||
|
import com.gxwebsoft.common.system.entity.Payment;
|
||||||
|
import com.wechat.pay.java.core.notification.NotificationConfig;
|
||||||
|
import com.wechat.pay.java.core.notification.NotificationParser;
|
||||||
|
import com.wechat.pay.java.core.notification.RSANotificationConfig;
|
||||||
|
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 会员特权购买记录表控制器
|
||||||
|
*
|
||||||
|
* @author 科技小王子
|
||||||
|
* @since 2023-06-20 18:07:50
|
||||||
|
*/
|
||||||
|
@Api(tags = "余额支付结果通知(未完成)")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/system/balance-pay")
|
||||||
|
public class NotifyByBalancePayController extends BaseController {
|
||||||
|
@Value("${spring.profiles.active}")
|
||||||
|
String active;
|
||||||
|
@Resource
|
||||||
|
private RedisUtil redisUtil;
|
||||||
|
@Resource
|
||||||
|
private RequestUtil requestUtil;
|
||||||
|
@Resource
|
||||||
|
private ConfigProperties conf;
|
||||||
|
|
||||||
|
@ApiModelProperty("异步通知")
|
||||||
|
@PostMapping("/notify/{tenantId}")
|
||||||
|
public String wxNotify(@RequestHeader Map<String, String> header, @RequestBody String body, @PathVariable("tenantId") Integer tenantId) {
|
||||||
|
System.out.println("异步通知*************** = ");
|
||||||
|
|
||||||
|
// 以支付通知回调为例,验签、解密并转换成 Transaction
|
||||||
|
try {
|
||||||
|
// 推送微信官方支付结果(携带租户ID的POST请求)
|
||||||
|
// requestUtil.pushBalancePayNotify();
|
||||||
|
return "SUCCESS";
|
||||||
|
} catch (Exception $e) {
|
||||||
|
System.out.println($e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
return "fail";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,18 +3,19 @@ package com.gxwebsoft.common.system.controller;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||||
import com.gxwebsoft.common.core.utils.RedisUtil;
|
import com.gxwebsoft.common.core.utils.RedisUtil;
|
||||||
import com.gxwebsoft.common.core.web.BaseController;
|
import com.gxwebsoft.common.core.web.BaseController;
|
||||||
import com.gxwebsoft.common.system.entity.Merchant;
|
import com.gxwebsoft.common.system.entity.*;
|
||||||
import com.gxwebsoft.common.system.entity.User;
|
|
||||||
import com.gxwebsoft.common.system.service.PaymentService;
|
import com.gxwebsoft.common.system.service.PaymentService;
|
||||||
import com.gxwebsoft.common.system.entity.Payment;
|
|
||||||
import com.gxwebsoft.common.system.param.PaymentParam;
|
import com.gxwebsoft.common.system.param.PaymentParam;
|
||||||
import com.gxwebsoft.common.core.web.ApiResult;
|
import com.gxwebsoft.common.core.web.ApiResult;
|
||||||
import com.gxwebsoft.common.core.web.PageResult;
|
import com.gxwebsoft.common.core.web.PageResult;
|
||||||
import com.gxwebsoft.common.core.web.PageParam;
|
import com.gxwebsoft.common.core.web.PageParam;
|
||||||
import com.gxwebsoft.common.core.web.BatchParam;
|
import com.gxwebsoft.common.core.web.BatchParam;
|
||||||
import com.gxwebsoft.common.core.annotation.OperationLog;
|
import com.gxwebsoft.common.core.annotation.OperationLog;
|
||||||
|
import com.gxwebsoft.common.system.service.UserBalanceLogService;
|
||||||
|
import com.gxwebsoft.common.system.service.UserService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
@@ -22,9 +23,13 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN;
|
||||||
|
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_USE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式控制器
|
* 支付方式控制器
|
||||||
*
|
*
|
||||||
@@ -38,8 +43,47 @@ public class PaymentController extends BaseController {
|
|||||||
@Resource
|
@Resource
|
||||||
private PaymentService paymentService;
|
private PaymentService paymentService;
|
||||||
@Resource
|
@Resource
|
||||||
|
private UserService userService;
|
||||||
|
@Resource
|
||||||
|
private UserBalanceLogService userBalanceLogService;
|
||||||
|
@Resource
|
||||||
private RedisUtil redisUtil;
|
private RedisUtil redisUtil;
|
||||||
|
|
||||||
|
@ApiOperation("余额支付接口")
|
||||||
|
@PostMapping("/balancePay")
|
||||||
|
public ApiResult<?> balancePay(@RequestBody Order order) {
|
||||||
|
System.out.println("使用余额支付 >>> 订单信息 " + order);
|
||||||
|
|
||||||
|
// 查询购买者信息
|
||||||
|
final User buyer = userService.getById(order.getUserId());
|
||||||
|
|
||||||
|
if (buyer.getBalance().compareTo(order.getPayPrice()) < 0) {
|
||||||
|
return fail("余额不足");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扣除余额
|
||||||
|
final BigDecimal subtract = buyer.getBalance().subtract(order.getTotalPrice());
|
||||||
|
buyer.setBalance(subtract);
|
||||||
|
final boolean updateUser = userService.updateUser(buyer);
|
||||||
|
System.out.println("updateUser = " + updateUser);
|
||||||
|
|
||||||
|
// 记录余额明细
|
||||||
|
UserBalanceLog userBalanceLog = new UserBalanceLog();
|
||||||
|
userBalanceLog.setUserId(buyer.getUserId());
|
||||||
|
userBalanceLog.setScene(BALANCE_USE);
|
||||||
|
userBalanceLog.setMoney(order.getPayPrice());
|
||||||
|
BigDecimal balance = buyer.getBalance().add(order.getPayPrice());
|
||||||
|
userBalanceLog.setBalance(balance);
|
||||||
|
userBalanceLog.setComments(order.getMerchantName());
|
||||||
|
userBalanceLog.setOrderNo(order.getOrderNo());
|
||||||
|
final boolean save = userBalanceLogService.save(userBalanceLog);
|
||||||
|
System.out.println("save = " + save);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return success("支付成功",order.getOrderNo());
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("选择支付方式")
|
@ApiOperation("选择支付方式")
|
||||||
@GetMapping("/select")
|
@GetMapping("/select")
|
||||||
public ApiResult<?> select(PaymentParam param) {
|
public ApiResult<?> select(PaymentParam param) {
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ public class UserBalanceLog implements Serializable {
|
|||||||
@ApiModelProperty(value = "变动后余额")
|
@ApiModelProperty(value = "变动后余额")
|
||||||
private BigDecimal balance;
|
private BigDecimal balance;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "订单编号")
|
||||||
|
private String orderNo;
|
||||||
|
|
||||||
@ApiModelProperty(value = "管理员备注")
|
@ApiModelProperty(value = "管理员备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class UserBalanceLogServiceImpl extends ServiceImpl<UserBalanceLogMapper,
|
|||||||
@Override
|
@Override
|
||||||
public PageResult<UserBalanceLog> pageRel(UserBalanceLogParam param) {
|
public PageResult<UserBalanceLog> pageRel(UserBalanceLogParam param) {
|
||||||
PageParam<UserBalanceLog, UserBalanceLogParam> page = new PageParam<>(param);
|
PageParam<UserBalanceLog, UserBalanceLogParam> page = new PageParam<>(param);
|
||||||
page.setDefaultOrder("create_time asc");
|
page.setDefaultOrder("create_time desc");
|
||||||
List<UserBalanceLog> list = baseMapper.selectPageRel(page, param);
|
List<UserBalanceLog> list = baseMapper.selectPageRel(page, param);
|
||||||
return new PageResult<>(list, page.getTotal());
|
return new PageResult<>(list, page.getTotal());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user