Compare commits

...

3 Commits

Author SHA1 Message Date
caolin 5db6f312ed 小程序支付调整 2023-08-23 22:29:50 +08:00
caolin d019f727fd 小程序支付调整 2023-08-23 22:15:41 +08:00
caolin 61afc0928f 小程序支付调整 2023-08-23 16:02:14 +08:00
9 changed files with 49 additions and 18 deletions

View File

@ -1,7 +1,9 @@
package com.jwl.driver.server.controller; package com.jwl.driver.server.controller;
import com.jwl.driver.server.config.WechatPayConfig; import com.jwl.driver.server.config.WechatPayConfig;
import com.jwl.driver.server.entity.OrderPayInfo;
import com.jwl.driver.server.response.BaseResponse; import com.jwl.driver.server.response.BaseResponse;
import com.jwl.driver.server.service.IOrderPayInfoService;
import com.jwl.driver.server.util.WechatPayUtil; import com.jwl.driver.server.util.WechatPayUtil;
import com.jwl.driver.server.vo.AppletPayVo; import com.jwl.driver.server.vo.AppletPayVo;
import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.Config;
@ -13,12 +15,14 @@ import com.wechat.pay.java.service.payments.model.Transaction;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
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;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
/** /**
* *
@ -32,23 +36,27 @@ public class AppletPayController {
@Resource @Resource
private WechatPayConfig wechatPayConfig; private WechatPayConfig wechatPayConfig;
@Autowired
private IOrderPayInfoService orderPayInfoService;
//生成预支付订单 //生成预支付订单
@ApiOperation("生成预支付订单") @ApiOperation("生成预支付订单")
@PostMapping("/prepay") @PostMapping("/prepay")
public BaseResponse createPrepay(@RequestBody AppletPayVo payDto){ public BaseResponse createPrepay(@RequestBody AppletPayVo payDto){
// 构建service // 构建service
JsapiServiceExtension service = createService(); JsapiServiceExtension service = createService();
OrderPayInfo orderPayInfo = orderPayInfoService.createOrderPayInfo(payDto.getMoney(),payDto.getUserId(), payDto.getDescription(), payDto.getOutTradeNo(), "applet");
// 请求下单参数 // 请求下单参数
PrepayRequest request = new PrepayRequest(); PrepayRequest request = new PrepayRequest();
Amount amount = new Amount(); Amount amount = new Amount();
amount.setTotal(Integer.valueOf((payDto.getMoney()*100)+"")); amount.setTotal(Integer.valueOf((payDto.getMoney().multiply(new BigDecimal("100")).setScale(0).toString())+""));
request.setAmount(amount); request.setAmount(amount);
request.setAppid(wechatPayConfig.getAppId()); request.setAppid(wechatPayConfig.getAppId());
request.setMchid(wechatPayConfig.getMchId()); request.setMchid(wechatPayConfig.getMchId());
request.setDescription(payDto.getDescription()); request.setDescription(payDto.getDescription());
request.setNotifyUrl(wechatPayConfig.getPayNoticeUrl()); request.setNotifyUrl(wechatPayConfig.getPayNoticeUrl());
request.setOutTradeNo(payDto.getOutTradeNo()); request.setOutTradeNo(orderPayInfo.getPayId().toString());
Payer payer = new Payer(); Payer payer = new Payer();
payer.setOpenid(WechatPayUtil.getOpenId(wechatPayConfig.getAppId(), wechatPayConfig.getAppSecret(), payDto.getCode())); payer.setOpenid(WechatPayUtil.getOpenId(wechatPayConfig.getAppId(), wechatPayConfig.getAppSecret(), payDto.getCode()));

View File

@ -46,7 +46,7 @@ public class H5PayController {
// 构建service // 构建service
H5Service service = createService(); H5Service service = createService();
//在order_pay_info里新增一条数据 //在order_pay_info里新增一条数据
OrderPayInfo orderPayInfo = orderPayInfoService.createOrderPayInfo(payVo); OrderPayInfo orderPayInfo = orderPayInfoService.createOrderPayInfo(payVo.getMoney(),payVo.getUserId(),payVo.getDescription(), payVo.getOutTradeNo(), "h5");
// 请求下单参数 // 请求下单参数
PrepayRequest request = new PrepayRequest(); PrepayRequest request = new PrepayRequest();

View File

@ -5,6 +5,7 @@ import com.jwl.driver.server.dto.MemberQueryDto;
import com.jwl.driver.server.exception.BusinessException; import com.jwl.driver.server.exception.BusinessException;
import com.jwl.driver.server.response.BaseResponse; import com.jwl.driver.server.response.BaseResponse;
import com.jwl.driver.server.service.ITdMemberService; import com.jwl.driver.server.service.ITdMemberService;
import com.jwl.driver.server.util.SecurityUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -46,6 +47,6 @@ public class TdMemberController {
@PostMapping("/queryUserMember") @PostMapping("/queryUserMember")
public BaseResponse queryUserMember(@RequestBody MemberQueryDto queryDto) { public BaseResponse queryUserMember(@RequestBody MemberQueryDto queryDto) {
log.info("获取用户会员列表======>queryDto:{}", queryDto); log.info("获取用户会员列表======>queryDto:{}", queryDto);
return BaseResponse.success(memberService.queryUserMember(queryDto)); return BaseResponse.success(memberService.queryUserMember(queryDto, SecurityUtil.getUserId()));
} }
} }

View File

@ -4,6 +4,8 @@ import com.jwl.driver.server.entity.OrderPayInfo;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jwl.driver.server.vo.H5PayVo; import com.jwl.driver.server.vo.H5PayVo;
import java.math.BigDecimal;
/** /**
* <p> * <p>
* *
@ -16,10 +18,14 @@ public interface IOrderPayInfoService extends IService<OrderPayInfo> {
/** /**
* *
* @param payVo * @param money
* @param userIdStr
* @param description
* @param outTradeNo
* @param payType
* @return * @return
*/ */
OrderPayInfo createOrderPayInfo(H5PayVo payVo); OrderPayInfo createOrderPayInfo(BigDecimal money,String userIdStr,String description,String outTradeNo,String payType);
/** /**
* *

View File

@ -27,7 +27,8 @@ public interface ITdMemberService extends IService<TdMember> {
/** /**
* *
* @param queryDto * @param queryDto
* @param userId
* @return * @return
*/ */
List<MemberVo> queryUserMember(MemberQueryDto queryDto); List<MemberVo> queryUserMember(MemberQueryDto queryDto,Long userId);
} }

View File

@ -46,23 +46,24 @@ public class OrderPayInfoServiceImpl extends ServiceImpl<OrderPayInfoMapper, Ord
private Snowflake snowflake; private Snowflake snowflake;
@Override @Override
public OrderPayInfo createOrderPayInfo(H5PayVo payVo) { public OrderPayInfo createOrderPayInfo(BigDecimal money,String userIdStr,String description,String outTradeNo,String payType) {
Long userId = StrUtil.isNotBlank(payVo.getUserId()) ? Long.parseLong(payVo.getUserId()) : SecurityUtil.getUserId(); Long userId = StrUtil.isNotBlank(userIdStr) ? Long.parseLong(userIdStr) : SecurityUtil.getUserId();
TdSysUser user = userService.getById(userId); TdSysUser user = userService.getById(userId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
log.error("数据异常,用户不存在" + userId); log.error("数据异常,用户不存在" + userId);
throw new BusinessException("数据缺失"); throw new BusinessException("数据缺失");
} }
TdMember member = memberService.getById(Integer.parseInt(payVo.getOutTradeNo())); TdMember member = memberService.getById(Integer.parseInt(outTradeNo));
if (Objects.isNull(member) || StrUtil.equals(Constants.IS_ACTIVE_FALSE, member.getIsActive())) { if (Objects.isNull(member) || StrUtil.equals(Constants.IS_ACTIVE_FALSE, member.getIsActive())) {
log.error("数据异常,会员不存在或者已过期" + payVo.getOutTradeNo()); log.error("数据异常,会员不存在或者已过期" + outTradeNo);
throw new BusinessException("数据缺失"); throw new BusinessException("数据缺失");
} }
OrderPayInfo orderPayInfo = new OrderPayInfo() OrderPayInfo orderPayInfo = new OrderPayInfo()
.setPayId(snowflake.nextId()) .setPayId(snowflake.nextId())
.setMemberId(Integer.parseInt(payVo.getOutTradeNo())) .setMemberId(Integer.parseInt(outTradeNo))
.setMoney(payVo.getMoney()) .setMoney(money)
.setPaymentType(Constants.WECHAT_PAY) .setPaymentType(Constants.WECHAT_PAY)
.setPayType(payType)
.setDescription(user.getUserName() + "-" + member.getMemberName()) .setDescription(user.getUserName() + "-" + member.getMemberName())
.setPayStatus(PayStatus.NOT.getValue()) .setPayStatus(PayStatus.NOT.getValue())
.setDeleteStatus(0) .setDeleteStatus(0)

View File

@ -9,7 +9,9 @@ import com.jwl.driver.server.mapper.TdMemberMapper;
import com.jwl.driver.server.service.ITdMemberService; import com.jwl.driver.server.service.ITdMemberService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jwl.driver.server.util.SecurityUtil; import com.jwl.driver.server.util.SecurityUtil;
import com.jwl.driver.server.util.TokenThreadUtil;
import com.jwl.driver.server.vo.MemberVo; import com.jwl.driver.server.vo.MemberVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -24,6 +26,7 @@ import java.util.stream.Collectors;
* @since 2023-08-10 * @since 2023-08-10
*/ */
@Service @Service
@Slf4j
public class TdMemberServiceImpl extends ServiceImpl<TdMemberMapper, TdMember> implements ITdMemberService { public class TdMemberServiceImpl extends ServiceImpl<TdMemberMapper, TdMember> implements ITdMemberService {
@Override @Override
@ -32,7 +35,15 @@ public class TdMemberServiceImpl extends ServiceImpl<TdMemberMapper, TdMember> i
List<MemberVo> resultList = new ArrayList<>(); List<MemberVo> resultList = new ArrayList<>();
//获取用户已开通且未到期的会员(即使该会员已不售卖了) //获取用户已开通且未到期的会员(即使该会员已不售卖了)
List<MemberVo> userMemberList = queryUserMember(queryDto); List<MemberVo> userMemberList = new ArrayList<>();
try {
if (StrUtil.isNotBlank(TokenThreadUtil.getToken())){
userMemberList = queryUserMember(queryDto,SecurityUtil.getUserId());
}
}catch (Exception e){
log.info("===================>用户没有登录");
}
Map<Integer, MemberVo> userMemberMap = userMemberList.stream().collect(Collectors.toMap(MemberVo::getMemberId, v -> v, (v1, v2) -> v1)); Map<Integer, MemberVo> userMemberMap = userMemberList.stream().collect(Collectors.toMap(MemberVo::getMemberId, v -> v, (v1, v2) -> v1));
//将用户购买的已停售但未过期的会员放在最前面 //将用户购买的已停售但未过期的会员放在最前面
@ -57,8 +68,8 @@ public class TdMemberServiceImpl extends ServiceImpl<TdMemberMapper, TdMember> i
} }
@Override @Override
public List<MemberVo> queryUserMember(MemberQueryDto queryDto) { public List<MemberVo> queryUserMember(MemberQueryDto queryDto,Long userId) {
return this.getBaseMapper().queryUserMember(queryDto,SecurityUtil.getUserId()); return this.getBaseMapper().queryUserMember(queryDto,userId);
} }
} }

View File

@ -4,12 +4,14 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
@Data @Data
@ApiModel("微信支付") @ApiModel("微信支付")
public class AppletPayVo { public class AppletPayVo {
@ApiModelProperty("支付金额") @ApiModelProperty("支付金额")
private Double money;//金额 private BigDecimal money;//金额
@ApiModelProperty("小程序端 获取的code") @ApiModelProperty("小程序端 获取的code")
private String code;//小程序端 获取的code private String code;//小程序端 获取的code

View File

@ -50,6 +50,7 @@ driver:
- /tdQuestion/queryQuestion - /tdQuestion/queryQuestion
- /tdQuestion/getTestQuestion - /tdQuestion/getTestQuestion
- /tdQuestion/questionCategory - /tdQuestion/questionCategory
- /tdMember/queryMember
# 需要权限校验url集合 # 需要权限校验url集合
needAuthEndPoints: needAuthEndPoints: