package com.sinata.rest.modular.member.service.impl;
|
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.sinata.common.enums.EnumMemberGrade;
|
import com.sinata.common.enums.EnumPayType;
|
import com.sinata.rest.common.PayUtils;
|
import com.sinata.rest.modular.member.dao.MemOrderAuthMapper;
|
import com.sinata.rest.modular.member.model.MemOrderAuth;
|
import com.sinata.rest.modular.member.model.MemUser;
|
import com.sinata.rest.modular.member.service.IMemMemberGradeService;
|
import com.sinata.rest.modular.member.service.IMemOrderAuthService;
|
import com.sinata.rest.modular.member.service.IMemUserService;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.util.Assert;
|
|
import java.math.BigDecimal;
|
|
/**
|
* <p>
|
* 会员实名认证订单 服务实现类
|
* </p>
|
*
|
* @author goku
|
* @since 2023-03-23
|
*/
|
@Slf4j
|
@Service
|
public class MemOrderAuthServiceImpl extends ServiceImpl<MemOrderAuthMapper, MemOrderAuth> implements IMemOrderAuthService {
|
|
@Autowired
|
private IMemUserService userService;
|
@Autowired
|
private IMemMemberGradeService gradeService;
|
|
@Override
|
public boolean checkOrderAndSet(String orderNo, Integer payType) {
|
if (orderNo == null) {
|
return false;
|
}
|
LambdaQueryWrapper<MemOrderAuth> wr = new LambdaQueryWrapper<>();
|
wr.eq(MemOrderAuth::getOrderNo, orderNo);
|
MemOrderAuth order = getOne(wr);
|
if (order == null) {
|
return false;
|
}
|
if (payType == 2) {
|
//如果此订单是支付宝支付的就询问支付宝
|
AlipayTradeQueryResponse r = PayUtils.checkAlipayResult(order.getOrderNo(), "", BigDecimal.ZERO, true);
|
if (r != null && r.isSuccess()) {
|
if (!order.getPayType().equals(payType)) {
|
order.setPayType(payType);
|
}
|
if (order.getState() != 1) {
|
order.setState(1);
|
}
|
if (!r.getTradeNo().equals(order.getTransactionId())) {
|
order.setTransactionId(r.getTradeNo());
|
}
|
saveOrUpdate(order);
|
return true;
|
} else {
|
return false;
|
}
|
}
|
return false;
|
}
|
|
@Override
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
|
public Object payCallback(String orderNo, EnumPayType payType, String transactionNo) {
|
log.info("实名认证支付回调:{},{},{}", orderNo, transactionNo, transactionNo);
|
MemOrderAuth order = baseMapper.selectOne(new QueryWrapper<MemOrderAuth>().eq("order_no", orderNo));
|
if (order == null || order.getState() != 0 || order.getUserId() == null) {
|
log.error("其它支付回调错误:{}", orderNo);
|
return false;
|
}
|
|
//更改订单
|
order.setState(1);
|
order.setTransactionId(transactionNo);
|
order.setPayType(payType.index);
|
order.updateById();
|
|
//更改用户实名状态
|
MemUser user = userService.getById(order.getUserId());
|
Assert.notNull(user, "用户不存在");
|
user.setMemberGradeId(EnumMemberGrade.G_2.index);
|
user.updateById();
|
return true;
|
}
|
}
|