Merge remote-tracking branch 'origin/dev' into dev

master
bynt 3 years ago
commit 6af7ea1e04

@ -40,13 +40,13 @@ public class RechargeController {
@ApiOperation(value = "支付回调") @ApiOperation(value = "支付回调")
@RequestMapping(value = "/pay-notify") @RequestMapping(value = "/pay-notify")
public CommonResult<String> frontRcvResponse(HttpServletRequest request) throws Exception { public String frontRcvResponse(HttpServletRequest request){
return accountRechargeService.pcNotifyResponse(request); return accountRechargeService.pcNotifyResponse(request);
} }
@ApiOperation(value = "同步历史数据支付回调") @ApiOperation(value = "同步历史数据支付回调")
@RequestMapping(value = "/pay-notify-two") @RequestMapping(value = "/pay-notify-two")
public CommonResult<String> frontRcvResponseTwo(HttpServletRequest request) { public String frontRcvResponseTwo(HttpServletRequest request) {
return accountRechargeService.pcTwoNotifyResponse(request); return accountRechargeService.pcTwoNotifyResponse(request);
} }

@ -31,7 +31,7 @@ public interface AccountRechargeService {
* @param request * @param request
* @return * @return
*/ */
CommonResult<String> pcNotifyResponse(HttpServletRequest request) throws Exception; String pcNotifyResponse(HttpServletRequest request);
/** /**
* *
@ -45,7 +45,7 @@ public interface AccountRechargeService {
* @param request * @param request
* @return * @return
*/ */
CommonResult<String> pcTwoNotifyResponse(HttpServletRequest request); String pcTwoNotifyResponse(HttpServletRequest request);
/** /**
* *

@ -38,6 +38,7 @@ import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.time.LocalTime; import java.time.LocalTime;
import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -131,6 +132,7 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
order.setPayType(aliPayPcVo.getPayType()); order.setPayType(aliPayPcVo.getPayType());
order.setTemplateId(aliPayPcVo.getTemplateId()); order.setTemplateId(aliPayPcVo.getTemplateId());
order.setStatus(DefaultNumberConstants.ZERO_NUMBER); order.setStatus(DefaultNumberConstants.ZERO_NUMBER);
order.setIsCallback(DefaultNumberConstants.ZERO_NUMBER);
return payOrderRepository.save(order).getId() != null; return payOrderRepository.save(order).getId() != null;
} }
@ -141,21 +143,30 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
* @return {@link CommonResult}<{@link String}> * @return {@link CommonResult}<{@link String}>
*/ */
@Override @Override
public CommonResult<String> pcNotifyResponse(HttpServletRequest request) { @Transactional(rollbackFor = Exception.class)
public String pcNotifyResponse(HttpServletRequest request) {
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
//查询订单信息
PayOrder order = payOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getIsCallback() == 0) {
log.info("======================支付回调开始时间:{}", LocalTime.now());
//先更新回调状态,防止二次回调
order.setIsCallback(DefaultNumberConstants.ONE_NUMBER);
payOrderRepository.save(order);
int i = 0; int i = 0;
PayOrder order = null;
try { try {
//获取支付宝GET过来反馈信息 //获取支付宝GET过来反馈信息
Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER); // Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER);
// 处理乱码问题 // 处理乱码问题
checkParam(request, params); // checkParam(request, params);
//获取支付宝GET过来反馈信息
Map<String, String> params = getAllRequestParam(request);
//验签
Boolean flag = Factory.Payment.Common().verifyNotify(params); Boolean flag = Factory.Payment.Common().verifyNotify(params);
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
if (flag != null && flag) { if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo); log.info(" order verify signature success the orderNumber as {}", orderNo);
order = payOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getStatus() == 0) { if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date()); order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER); order.setStatus(DefaultNumberConstants.ONE_NUMBER);
@ -178,9 +189,10 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
} catch (Exception e) { } catch (Exception e) {
updateRollBack(order, i); updateRollBack(order, i);
log.error("the pc response error time {}", LocalTime.now()); log.error("the pc response error time {}", LocalTime.now());
throw new TaoMiCommException(ResponseCode.CALLBACK_FAILED.getDesc()); return "success";
} }
return CommonResult.successfulOperation(); }
return "success";
} }
private void updateRollBack(PayOrder payOrder, int i) { private void updateRollBack(PayOrder payOrder, int i) {
@ -206,7 +218,6 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
String orderNo = String.valueOf(IdUtil.getSnowflake(workerId, datacenterId).nextId()); String orderNo = String.valueOf(IdUtil.getSnowflake(workerId, datacenterId).nextId());
payTwoOrder.setAnticipateNum(NumberUtil.div(payTwoOrder.getAmount(), BigDecimal.valueOf(amount)).longValue()); payTwoOrder.setAnticipateNum(NumberUtil.div(payTwoOrder.getAmount(), BigDecimal.valueOf(amount)).longValue());
Double num = payTwoOrder.getAmount() + payTwoOrder.getIdenticalAmount(); Double num = payTwoOrder.getAmount() + payTwoOrder.getIdenticalAmount();
// Double num = 0.01;
// 生成返回对象 // 生成返回对象
response = Factory.Payment.Page() response = Factory.Payment.Page()
.pay(PayConstants.PAY_TITLE + orderNo, orderNo, num.toString(), aliPay.getNotifyUrlTwo()); .pay(PayConstants.PAY_TITLE + orderNo, orderNo, num.toString(), aliPay.getNotifyUrlTwo());
@ -215,6 +226,7 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
payTwoOrder.setStatus(DefaultNumberConstants.ZERO_NUMBER); payTwoOrder.setStatus(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrder.setFinalAmount(num); payTwoOrder.setFinalAmount(num);
payTwoOrder.setOrderStatus(DefaultNumberConstants.ZERO_NUMBER); payTwoOrder.setOrderStatus(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrder.setIsCallback(DefaultNumberConstants.ZERO_NUMBER);
payTwoOrderRepository.save(payTwoOrder); payTwoOrderRepository.save(payTwoOrder);
return new CommonResult<String>().success(response.getBody()); return new CommonResult<String>().success(response.getBody());
} }
@ -237,21 +249,30 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
* @param request * @param request
*/ */
@Override @Override
public CommonResult<String> pcTwoNotifyResponse(HttpServletRequest request) { @Transactional(rollbackFor = Exception.class)
public String pcTwoNotifyResponse(HttpServletRequest request) {
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
//查询订单信息
PayTwoOrder order = payTwoOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getIsCallback() == 0) {
log.info("======================同步支付回调开始时间:{}", LocalTime.now());
//先更新回调状态,防止二次回调
order.setIsCallback(DefaultNumberConstants.ONE_NUMBER);
payTwoOrderRepository.save(order);
int i = 0; int i = 0;
PayTwoOrder order = null;
try { try {
//获取支付宝GET过来反馈信息 //获取支付宝GET过来反馈信息
Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER); // Map<String, String> params = new HashMap<>(DefaultNumberConstants.TWO_NUMBER);
// 处理乱码问题 // 处理乱码问题
checkParam(request, params); // checkParam(request, params);
//获取支付宝GET过来反馈信息
Map<String, String> params = getAllRequestParam(request);
//验签
Boolean flag = Factory.Payment.Common().verifyNotify(params); Boolean flag = Factory.Payment.Common().verifyNotify(params);
//商户订单号
String orderNo = new String(request.getParameter(PayConstants.OUT_TRADE_NO).
getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
if (flag != null && flag) { if (flag != null && flag) {
log.info(" order verify signature success the orderNumber as {}", orderNo); log.info(" order verify signature success the orderNumber as {}", orderNo);
order = payTwoOrderRepository.findByOrderNumber(orderNo);
if (order != null && order.getStatus() == 0) { if (order != null && order.getStatus() == 0) {
order.setPayTime(DateUtil.date()); order.setPayTime(DateUtil.date());
order.setStatus(DefaultNumberConstants.ONE_NUMBER); order.setStatus(DefaultNumberConstants.ONE_NUMBER);
@ -282,26 +303,39 @@ public class AccountRechargeServiceImpl implements AccountRechargeService {
} }
payTwoOrderRepository.save(order); payTwoOrderRepository.save(order);
log.error("the pc response error time {}", LocalTime.now()); log.error("the pc response error time {}", LocalTime.now());
throw new TaoMiCommException(ResponseCode.CALLBACK_FAILED.getDesc()); return "success";
}
return CommonResult.successfulOperation();
} }
private void checkParam(HttpServletRequest request, Map<String, String> params) {
Map<String, String[]> requestParams = request.getParameterMap();
if (CollectionUtils.isNotEmpty(requestParams.keySet())) {
for (String name : requestParams.keySet()) {
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + StrUtil.COMMA;
} }
//乱码解决,这段代码在出现乱码时使用 return "success";
valueStr = new String(valueStr.getBytes
(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
params.put(name, valueStr);
} }
// private void checkParam(HttpServletRequest request, Map<String, String> params) {
// Map<String, String[]> requestParams = request.getParameterMap();
// if (CollectionUtils.isNotEmpty(requestParams.keySet())) {
// for (String name : requestParams.keySet()) {
// String[] values = requestParams.get(name);
// String valueStr = "";
// for (int i = 0; i < values.length; i++) {
// valueStr = (i == values.length - 1) ? valueStr + values[i]
// : valueStr + values[i] + StrUtil.COMMA;
// }
// //乱码解决,这段代码在出现乱码时使用
// valueStr = new String(valueStr.getBytes
// (StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
// params.put(name, valueStr);
// }
// }
// }
//得到请求的参数
private Map<String, String> getAllRequestParam(final HttpServletRequest request) {
Map<String, String> res = new HashMap<>();
Enumeration<?> temp = request.getParameterNames();
while (temp.hasMoreElements()) {
String en = (String) temp.nextElement();
String value = request.getParameter(en);
res.put(en, value);
} }
return res;
} }
} }

@ -31,6 +31,6 @@ public interface AutoTaskMessageInfoJpa extends JpaRepository<AutoTaskMessageInf
* @param date * @param date
* @return * @return
*/ */
@Query(value = "select count(*) from AutoTaskMessageInfo as m where m.tid=?1 and m.sendType=?2 and DATE_FORMAT(m.create_time,'%Y-%m-%d') = ?3", nativeQuery = true) @Query(value = "select count(*) from auto_task_message_info as m where m.tid=?1 and m.send_type=?2 and DATE_FORMAT(m.create_time,'%Y-%m-%d') = ?3", nativeQuery = true)
Long countByTidAndTypeAndCreateTime(Long tid, Integer settingType, String date); Long countByTidAndTypeAndCreateTime(Long tid, Integer settingType, String date);
} }

@ -25,6 +25,6 @@ public interface AutoTaskMessageRepository extends JpaRepository<AutoTaskMessage
* @param sellerNick * @param sellerNick
* @return * @return
*/ */
@Query("select m from AutoTaskMessage m where m.sendType = ?1 and m.sellerNick = ?3 and m.createTime between ?2 and ?3") @Query("select m from AutoTaskMessage m where m.sendType = ?1 and m.sellerNick = ?4 and m.createTime between ?2 and ?3")
AutoTaskMessage findAutoTaskMessageTypeBetweenTime(Integer type, Date startTime, Date endTime, String sellerNick); AutoTaskMessage findAutoTaskMessageTypeBetweenTime(Integer type, Date startTime, Date endTime, String sellerNick);
} }

@ -137,6 +137,7 @@ public class TradeJpa {
trade.setReceiverMobile((String) row.get("receiverMobile")); trade.setReceiverMobile((String) row.get("receiverMobile"));
trade.setReceiverAddress((String) row.get("receiverAddress")); trade.setReceiverAddress((String) row.get("receiverAddress"));
trade.setStepPaidFee((String) row.get("stepPaidFee")); trade.setStepPaidFee((String) row.get("stepPaidFee"));
trade.setStepTradeStatus((String) row.get("stepTradeStatus"));
trade.setSellerNick((String) row.get("sellerNick")); trade.setSellerNick((String) row.get("sellerNick"));
BigInteger sellerFlag = (BigInteger) row.get("sellerFlag"); BigInteger sellerFlag = (BigInteger) row.get("sellerFlag");
trade.setSellerFlag(sellerFlag.longValue()); trade.setSellerFlag(sellerFlag.longValue());
@ -149,14 +150,14 @@ public class TradeJpa {
private StringBuilder getSql() { private StringBuilder getSql() {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("select t.pay_time as payTime ,t.title,t.payment,t.buyer_nick as buyerNick,t.receiver_name as receiverName,t.receiver_mobile as receiverMobile,t.receiver_address as receiverAddress ," + sql.append("select t.pay_time as payTime ,t.title,t.payment,t.buyer_nick as buyerNick,t.receiver_name as receiverName,t.receiver_mobile as receiverMobile,t.receiver_address as receiverAddress ," +
" t.tid ,t.step_paid_fee as stepPaidFee, t.seller_nick as sellerNick,t.seller_flag as sellerFlag from top_trade as t where 1=1 "); " t.tid ,t.step_paid_fee as stepPaidFee,t.step_trade_status as stepTradeStatus, t.seller_nick as sellerNick,t.seller_flag as sellerFlag from top_trade as t where 1=1 ");
return sql; return sql;
} }
private StringBuilder getRefundSql() { private StringBuilder getRefundSql() {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("select t.pay_time as payTime ,t.title,o.payment,t.buyer_nick as buyerNick,t.receiver_name as receiverName,t.receiver_mobile as receiverMobile,t.receiver_address as receiverAddress ," + sql.append("select t.pay_time as payTime ,t.title,o.payment,t.buyer_nick as buyerNick,t.receiver_name as receiverName,t.receiver_mobile as receiverMobile,t.receiver_address as receiverAddress ," +
" t.tid ,t.step_paid_fee as stepPaidFee, t.seller_nick as sellerNick, t.seller_flag as sellerFlag from top_trade as t left join top_order as o on t.tid=o.tid where 1=1 "); " t.tid ,t.step_paid_fee as stepPaidFee,t.step_trade_status as stepTradeStatus, t.seller_nick as sellerNick, t.seller_flag as sellerFlag from top_trade as t left join top_order as o on t.tid=o.tid where 1=1 ");
return sql; return sql;
} }

@ -2,7 +2,6 @@ package com.hchbox.module.entity;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.hchbox.model.entity.BaseTaskMessageInfo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.CreationTimestamp;

@ -73,7 +73,9 @@ public class TimerTaskServiceImpl implements TimerTaskService {
} }
// 获取卖家账号信息 // 获取卖家账号信息
SellerAccount sellerAccount = sellerAccountRepository.findSellerAccountById(userId); SellerAccount sellerAccount = sellerAccountRepository.findSellerAccountById(userId);
if (StrUtil.isEmpty(as.getSendAccountIds())) {
continue;
}
// 查询可发送子账号 // 查询可发送子账号
List<String> subNickList = Arrays.asList(as.getSendAccountIds().split(StrUtil.COMMA)); List<String> subNickList = Arrays.asList(as.getSendAccountIds().split(StrUtil.COMMA));
// List<String> subNickList = sellerAccountRepository.findByParentId(sellerAccount.getId()); // List<String> subNickList = sellerAccountRepository.findByParentId(sellerAccount.getId());
@ -147,7 +149,7 @@ public class TimerTaskServiceImpl implements TimerTaskService {
} }
//预支预付款 //预支预付款
if (as.getEnablePrepaidOrder() != null && as.getEnablePrepaidOrder() && CollUtil.isNotEmpty(list)) { if (as.getEnablePrepaidOrder() != null && as.getEnablePrepaidOrder() && CollUtil.isNotEmpty(list)) {
list.removeIf(trade -> trade.getStepTradeStatus().equals(StepTradeStatusEnum.FRONT_PAID_FINAL_NOPAID.toString())); list.removeIf(trade -> StrUtil.isEmpty(trade.getStepTradeStatus()) && trade.getStepTradeStatus().equals(StepTradeStatusEnum.FRONT_PAID_FINAL_NOPAID.toString()));
} }
//不发送的旗帜 //不发送的旗帜
if (StrUtil.isNotEmpty(as.getNotSendFlagStr()) && CollUtil.isNotEmpty(list)) { if (StrUtil.isNotEmpty(as.getNotSendFlagStr()) && CollUtil.isNotEmpty(list)) {

@ -75,4 +75,8 @@ public class BasePayOrder implements Serializable {
@Column(name = "order_status") @Column(name = "order_status")
@ApiModelProperty(value = "订单状态") @ApiModelProperty(value = "订单状态")
private Integer orderStatus; private Integer orderStatus;
@Column(name = "is_callback")
@ApiModelProperty(value = "是否回调过 0未回调 1已回调")
private Integer isCallback;
} }

@ -75,4 +75,8 @@ public class BasePayTwoOrder implements Serializable {
@Column(name = "master_user_id") @Column(name = "master_user_id")
@ApiModelProperty(value = "主账号id") @ApiModelProperty(value = "主账号id")
private Long masterUserId; private Long masterUserId;
@Column(name = "is_callback")
@ApiModelProperty(value = "是否回调过 0未回调 1已回调")
private Integer isCallback;
} }

Loading…
Cancel
Save