充值保护
This commit is contained in:
parent
a019db6d13
commit
e13ee9c5c0
|
|
@ -21,7 +21,7 @@ public class AccTradeVo {
|
||||||
private Date tradeTime;
|
private Date tradeTime;
|
||||||
private Long tradeState;
|
private Long tradeState;
|
||||||
private Long payType;
|
private Long payType;
|
||||||
private Long payState; //是否付款 true - 已付 false-未付
|
private Integer payState; //是否付款 true - 已付 false-未付
|
||||||
private String thirdTradeNo; //三方,支付宝交易号
|
private String thirdTradeNo; //三方,支付宝交易号
|
||||||
private String failReason;
|
private String failReason;
|
||||||
@JsonFormat(
|
@JsonFormat(
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ public interface AccTradeMapper {
|
||||||
*/
|
*/
|
||||||
public AccTrade selectAccTradeByTradeId(Long tradeId);
|
public AccTrade selectAccTradeByTradeId(Long tradeId);
|
||||||
|
|
||||||
|
public AccTrade selectAccTradeByOrderNo(String orderNo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询账户交易记录列表
|
* 查询账户交易记录列表
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@ public interface IAccTradeService {
|
||||||
*/
|
*/
|
||||||
public AccTrade selectAccTradeByTradeId(Long tradeId);
|
public AccTrade selectAccTradeByTradeId(Long tradeId);
|
||||||
|
|
||||||
|
public AccTrade selectAccTradeByOrderNo(String orderNo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询账户交易记录列表
|
* 查询账户交易记录列表
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,11 @@ public class AccTradeServiceImpl implements IAccTradeService {
|
||||||
return accTradeMapper.selectAccTradeByTradeId(tradeId);
|
return accTradeMapper.selectAccTradeByTradeId(tradeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AccTrade selectAccTradeByOrderNo(String orderNo) {
|
||||||
|
return accTradeMapper.selectAccTradeByOrderNo(orderNo);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询账户交易记录列表
|
* 查询账户交易记录列表
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import com.alipay.api.AlipayApiException;
|
||||||
import com.alipay.api.internal.util.AlipaySignature;
|
import com.alipay.api.internal.util.AlipaySignature;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
|
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||||
import com.bonus.canteen.core.account.service.AccSubService;
|
import com.bonus.canteen.core.account.service.AccSubService;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||||
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
||||||
|
|
@ -66,6 +67,7 @@ public class NotifyCotroller {
|
||||||
String third_trade_no = request.getParameter("trade_no");
|
String third_trade_no = request.getParameter("trade_no");
|
||||||
//交易状态
|
//交易状态
|
||||||
String trade_status = request.getParameter("trade_status");
|
String trade_status = request.getParameter("trade_status");
|
||||||
|
AccTrade accTradeInDB = accTradeService.selectAccTradeByOrderNo(order_no);
|
||||||
if (AliPayTradeStatusEnum.TRADE_STATUS_FINISHED.getKey().equals(trade_status)) {
|
if (AliPayTradeStatusEnum.TRADE_STATUS_FINISHED.getKey().equals(trade_status)) {
|
||||||
//判断该笔订单是否已经做过处理
|
//判断该笔订单是否已经做过处理
|
||||||
//如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序
|
//如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序
|
||||||
|
|
@ -74,11 +76,13 @@ public class NotifyCotroller {
|
||||||
AccTradeVo updateTrade = new AccTradeVo();
|
AccTradeVo updateTrade = new AccTradeVo();
|
||||||
updateTrade.setOrderNo(order_no);
|
updateTrade.setOrderNo(order_no);
|
||||||
updateTrade.setThirdTradeNo(third_trade_no);
|
updateTrade.setThirdTradeNo(third_trade_no);
|
||||||
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue());
|
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey());
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
|
accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
||||||
|
}
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
this.accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
|
||||||
} else if (AliPayTradeStatusEnum.TRADE_STATUS_SUCCESS.getKey().equals(trade_status)) {
|
} else if (AliPayTradeStatusEnum.TRADE_STATUS_SUCCESS.getKey().equals(trade_status)) {
|
||||||
//判断该笔订单是否已经做过处理
|
//判断该笔订单是否已经做过处理
|
||||||
//如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序
|
//如果没做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详情,判断金额是否等于 total_amount,并执行商户的业务程序
|
||||||
|
|
@ -87,16 +91,18 @@ public class NotifyCotroller {
|
||||||
AccTradeVo updateTrade = new AccTradeVo();
|
AccTradeVo updateTrade = new AccTradeVo();
|
||||||
updateTrade.setOrderNo(order_no);
|
updateTrade.setOrderNo(order_no);
|
||||||
updateTrade.setThirdTradeNo(third_trade_no);
|
updateTrade.setThirdTradeNo(third_trade_no);
|
||||||
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue());
|
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey());
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
|
accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
||||||
|
}
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
this.accSubService.addAccWalletBalance(totalAmount, SecurityUtils.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
|
||||||
} else {
|
} else {
|
||||||
AccTradeVo updateTrade = new AccTradeVo();
|
AccTradeVo updateTrade = new AccTradeVo();
|
||||||
updateTrade.setOrderNo(order_no);
|
updateTrade.setOrderNo(order_no);
|
||||||
updateTrade.setThirdTradeNo(third_trade_no);
|
updateTrade.setThirdTradeNo(third_trade_no);
|
||||||
updateTrade.setPayState(PayStateEnum.PAY_FAIL.getKey().longValue());
|
updateTrade.setPayState(PayStateEnum.PAY_FAIL.getKey());
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.CLOSE.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.CLOSE.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import com.alipay.api.response.AlipayTradeQueryResponse;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeStateEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
import com.bonus.canteen.core.account.constants.AccTradeTypeEnum;
|
||||||
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
import com.bonus.canteen.core.account.constants.AccWalletIdEnum;
|
||||||
|
import com.bonus.canteen.core.account.domain.AccTrade;
|
||||||
import com.bonus.canteen.core.account.service.AccSubService;
|
import com.bonus.canteen.core.account.service.AccSubService;
|
||||||
import com.bonus.canteen.core.account.service.IAccTradeService;
|
import com.bonus.canteen.core.account.service.IAccTradeService;
|
||||||
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
import com.bonus.canteen.core.pay.constants.AliPayTradeStatusEnum;
|
||||||
|
|
@ -61,7 +62,7 @@ public class PayController {
|
||||||
accTradeVo.setTradeTime(new Date());
|
accTradeVo.setTradeTime(new Date());
|
||||||
accTradeVo.setAmount(accTradeVo.getPaymentAmount().multiply(new BigDecimal(100)).longValue());
|
accTradeVo.setAmount(accTradeVo.getPaymentAmount().multiply(new BigDecimal(100)).longValue());
|
||||||
accTradeVo.setPayType(PayTypeEnum.MEAL_CARD.getKey().longValue());
|
accTradeVo.setPayType(PayTypeEnum.MEAL_CARD.getKey().longValue());
|
||||||
accTradeVo.setPayState(PayStateEnum.PAY_INPROCESS.getKey().longValue());
|
accTradeVo.setPayState(PayStateEnum.PAY_INPROCESS.getKey());
|
||||||
accTradeVo.setTradeState(AccTradeStateEnum.CREATE.getKey().longValue());
|
accTradeVo.setTradeState(AccTradeStateEnum.CREATE.getKey().longValue());
|
||||||
accTradeService.insertAccTradeVo(accTradeVo);
|
accTradeService.insertAccTradeVo(accTradeVo);
|
||||||
// 调用alipay
|
// 调用alipay
|
||||||
|
|
@ -107,13 +108,16 @@ public class PayController {
|
||||||
AccTradeVo updateTrade = new AccTradeVo();
|
AccTradeVo updateTrade = new AccTradeVo();
|
||||||
updateTrade.setOrderNo(accTradeVo.getOrderNo());
|
updateTrade.setOrderNo(accTradeVo.getOrderNo());
|
||||||
updateTrade.setThirdTradeNo(third_trade_no);
|
updateTrade.setThirdTradeNo(third_trade_no);
|
||||||
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey().longValue());
|
updateTrade.setPayState(PayStateEnum.PAY_SUCC.getKey());
|
||||||
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
updateTrade.setTradeState(AccTradeStateEnum.TAKE_EFFECT.getKey().longValue());
|
||||||
updateTrade.setFailReason(trade_status);
|
updateTrade.setFailReason(trade_status);
|
||||||
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
AccTrade accTradeInDB = accTradeService.selectAccTradeByOrderNo(accTradeVo.getOrderNo());
|
||||||
|
if (PayStateEnum.PAY_INPROCESS.getKey().equals(accTradeInDB.getPayState())) {
|
||||||
BigDecimal totalAmount = new BigDecimal(response.getTotalAmount());
|
BigDecimal totalAmount = new BigDecimal(response.getTotalAmount());
|
||||||
accSubService.addAccWalletBalance(totalAmount, accTradeVo.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
accSubService.addAccWalletBalance(totalAmount, accTradeVo.getUserId(), AccWalletIdEnum.WALLET.getKey());
|
||||||
}
|
}
|
||||||
|
this.accTradeService.updateAccTradeVoByOrderNo(updateTrade);
|
||||||
|
}
|
||||||
return response;
|
return response;
|
||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
log.error("查询异常, ", e.getErrMsg());
|
log.error("查询异常, ", e.getErrMsg());
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where trade_id = #{tradeId}
|
where trade_id = #{tradeId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectAccTradeByOrderNo" parameterType="Long" resultMap="AccTradeResult">
|
||||||
|
<include refid="selectAccTradeVo"/>
|
||||||
|
where order_no = #{orderNo}
|
||||||
|
</select>
|
||||||
|
|
||||||
<insert id="insertAccTrade" parameterType="com.bonus.canteen.core.account.domain.AccTrade">
|
<insert id="insertAccTrade" parameterType="com.bonus.canteen.core.account.domain.AccTrade">
|
||||||
insert into acc_trade
|
insert into acc_trade
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue