更新会员交易记录的冻结金额

This commit is contained in:
2023-08-28 11:17:06 +08:00
parent 1dea6ecd71
commit 01025fb40b
8 changed files with 588 additions and 193 deletions

View File

@@ -1,75 +1,79 @@
package com.jsowell.pile.domain;
import com.jsowell.common.enums.ykc.OrderPayRecordEnum;
import java.math.BigDecimal;
import java.util.Date;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Setter;
/**
* 订单支付记录
* 订单支付明细
*/
@Data
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderPayRecord {
/**
* 主键
*/
private Integer id;
/**
* 主键
*/
private Integer id;
/**
* 订单号
*/
private String orderCode;
/**
* 订单号
*/
private String orderCode;
/**
* 支付方式1-本金余额支付; 2-赠送余额支付; 3-白名单支付; 4-微信支付; 5-支付宝支付)
* @see OrderPayRecordEnum
*/
private String payMode;
/**
* 支付方式1-本金余额支付2-赠送余额支付3-白名单支付4-微信支付5-支付宝支付)
*/
private String payMode;
/**
* 支付金额
*/
private BigDecimal payAmount;
/**
* 支付金额
*/
private BigDecimal payAmount;
/**
* 退款金额
*/
private BigDecimal refundAmount;
/**
* 收单机构0-本账户余额1-微信支付2-汇付支付)
*/
private String acquirer;
/**
* 收单机构0-本账户余额1-微信支付2-汇付支付)
*/
private String acquirer;
/**
* 退款金额
*/
private BigDecimal refundAmount;
/**
* 创建人
*/
private String createBy;
/**
* 扣款记录
*/
private String deductionRecord;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 创建
*/
private String createBy;
/**
* 更新人
*/
private String updateBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 更新
*/
private String updateBy;
/**
* 删除标识0-正常1-删除)
*/
private String delFlag;
/**
* 更新时间
*/
private Date updateTime;
/**
* 删除标识0-正常1-删除)
*/
private String delFlag;
}

View File

@@ -6,19 +6,41 @@ import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface OrderPayRecordMapper {
int deleteByPrimaryKey(Integer id);
// int insert(OrderPayRecord record);
// int insertSelective(OrderPayRecord record);
/**
* insert record to table selective
*
* @param record the record
* @return insert count
*/
int insertSelective(OrderPayRecord record);
/**
* select by primary key
*
* @param id primary key
* @return object by primary key
*/
OrderPayRecord selectByPrimaryKey(Integer id);
/**
* update record selective
*
* @param record the updated record
* @return update count
*/
int updateByPrimaryKeySelective(OrderPayRecord record);
int updateBatch(List<OrderPayRecord> list);
int batchInsert(@Param("list") List<OrderPayRecord> list);
int insertOrUpdate(OrderPayRecord record);
int insertOrUpdateSelective(OrderPayRecord record);
int deleteByPrimaryKey(Integer id);
int updateByPrimaryKey(OrderPayRecord record);
int batchInsert(@Param("payRecordList") List<OrderPayRecord> payRecordList);
List<OrderPayRecord> getOrderPayRecordList(@Param("orderCode") String orderCode);
List<OrderPayRecord> getOrderPayRecordList(@Param("orderCode") String orderCode);
}

View File

@@ -0,0 +1,34 @@
package com.jsowell.pile.service;
import com.jsowell.pile.domain.OrderPayRecord;
import com.jsowell.pile.vo.web.OrderDetailInfoVO;
import java.util.List;
public interface OrderPayRecordService{
int insertSelective(OrderPayRecord record);
OrderPayRecord selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(OrderPayRecord record);
int updateBatch(List<OrderPayRecord> list);
int insertOrUpdate(OrderPayRecord record);
int insertOrUpdateSelective(OrderPayRecord record);
/**
* 批量保存订单支付记录
* @param payRecordList
* @return
*/
int batchInsert(List<OrderPayRecord> payRecordList);
List<OrderPayRecord> getOrderPayRecordList(String orderCode);
List<OrderDetailInfoVO.PayRecord> selectOrderPayInfoList(String orderCode);
}

View File

@@ -96,7 +96,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
private WxAppletRemoteService wxAppletRemoteService;
@Autowired
private IOrderPayRecordService orderPayRecordService;
private OrderPayRecordService orderPayRecordService;
@Autowired
private IMemberBasicInfoService memberBasicInfoService;

View File

@@ -22,128 +22,154 @@ import java.math.BigDecimal;
import java.util.List;
@Service
public class OrderPayRecordServiceImpl implements IOrderPayRecordService {
public class OrderPayRecordServiceImpl implements OrderPayRecordService {
@Resource
private OrderPayRecordMapper orderPayRecordMapper;
@Resource
private OrderPayRecordMapper orderPayRecordMapper;
@Autowired
private WxpayCallbackRecordService wxpayCallbackRecordService;
@Autowired
private WxpayCallbackRecordService wxpayCallbackRecordService;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
@Autowired
private AdapayCallbackRecordService adapayCallbackRecordService;
@Autowired
private IMemberTransactionRecordService memberTransactionRecordService;
@Autowired
private IMemberTransactionRecordService memberTransactionRecordService;
@Autowired
private IOrderBasicInfoService orderBasicInfoService;
@Autowired
private IOrderBasicInfoService orderBasicInfoService;
@Autowired
private RedisCache redisCache;
@Autowired
private RedisCache redisCache;
@Override
public int updateByPrimaryKeySelective(OrderPayRecord record) {
return orderPayRecordMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKeySelective(OrderPayRecord record) {
return orderPayRecordMapper.updateByPrimaryKeySelective(record);
}
@Override
public int batchInsert(List<OrderPayRecord> payRecordList) {
return orderPayRecordMapper.batchInsert(payRecordList);
}
@Override
public int batchInsert(List<OrderPayRecord> payRecordList) {
return orderPayRecordMapper.batchInsert(payRecordList);
}
@Override
public List<OrderPayRecord> getOrderPayRecordList(String orderCode) {
return orderPayRecordMapper.getOrderPayRecordList(orderCode);
}
@Override
public List<OrderPayRecord> getOrderPayRecordList(String orderCode) {
return orderPayRecordMapper.getOrderPayRecordList(orderCode);
}
/**
* 查询订单支付信息
* 加缓存
* @param orderCode
* @return
*/
@Override
public List<OrderDetailInfoVO.PayRecord> selectOrderPayInfoList(String orderCode) {
// 缓存
String redisKey = "select_order_pay_info_list:" + orderCode;
List<OrderDetailInfoVO.PayRecord> resultList = redisCache.getCacheList(redisKey);
if (CollectionUtils.isNotEmpty(resultList)) {
return resultList;
}
/**
* 查询订单支付信息
* 加缓存
*
* @param orderCode
* @return
*/
@Override
public List<OrderDetailInfoVO.PayRecord> selectOrderPayInfoList(String orderCode) {
// 缓存
String redisKey = "select_order_pay_info_list:" + orderCode;
List<OrderDetailInfoVO.PayRecord> resultList = redisCache.getCacheList(redisKey);
if (CollectionUtils.isNotEmpty(resultList)) {
return resultList;
}
// 订单信息
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
if (orderBasicInfo == null) {
return Lists.newArrayList();
}
// 支付流水
List<OrderPayRecord> orderPayRecordList = getOrderPayRecordList(orderCode);
if (CollectionUtils.isEmpty(orderPayRecordList)) {
return Lists.newArrayList();
}
List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
OrderDetailInfoVO.PayRecord payInfo = new OrderDetailInfoVO.PayRecord();
// 余额支付如果是由本金和赠送一起支付的,合并为一个
BigDecimal bigDecimal = orderPayRecordList.stream()
.map(OrderPayRecord::getPayAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
payInfo.setPayAmount(bigDecimal.toString());
payInfo.setPayStatus(orderBasicInfo.getPayStatus());
payInfo.setPayTime(DateUtils.formatDateTime(orderBasicInfo.getPayTime()));
if (orderPayRecord.getRefundAmount() != null) {
payInfo.setRefundAmount(orderPayRecord.getRefundAmount().toString());
}
String payMode = orderPayRecord.getPayMode();
if (StringUtils.equals(payMode, OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|| StringUtils.equals(payMode, OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) {
// 使用余额支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_BALANCE.getLabel());
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())){
// 使用微信支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getLabel());
// 订单信息
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
if (orderBasicInfo == null) {
return Lists.newArrayList();
}
// 支付流水
List<OrderPayRecord> orderPayRecordList = getOrderPayRecordList(orderCode);
if (CollectionUtils.isEmpty(orderPayRecordList)) {
return Lists.newArrayList();
}
List<OrderDetailInfoVO.PayRecord> payRecordList = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
OrderDetailInfoVO.PayRecord payInfo = new OrderDetailInfoVO.PayRecord();
// 余额支付如果是由本金和赠送一起支付的,合并为一个
BigDecimal bigDecimal = orderPayRecordList.stream()
.map(OrderPayRecord::getPayAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);
payInfo.setPayAmount(bigDecimal.toString());
payInfo.setPayStatus(orderBasicInfo.getPayStatus());
payInfo.setPayTime(DateUtils.formatDateTime(orderBasicInfo.getPayTime()));
if (orderPayRecord.getRefundAmount() != null) {
payInfo.setRefundAmount(orderPayRecord.getRefundAmount().toString());
}
String payMode = orderPayRecord.getPayMode();
if (StringUtils.equals(payMode, OrderPayRecordEnum.PRINCIPAL_BALANCE_PAYMENT.getValue())
|| StringUtils.equals(payMode, OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) {
// 使用余额支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_BALANCE.getLabel());
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue())) {
// 使用微信支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getLabel());
// 判断是微信支付还是汇付支付
MemberTransactionRecord record = memberTransactionRecordService.selectByOrderCode(orderCode, ActionTypeEnum.FORWARD.getValue());
if (record != null) {
String paymentInstitutions = record.getPaymentInstitutions();
if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.WECHAT_PAY.getValue())) {
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.ADAPAY.getValue())) {
// 查询汇付支付回调
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
if (adapayCallbackRecord != null) {
payInfo.setOutTradeNo(adapayCallbackRecord.getPaymentId());
payInfo.setTransactionId(adapayCallbackRecord.getOutTransId());
}
}
}
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WHITELIST_PAYMENT.getValue())){
// 使用白名单支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getLabel());
}
payRecordList.add(payInfo);
}
redisCache.setCacheList(redisKey, payRecordList);
redisCache.expire(redisKey, CacheConstants.cache_expire_time_10d);
return payRecordList;
}
// 判断是微信支付还是汇付支付
MemberTransactionRecord record = memberTransactionRecordService.selectByOrderCode(orderCode, ActionTypeEnum.FORWARD.getValue());
if (record != null) {
String paymentInstitutions = record.getPaymentInstitutions();
if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.WECHAT_PAY.getValue())) {
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(paymentInstitutions, PaymentInstitutionsEnum.ADAPAY.getValue())) {
// 查询汇付支付回调
AdapayCallbackRecord adapayCallbackRecord = adapayCallbackRecordService.selectByOrderCode(orderCode);
if (adapayCallbackRecord != null) {
payInfo.setOutTradeNo(adapayCallbackRecord.getPaymentId());
payInfo.setTransactionId(adapayCallbackRecord.getOutTransId());
}
}
}
// 查微信支付回调记录
WxpayCallbackRecord wxpayCallbackRecord = wxpayCallbackRecordService.selectByOrderCode(orderCode);
if (wxpayCallbackRecord != null) {
payInfo.setOutTradeNo(wxpayCallbackRecord.getOutTradeNo());
payInfo.setTransactionId(wxpayCallbackRecord.getTransactionId());
}
} else if (StringUtils.equals(payMode, OrderPayRecordEnum.WHITELIST_PAYMENT.getValue())) {
// 使用白名单支付
payInfo.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
payInfo.setPayModeDesc(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getLabel());
}
payRecordList.add(payInfo);
}
redisCache.setCacheList(redisKey, payRecordList);
redisCache.expire(redisKey, CacheConstants.cache_expire_time_10d);
return payRecordList;
}
@Override
public int insertSelective(OrderPayRecord record) {
return orderPayRecordMapper.insertSelective(record);
}
@Override
public OrderPayRecord selectByPrimaryKey(Integer id) {
return orderPayRecordMapper.selectByPrimaryKey(id);
}
@Override
public int updateBatch(List<OrderPayRecord> list) {
return orderPayRecordMapper.updateBatch(list);
}
@Override
public int insertOrUpdate(OrderPayRecord record) {
return orderPayRecordMapper.insertOrUpdate(record);
}
@Override
public int insertOrUpdateSelective(OrderPayRecord record) {
return orderPayRecordMapper.insertOrUpdateSelective(record);
}
}

View File

@@ -8,8 +8,9 @@
<result column="order_code" jdbcType="VARCHAR" property="orderCode" />
<result column="pay_mode" jdbcType="VARCHAR" property="payMode" />
<result column="pay_amount" jdbcType="DECIMAL" property="payAmount" />
<result column="refund_amount" jdbcType="DECIMAL" property="refundAmount" />
<result column="acquirer" jdbcType="VARCHAR" property="acquirer" />
<result column="refund_amount" jdbcType="DECIMAL" property="refundAmount" />
<result column="deduction_record" jdbcType="VARCHAR" property="deductionRecord" />
<result column="create_by" jdbcType="VARCHAR" property="createBy" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_by" jdbcType="VARCHAR" property="updateBy" />
@@ -18,7 +19,7 @@
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, order_code, pay_mode, pay_amount, refund_amount, acquirer,
id, order_code, pay_mode, pay_amount, acquirer, refund_amount, deduction_record,
create_by, create_time, update_by, update_time, del_flag
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
@@ -28,64 +29,372 @@
from order_pay_record
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
<insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.OrderPayRecord" useGeneratedKeys="true">
<!--@mbg.generated-->
delete from order_pay_record
where id = #{id,jdbcType=INTEGER}
</delete>
insert into order_pay_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="orderCode != null">
order_code,
</if>
<if test="payMode != null">
pay_mode,
</if>
<if test="payAmount != null">
pay_amount,
</if>
<if test="acquirer != null">
acquirer,
</if>
<if test="refundAmount != null">
refund_amount,
</if>
<if test="deductionRecord != null">
deduction_record,
</if>
<if test="createBy != null">
create_by,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateBy != null">
update_by,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="delFlag != null">
del_flag,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="orderCode != null">
#{orderCode,jdbcType=VARCHAR},
</if>
<if test="payMode != null">
#{payMode,jdbcType=VARCHAR},
</if>
<if test="payAmount != null">
#{payAmount,jdbcType=DECIMAL},
</if>
<if test="acquirer != null">
#{acquirer,jdbcType=VARCHAR},
</if>
<if test="refundAmount != null">
#{refundAmount,jdbcType=DECIMAL},
</if>
<if test="deductionRecord != null">
#{deductionRecord,jdbcType=VARCHAR},
</if>
<if test="createBy != null">
#{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateBy != null">
#{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
#{delFlag,jdbcType=CHAR},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.jsowell.pile.domain.OrderPayRecord">
<!--@mbg.generated-->
update order_pay_record
<set>
<if test="orderCode != null and orderCode != ''">
<if test="orderCode != null">
order_code = #{orderCode,jdbcType=VARCHAR},
</if>
<if test="payMode != null and payMode != ''">
<if test="payMode != null">
pay_mode = #{payMode,jdbcType=VARCHAR},
</if>
<if test="payAmount != null">
pay_amount = #{payAmount,jdbcType=DECIMAL},
</if>
<if test="refundAmount != null">
refund_amount = #{refundAmount,jdbcType=DECIMAL},
</if>
<if test="acquirer != null">
acquirer = #{acquirer,jdbcType=VARCHAR},
</if>
<if test="createBy != null and createBy != ''">
<if test="refundAmount != null">
refund_amount = #{refundAmount,jdbcType=DECIMAL},
</if>
<if test="deductionRecord != null">
deduction_record = #{deductionRecord,jdbcType=VARCHAR},
</if>
<if test="createBy != null">
create_by = #{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateBy != null and updateBy != ''">
<if test="updateBy != null">
update_by = #{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null and delFlag != ''">
<if test="delFlag != null">
del_flag = #{delFlag,jdbcType=CHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.jsowell.pile.domain.OrderPayRecord">
<update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated-->
update order_pay_record
set order_code = #{orderCode,jdbcType=VARCHAR},
<trim prefix="set" suffixOverrides=",">
<trim prefix="order_code = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.orderCode,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="pay_mode = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.payMode,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="pay_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.payAmount,jdbcType=DECIMAL}
</foreach>
</trim>
<trim prefix="acquirer = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.acquirer,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="refund_amount = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.refundAmount,jdbcType=DECIMAL}
</foreach>
</trim>
<trim prefix="deduction_record = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.deductionRecord,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="create_by = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.createBy,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="create_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.createTime,jdbcType=TIMESTAMP}
</foreach>
</trim>
<trim prefix="update_by = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.updateBy,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="update_time = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.updateTime,jdbcType=TIMESTAMP}
</foreach>
</trim>
<trim prefix="del_flag = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=INTEGER} then #{item.delFlag,jdbcType=CHAR}
</foreach>
</trim>
</trim>
where id in
<foreach close=")" collection="list" item="item" open="(" separator=", ">
#{item.id,jdbcType=INTEGER}
</foreach>
</update>
<insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into order_pay_record
(order_code, pay_mode, pay_amount, acquirer, refund_amount, deduction_record, create_by,
create_time, update_by, update_time, del_flag)
values
<foreach collection="list" item="item" separator=",">
(#{item.orderCode,jdbcType=VARCHAR}, #{item.payMode,jdbcType=VARCHAR}, #{item.payAmount,jdbcType=DECIMAL},
#{item.acquirer,jdbcType=VARCHAR}, #{item.refundAmount,jdbcType=DECIMAL}, #{item.deductionRecord,jdbcType=VARCHAR},
#{item.createBy,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP}, #{item.updateBy,jdbcType=VARCHAR},
#{item.updateTime,jdbcType=TIMESTAMP}, #{item.delFlag,jdbcType=CHAR})
</foreach>
</insert>
<insert id="insertOrUpdate" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.OrderPayRecord" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into order_pay_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
order_code,
pay_mode,
pay_amount,
acquirer,
refund_amount,
deduction_record,
create_by,
create_time,
update_by,
update_time,
del_flag,
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
#{orderCode,jdbcType=VARCHAR},
#{payMode,jdbcType=VARCHAR},
#{payAmount,jdbcType=DECIMAL},
#{acquirer,jdbcType=VARCHAR},
#{refundAmount,jdbcType=DECIMAL},
#{deductionRecord,jdbcType=VARCHAR},
#{createBy,jdbcType=VARCHAR},
#{createTime,jdbcType=TIMESTAMP},
#{updateBy,jdbcType=VARCHAR},
#{updateTime,jdbcType=TIMESTAMP},
#{delFlag,jdbcType=CHAR},
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="id != null">
id = #{id,jdbcType=INTEGER},
</if>
order_code = #{orderCode,jdbcType=VARCHAR},
pay_mode = #{payMode,jdbcType=VARCHAR},
pay_amount = #{payAmount,jdbcType=DECIMAL},
refund_amount = #{refundAmount,jdbcType=DECIMAL},
acquirer = #{acquirer,jdbcType=VARCHAR},
refund_amount = #{refundAmount,jdbcType=DECIMAL},
deduction_record = #{deductionRecord,jdbcType=VARCHAR},
create_by = #{createBy,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_by = #{updateBy,jdbcType=VARCHAR},
update_time = #{updateTime,jdbcType=TIMESTAMP},
del_flag = #{delFlag,jdbcType=CHAR}
where id = #{id,jdbcType=INTEGER}
</update>
del_flag = #{delFlag,jdbcType=CHAR},
</trim>
</insert>
<insert id="insertOrUpdateSelective" keyColumn="id" keyProperty="id" parameterType="com.jsowell.pile.domain.OrderPayRecord" useGeneratedKeys="true">
<!--@mbg.generated-->
insert into order_pay_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="orderCode != null">
order_code,
</if>
<if test="payMode != null">
pay_mode,
</if>
<if test="payAmount != null">
pay_amount,
</if>
<if test="acquirer != null">
acquirer,
</if>
<if test="refundAmount != null">
refund_amount,
</if>
<if test="deductionRecord != null">
deduction_record,
</if>
<if test="createBy != null">
create_by,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateBy != null">
update_by,
</if>
<if test="updateTime != null">
update_time,
</if>
<if test="delFlag != null">
del_flag,
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="orderCode != null">
#{orderCode,jdbcType=VARCHAR},
</if>
<if test="payMode != null">
#{payMode,jdbcType=VARCHAR},
</if>
<if test="payAmount != null">
#{payAmount,jdbcType=DECIMAL},
</if>
<if test="acquirer != null">
#{acquirer,jdbcType=VARCHAR},
</if>
<if test="refundAmount != null">
#{refundAmount,jdbcType=DECIMAL},
</if>
<if test="deductionRecord != null">
#{deductionRecord,jdbcType=VARCHAR},
</if>
<if test="createBy != null">
#{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateBy != null">
#{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
#{delFlag,jdbcType=CHAR},
</if>
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="id != null">
id = #{id,jdbcType=INTEGER},
</if>
<if test="orderCode != null">
order_code = #{orderCode,jdbcType=VARCHAR},
</if>
<if test="payMode != null">
pay_mode = #{payMode,jdbcType=VARCHAR},
</if>
<if test="payAmount != null">
pay_amount = #{payAmount,jdbcType=DECIMAL},
</if>
<if test="acquirer != null">
acquirer = #{acquirer,jdbcType=VARCHAR},
</if>
<if test="refundAmount != null">
refund_amount = #{refundAmount,jdbcType=DECIMAL},
</if>
<if test="deductionRecord != null">
deduction_record = #{deductionRecord,jdbcType=VARCHAR},
</if>
<if test="createBy != null">
create_by = #{createBy,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateBy != null">
update_by = #{updateBy,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
<if test="delFlag != null">
del_flag = #{delFlag,jdbcType=CHAR},
</if>
</trim>
</insert>
<insert id="batchInsert">
insert into order_pay_record