refactor: 调整支付宝支付流程和会员相关功能

master
yang 2025-02-10 13:54:14 +08:00
parent f4e4ef40c1
commit 13d4e21691
7 changed files with 31 additions and 16 deletions

View File

@ -21,9 +21,7 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.*;
@RestController
@RequestMapping("member")
@ -181,11 +179,17 @@ public class MemberController {
@ApiOperation(value = "是否是会员")
public AjaxResult isMember() {
Long userId = SecurityUtils.getUserId();
Map<String, Long> map = new HashMap<>();
Member member = memberService.getUseUserMemberByUserId(userId);
if (Optional.ofNullable(member).isPresent()) {
return AjaxResult.success(true);
map.put("result", 1L);
return AjaxResult.success(map);
}
return AjaxResult.success(false);
map.put("result", 0L);
map.put("startDate", member.getStartDate().getTime());
map.put("endDate", member.getEndDate().getTime());
return AjaxResult.success(map);
}
}

View File

@ -33,6 +33,7 @@ import javax.validation.constraints.NotNull;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* @AuthorChenYan
@ -68,7 +69,7 @@ public class AliPayController extends BaseController {
*/
@ApiOperation(value = "支付宝绑定")
@GetMapping("/generateQrCode")
public void generateQrCode(HttpServletResponse response) throws Exception {
public AjaxResult generateQrCode(HttpServletResponse response) throws Exception {
String scope = "auth_user"; // 需要获取用户信息
String appId = "2021005114616085";
String state = ShareCodeUtils.idToCode(SecurityUtils.getUserId()); // 防止CSRF攻击
@ -80,6 +81,7 @@ public class AliPayController extends BaseController {
);
QrCodeUtil.generate(authUrl, 300, 300, "png", response.getOutputStream());
return AjaxResult.success("成功", authUrl);
}
/**
@ -130,6 +132,9 @@ public class AliPayController extends BaseController {
String type = orderTradeDto.getType();
if ("member".equalsIgnoreCase(type)) {
if (!Optional.ofNullable(orderTradeDto.getProductId()).isPresent()) {
return AjaxResult.error("商品id不能为空");
}
payVo = aliPayService.memberPay(orderTradeDto);
} else if ("points".equalsIgnoreCase(type)) {
payVo = aliPayService.pointsPay(orderTradeDto.getPaymentAmount());

View File

@ -121,7 +121,7 @@ public class OrderTradeController extends BaseController {
*/
@GetMapping("/queryTradeStatus")
@ApiOperation(value = "查询交易状态")
public Object queryTradeStatus(@Valid @NotBlank(message = "订单号不能为空") @RequestParam String outTradeNo) throws Exception {
public Object queryTradeStatus(@Valid @NotBlank(message = "订单号不能为空") String outTradeNo) throws Exception {
Factory.setOptions(config);
AlipayTradeQueryResponse query = Factory.Payment.Common().query(outTradeNo);
Map<String, Object> map = JSONUtils.jsonToMap(query.getHttpBody());

View File

@ -83,7 +83,7 @@ public class OrderTrade extends BaseEntity {
@NotNull(message = "总金额不能为空")
@MinMoney(value = 0, message = "总金额不能小于0")
@MaxMoney(value = 100000, message = "总金额必须小于100000")
private Integer totalAmount;
private Double totalAmount;
/**
*
*/

View File

@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@ -13,8 +14,7 @@ public class OrderTradeDto {
/**
* ID
*/
@ApiModelProperty(value = "商品ID", required = true)
@NotNull(message = "商品ID不能为空")
@ApiModelProperty(value = "商品ID 如果订单类型是points可以不传")
private Integer productId;
/**
@ -28,7 +28,7 @@ public class OrderTradeDto {
* member points
*/
@ApiModelProperty(value = "订单类型 会员member 积分points", required = true)
@NotNull(message = "订单类型不能为空")
@NotBlank(message = "订单类型不能为空")
private String type;
/**

View File

@ -48,6 +48,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
@ -158,8 +159,11 @@ public class AliPayServiceImpl implements AliPayService {
tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
tradeEntity.setUserId(SecurityUtils.getUserId());
tradeEntity.setUserName(SecurityUtils.getUsername());
tradeEntity.setProductId(productId);
tradeEntity.setProductName(memberLevel.getMemberName());
tradeEntity.setTotalAmount(orderTradeDto.getPaymentAmount());
tradeEntity.setOrderStatus(3);
tradeEntity.setPayStatus(2);
orderTradeService.save(tradeEntity);
//调用支付宝的接口
@ -199,7 +203,9 @@ public class AliPayServiceImpl implements AliPayService {
tradeEntity.setProductId(-1);
tradeEntity.setProductName("积分充值");
tradeEntity.setUserName(SecurityUtils.getUsername());
tradeEntity.setPaymentAmount(paymentAmount.intValue());
tradeEntity.setTotalAmount(paymentAmount);
tradeEntity.setOrderStatus(1);
tradeEntity.setPayStatus(1);
//调用支付宝的接口
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()

View File

@ -218,14 +218,14 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
String totalAmountStr = params.get("total_amount");
if (totalAmountStr != null && !totalAmountStr.isEmpty()) {
BigDecimal totalAmount = new BigDecimal(totalAmountStr);
orderTrade.setTotalAmount(totalAmount.intValue());
orderTrade.setTotalAmount(totalAmount.doubleValue());
}
String buyerPayAmountStr = params.get("buyer_pay_amount");
if (buyerPayAmountStr != null && !buyerPayAmountStr.isEmpty()) {
BigDecimal buyerPayAmount = new BigDecimal(buyerPayAmountStr);
orderTrade.setPaymentAmount(buyerPayAmount.intValue());
}
orderTrade.setCreateTime(new Date());
orderTradeService.save(orderTrade);
orderTrade.setUpdateTime(new Date());
orderTradeService.updateById(orderTrade);
}
}