Compare commits
3 Commits
e5beeb0ac9
...
5db6f312ed
Author | SHA1 | Date |
---|---|---|
|
5db6f312ed | |
|
d019f727fd | |
|
61afc0928f |
|
@ -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()));
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付结果
|
* 支付结果
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -50,6 +50,7 @@ driver:
|
||||||
- /tdQuestion/queryQuestion
|
- /tdQuestion/queryQuestion
|
||||||
- /tdQuestion/getTestQuestion
|
- /tdQuestion/getTestQuestion
|
||||||
- /tdQuestion/questionCategory
|
- /tdQuestion/questionCategory
|
||||||
|
- /tdMember/queryMember
|
||||||
|
|
||||||
# 需要权限校验url集合
|
# 需要权限校验url集合
|
||||||
needAuthEndPoints:
|
needAuthEndPoints:
|
||||||
|
|
Loading…
Reference in New Issue