记得上下班打卡 | git大法好,push需谨慎

Commit 3ae024ba authored by jiangxiulong's avatar jiangxiulong

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

parents 2a1e09ae f24cd423
......@@ -27,7 +27,9 @@ public enum DragonErrorCodeEnum {
TRADE_ALIPAY_QUERY_ERROR("PAY0010010","支付宝订单查询失败!"),
TRADE_WEPAY_SIGN_ERROR("PAY0020001","微信签名异常!");
TRADE_WEPAY_SIGN_ERROR("PAY0020001","微信签名异常!"),
TRADE_WEPAY_QUERY_ERROR("PAY0020002","微信订单查询失败!");
private String code;
private String message;
......
......@@ -56,7 +56,7 @@ public class MybatisPlusCodeGenerator {
@Override
public String outputFile(TableInfo tableInfo) {
// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!
return moduleRootPath + "/src/main/resources/com/liquidnet/service/adam/mapper/" + pc.getModuleName()
return moduleRootPath + "/src/main/resources/com/liquidnet/service/dragon/mapper/" + pc.getModuleName()
+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;
}
});
......@@ -89,13 +89,13 @@ public class MybatisPlusCodeGenerator {
DataSourceConfig dsc = new DataSourceConfig();
// dsc.setSchemaName("public");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUrl("jdbc:mysql://39.106.122.201:3308/test_ln_scene?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=CST");
dsc.setUrl("jdbc:mysql://39.106.122.201:3308/dev_ln_scene?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=CST");
dsc.setUsername("testmall");
dsc.setPassword("zhengzai!mYT");
String resourcePath = "/Users/zhanggb/Downloads/tmp";
String resourcePath = "/Users/anjiabin/Downloads/tmp";
String directory = "com.liquidnet.service.dragon";
String[] dbTableArray = new String[]{"dragon_orders", "dragon_order_logs", "dragon_order_refunds", "dragon_order_refund_logs"};
String[] dbTableArray = new String[]{"dragon_orders", "dragon_order_logs", "dragon_order_refunds", "dragon_order_refund_logs","dragon_pay_notify","dragon_pay_notify_fail"};
doGenerator(resourcePath, dsc, directory, dbTableArray);
}
......
......@@ -2,43 +2,57 @@ package com.liquidnet.service.dragon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 支付订单日志表
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonOrderLogs implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* order_id
* 订单id
*/
private String orderId;
private String code;
/**
* payment_type
* 支付类型
*/
private String paymentType;
/**
* content
* 支付通知内容
*/
private String content;
/**
* created_at
* 创建时间
*/
private LocalDateTime createdAt;
/**
* updated_at
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 删除时间
*/
private LocalDateTime deletedAt;
}
......@@ -2,12 +2,19 @@ package com.liquidnet.service.dragon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 退款订单信息表
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonOrderRefundLogs implements Serializable {
......@@ -18,32 +25,39 @@ public class DragonOrderRefundLogs implements Serializable {
private Long mid;
/**
* order_id
* 订单id
*/
private String orderId;
/**
* order_refund_id
* 退款订单id
*/
private String orderRefundId;
/**
* refund_type
* 退款类型
*/
private String refundType;
/**
* content
* 退款通知内容
*/
private String content;
/**
* created_at
* 创建时间
*/
private LocalDateTime createdAt;
/**
* updated_at
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 删除时间
*/
private LocalDateTime deletedAt;
}
package com.liquidnet.service.dragon.entity;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 退款订单表
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonOrderRefunds implements Serializable {
......@@ -19,73 +26,84 @@ public class DragonOrderRefunds implements Serializable {
private Long mid;
/**
* order_id
* order_refund_id
*/
private String orderId;
private String orderRefundId;
/**
* status
* 订单id
*/
private Long orderId;
/**
* 订单退款状态
*/
private Integer status;
/**
* code
* 订单退款编号
*/
private String code;
/**
* orderRefundCode
* 调用端订单退款编号
*/
private String order_refund_code;
private String orderRefundCode;
/**
* price
* 退款价格
*/
private BigDecimal price;
/**
* reason
* 退款原因
*/
private String reason;
/**
* notify_url
* 退款完成通知回调地址
*/
private String notifyUrl;
/**
* refund_type
* 退款类型
*/
private String refundType;
/**
* refund_id
* 退款的订单号
*/
private String refundId;
/**
* refund_error
* 退款失败原因
*/
private String refundError;
/**
* refund_at
* 退款时间
*/
private LocalDateTime refundAt;
/**
* finished_at
* 退款结束时间
*/
private LocalDateTime finishedAt;
/**
* created_at
* 创建时间
*/
private LocalDateTime createdAt;
/**
* updated_at
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* 删除时间
*/
private LocalDateTime deletedAt;
}
......@@ -9,9 +9,18 @@ import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 支付订单表
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonOrders implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
......@@ -21,89 +30,91 @@ public class DragonOrders implements Serializable {
* order_id
*/
private String orderId;
/**
* status
* 订单状态(0未支付 1支付成功 2支付失败)
*/
private Integer status;
/**
* code
* 订单支付编号
*/
private String code;
/**
* type
* 订单类型
*/
private String type;
/**
* price
* 总价格
*/
private BigDecimal price;
/**
* name
* 类别或名称
*/
private String name;
/**
* detail
* 详情或描述
*/
private String detail;
/**
* order_code
* 调用端订单编号
*/
private String orderCode;
/**
* client_ip
* 用户客户端ip地址
*/
private String clientIp;
/**
* notify_url
* 支付完成通知回调地址
*/
private String notifyUrl;
/**
* notify_status
* 通知状态(0初始化 1通知成功 2 通知失败 3通知超时)
*/
private String notifyStatus;
private Integer notifyStatus;
/**
* payment_type
* 支付类型
*/
private String paymentType;
/**
* payment_id
* 支付的订单号
*/
private String paymentId;
/**
* payment_at
* 支付时间
*/
private LocalDateTime paymentAt;
/**
* finished_at
* 结束时间
*/
private LocalDateTime finishedAt;
/**
* created_at
* 创建时间
*/
private LocalDateTime createdAt;
/**
* updated_at
* 更新时间
*/
private LocalDateTime updatedAt;
/**
* deleted_at
* 删除时间
*/
private LocalDateTime deletedAt;
}
package com.liquidnet.service.dragon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 支付通知成功
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonPayNotify implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 订单支付编号
*/
private String code;
/**
* 订单编号
*/
private String orderCode;
/**
* 通知url
*/
private String notifyUrl;
/**
* 通知参数
*/
private String notifyData;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.dragon.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 支付通知失败记录
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class DragonPayNotifyFail implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* 订单支付编号
*/
private String code;
/**
* 订单编号
*/
private String orderCode;
/**
* 通知url
*/
private String notifyUrl;
/**
* 通知参数
*/
private String notifyData;
/**
* 失败描述
*/
private String failDesc;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.dragon.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.dragon.entity.DragonOrderLogs;
import com.liquidnet.service.dragon.entity.DragonOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 支付订单日志表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonOrderLogsMapper extends BaseMapper<DragonOrderLogs> {
}
package com.liquidnet.service.dragon.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.dragon.entity.DragonOrderRefundLogs;
import com.liquidnet.service.dragon.entity.DragonOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 退款订单信息表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonOrderRefundLogsMapper extends BaseMapper<DragonOrderRefundLogs> {
}
package com.liquidnet.service.dragon.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.dragon.entity.DragonOrderRefunds;
import com.liquidnet.service.dragon.entity.DragonOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 退款订单表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonOrderRefundsMapper extends BaseMapper<DragonOrderRefunds> {
}
package com.liquidnet.service.dragon.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.dragon.entity.DragonOrders;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 支付订单表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonOrdersMapper extends BaseMapper<DragonOrders> {
}
package com.liquidnet.service.dragon.mapper;
import com.liquidnet.service.dragon.entity.DragonPayNotifyFail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 支付通知失败记录 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonPayNotifyFailMapper extends BaseMapper<DragonPayNotifyFail> {
}
package com.liquidnet.service.dragon.mapper;
import com.liquidnet.service.dragon.entity.DragonPayNotify;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 支付通知成功 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-07-20
*/
public interface DragonPayNotifyMapper extends BaseMapper<DragonPayNotify> {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.dragon.mapper.DragonPayNotifyFailMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.dragon.mapper.DragonPayNotifyMapper">
</mapper>
......@@ -43,6 +43,5 @@
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
</dependencies>
</project>
......@@ -49,7 +49,7 @@ public class DragonServiceCommonBiz {
orders.setOrderCode(dragonPayBaseReqDto.getOrderCode());
orders.setClientIp(dragonPayBaseReqDto.getClientIp());
orders.setNotifyUrl(dragonPayBaseReqDto.getNotifyUrl());
orders.setNotifyStatus(DragonConstant.PayNotifyStatusEnum.NOTIFY_INIT.getCode());
orders.setNotifyStatus(Integer.valueOf(DragonConstant.PayNotifyStatusEnum.NOTIFY_INIT.getCode()));
orders.setPaymentType((dragonPayBaseReqDto.getDeviceFrom()+dragonPayBaseReqDto.getPayType()).toUpperCase());
// orders.setPaymentId();
orders.setPaymentAt(LocalDateTime.now());
......
......@@ -152,7 +152,8 @@ public class PayChannelStrategyAlipayImpl extends AbstractPayChannelStrategyImpl
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getCode(),DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getMessage());
}
// 当返回状态为“TRADE_FINISHED”交易成功结束和“TRADE_SUCCESS”支付成功时更新交易状态
if ("TRADE_SUCCESS".equals(resultMap.get("tradeStatus")) || "TRADE_FINISHED".equals(resultMap.get("tradeStatus"))) {
if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.getCode().equals(resultMap.get("tradeStatus"))
|| AlipayConstant.AlipayTradeStateEnum.TRADE_FINISHED.getCode().equals(resultMap.get("tradeStatus"))) {
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
}
return respDto;
......
package com.liquidnet.service.dragon.channel.wepay.biz;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import com.liquidnet.service.dragon.utils.XmlUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -12,6 +11,8 @@ import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
......@@ -35,9 +36,9 @@ public class WepayBiz{
*
* @return
*/
public WepayOrderQueryRespDto tradeQuery(String outTradeNo,String appid) {
public Map<String, Object> tradeQuery(String outTradeNo, String appid) {
Map<String, Object> respMap = new HashMap<>();
log.info("======>支付宝交易查询");
WepayOrderQueryRespDto respDto = null;
SortedMap<String, Object> paramMap = new TreeMap<>();
paramMap.put("appid", appid);
paramMap.put("mch_id", merchantId);
......@@ -57,11 +58,11 @@ public class WepayBiz{
String xmlStr = EntityUtils.toString(response.getEntity(), "UTF-8");
EntityUtils.consume(entity);
log.info("dragonPay:wepay:wap response xmlStr: {} ",xmlStr);
respDto = XmlUtil.toBean(xmlStr, WepayOrderQueryRespDto.class);
respMap = XmlUtil.xmlToMap(xmlStr);
}catch (Exception e){
log.error(e.getMessage());
}
return respDto;
return respMap;
}
}
......@@ -4,15 +4,18 @@ import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.dragon.biz.DragonServiceCommonBiz;
import com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz;
import com.liquidnet.service.dragon.channel.wepay.biz.WepayBiz;
import com.liquidnet.service.dragon.channel.wepay.constant.WepayConstant;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayOrderQueryRespDto;
import com.liquidnet.service.dragon.channel.wepay.resp.WepayPayRespDto;
import com.liquidnet.service.dragon.channel.wepay.strategy.IWepayStrategy;
import com.liquidnet.service.dragon.constant.DragonConstant;
import com.liquidnet.service.dragon.constant.DragonErrorCodeEnum;
import com.liquidnet.service.dragon.dto.DragonOrdersDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseReqDto;
import com.liquidnet.service.dragon.dto.DragonPayBaseRespDto;
import com.liquidnet.service.dragon.dto.DragonPayOrderQueryRespDto;
import com.liquidnet.service.dragon.utils.DataUtils;
import com.liquidnet.service.dragon.utils.PayWepayUtils;
import com.liquidnet.service.dragon.utils.XmlUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -26,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
......@@ -43,9 +47,15 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
@Autowired
private WepayBiz wepayBiz;
@Autowired
private DataUtils dataUtils;
@Autowired
private DragonServiceCommonBiz dragonServiceCommonBiz;
@Autowired
private DragonPayBiz dragonPayBiz;
@Override
public ResponseDto<DragonPayBaseRespDto> dragonPay(DragonPayBaseReqDto dragonPayBaseReqDto) {
......@@ -159,15 +169,19 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
@Override
public DragonPayOrderQueryRespDto checkOrderStatus(String code) {
WepayOrderQueryRespDto result = wepayBiz.tradeQuery(code,this.getAppid());
DragonPayOrderQueryRespDto respDto = new DragonPayOrderQueryRespDto();
respDto.setCode(code);
// respDto.setOrderCode("");
// respDto.setStatus("");
// respDto.setType();
// respDto.setPaymentId();
// respDto.setPrice();
// respDto.setPaymentType();
DragonOrdersDto ordersDto = dataUtils.getPayOrderByCode(code);
Map<String, Object> resultMap = wepayBiz.tradeQuery(code,this.getAppid());
DragonPayOrderQueryRespDto respDto = dragonPayBiz.buildPayOrderQueryRespDto(ordersDto);
Object returnCode = resultMap.get("return_code");
// 查询失败
if (null == returnCode || "FAIL".equals(returnCode)) {
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_WEPAY_QUERY_ERROR.getCode(),DragonErrorCodeEnum.TRADE_WEPAY_QUERY_ERROR.getMessage());
}
// 当trade_state为SUCCESS时才返回result_code
if ("SUCCESS".equals(resultMap.get("trade_state"))) {
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_PAID.getCode()));
}
return respDto;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment