Commit f9ccba43 by zhiwj

回调优化

parent 2f8d0ee1
......@@ -12,6 +12,7 @@ import java.io.Serializable;
*/
public class ApprovalCallBackDTO implements Serializable {
private static final long serialVersionUID = -4804678123408738557L;
public interface ApprovalValid{}
@NotBlank(message = "申请单号不能为空", groups = ApprovalValid.class)
......@@ -31,6 +32,16 @@ public class ApprovalCallBackDTO implements Serializable {
private String timeEnd;
private String prepayId;
private String onlineSerialNumber;
public String getOnlineSerialNumber() {
return onlineSerialNumber;
}
public void setOnlineSerialNumber(String onlineSerialNumber) {
this.onlineSerialNumber = onlineSerialNumber;
}
public String getOrderSerialNumber() {
return orderSerialNumber;
}
......
......@@ -24,6 +24,7 @@ public class BillingRechargeDTO implements Serializable {
private Integer resultCode;
private String errCode;
private String errorCodeDes;
private String onlineSerialNumber;
public Integer getPayType() {
......@@ -137,4 +138,12 @@ public class BillingRechargeDTO implements Serializable {
public void setInitiatorName(String initiatorName) {
this.initiatorName = initiatorName;
}
public String getOnlineSerialNumber() {
return onlineSerialNumber;
}
public void setOnlineSerialNumber(String onlineSerialNumber) {
this.onlineSerialNumber = onlineSerialNumber;
}
}
......@@ -56,7 +56,7 @@ public interface TabBillingRechargeRecordMapper {
Page<TabBillingRechargeRecord> listRechargeRecord(RechargeRecordQO rechargeRecordQO);
void updateBySerialNumber(@Param("orderSerialNumber") String orderSerialNumber, @Param("totalFeePaid") Double totalFeePaid, @Param("auditStatus") Integer auditStatus, @Param("timeEnd") String timeEnd);
void updateBySerialNumber(@Param("orderSerialNumber") String orderSerialNumber, @Param("totalFeePaid") Double totalFeePaid, @Param("auditStatus") Integer auditStatus, @Param("timeEnd") String timeEnd, @Param("onlineSerialNumber") String onlineSerialNumber);
TabBillingRechargeRecord getAuditingRechargeRecord(@Param("enterpriseId") Integer enterpriseId);
......
......@@ -22,6 +22,11 @@ public class TabBillingRechargeRecord {
private String serialNumber;
/**
* 第三方的交易单号(微信)
*/
private String onlineSerialNumber;
/**
* 充值金额
*/
private Double totalFee;
......@@ -32,7 +37,7 @@ public class TabBillingRechargeRecord {
private Double totalFeePaid;
/**
* 支付方式 1微信 2支付宝 3.线下支付
* 支付方式 支付方式 1微信 2支付宝 3.银行对公转账 4余额支付
*/
private Integer payType;
......@@ -47,7 +52,7 @@ public class TabBillingRechargeRecord {
private Integer status;
/**
* 发起方 1:运维平
* 发起方 1:商户 2运维后
*/
private Integer initiator;
......@@ -62,7 +67,7 @@ public class TabBillingRechargeRecord {
private String initiatorName;
/**
* 0:已关闭 1:待支付,2:已完成,3:审核中,4:审核失败
* 0:"待支付", 1:"审核中", 2:"已取消", 3:"审核失败", 4:"已完成"
*/
private Integer auditStatus;
......@@ -110,6 +115,14 @@ public class TabBillingRechargeRecord {
this.serialNumber = serialNumber;
}
public String getOnlineSerialNumber() {
return onlineSerialNumber;
}
public void setOnlineSerialNumber(String onlineSerialNumber) {
this.onlineSerialNumber = onlineSerialNumber;
}
public Double getTotalFee() {
return totalFee;
}
......
......@@ -19,7 +19,7 @@ public interface BillingRechargeRecordService {
Page<TabBillingRechargeRecord> listRechargeRecord(RechargeRecordQO rechargeRecordQO);
void updateBySerialNumber(Integer enterpriseId, String orderSerialNumber, Double totalFee, Double totalFeePaid, Integer code, String timeEnd);
void updateBySerialNumber(Integer enterpriseId, String orderSerialNumber, Double totalFee, Double totalFeePaid, Integer auditStatus, String timeEnd, String onlineSerialNumber);
TabBillingRechargeRecord getRechargeRecord(Integer rechargeRecordId);
......
......@@ -78,9 +78,9 @@ public class BillingRechargeRecordServiceImpl implements BillingRechargeRecordSe
}
@Override
public void updateBySerialNumber(Integer enterpriseId, String orderSerialNumber, Double totalFee, Double totalFeePaid, Integer auditStatus, String timeEnd) {
public void updateBySerialNumber(Integer enterpriseId, String orderSerialNumber, Double totalFee, Double totalFeePaid, Integer auditStatus, String timeEnd, String onlineSerialNumber) {
// 修改订单状态
tabBillingRechargeRecordMapper.updateBySerialNumber(orderSerialNumber, totalFeePaid, auditStatus, timeEnd);
tabBillingRechargeRecordMapper.updateBySerialNumber(orderSerialNumber, totalFeePaid, auditStatus, timeEnd, onlineSerialNumber);
// 给账户充值
if (BillingAuditStatusEnum.PASS.getCode().equals(auditStatus)) {
billingAccountService.updateAccountAfterRechargeOrRefund(totalFee, enterpriseId);
......
......@@ -120,6 +120,7 @@ public class BillingPayInfoApiServiceImpl implements BillingPayInfoApiService {
approvalCallBackDTO.setPrepayId(resData.getPrepay_id());
approvalCallBackDTO.setResultCode(StringUtils.equalsIgnoreCase(resData.getResult_code(), "SUCCESS") ? 1 : 0);
approvalCallBackDTO.setTotalFeePaid(new BigDecimal(resData.getTotal_fee()).divide(new BigDecimal("100"), 5, RoundingMode.HALF_UP).doubleValue());
approvalCallBackDTO.setOnlineSerialNumber(resData.getTransaction_id());
return strategyMap.get(PayTypeEnum.WE_CHAT_PAY.getCode() + "").callBack(approvalCallBackDTO);
}
......
......@@ -143,7 +143,7 @@ public class OfflineStrategy implements PayStrategy {
public ServiceResponse<Void> callBack(ApprovalCallBackDTO resData) {
logger.info("银行线下支付回调结果:{}", JSON.toJSONString(resData));
sendApprovalSms(resData);
String orderSerialNumber = resData.getOrderSerialNumber();
TabBillingPayInfo billingPayInfo = billingPayInfoService.getByOrderSerialNumber(orderSerialNumber, PayTypeEnum.OFFLINE_PAY.getCode());
......@@ -154,13 +154,14 @@ public class OfflineStrategy implements PayStrategy {
switch (resData.getBuyType()) {
case 1:
// 商户余额充值
billingRechargeRecordService.updateBySerialNumber(billingPayInfo.getEnterpriseId(), resData.getOrderSerialNumber(), resData.getTotalFee(), resData.getTotalFeePaid(), resData.getAuditStatus(), resData.getTimeEnd());
billingRechargeRecordService.updateBySerialNumber(billingPayInfo.getEnterpriseId(), resData.getOrderSerialNumber(), resData.getTotalFee(), resData.getTotalFeePaid(), resData.getAuditStatus(), resData.getTimeEnd(), null);
sendRechargeSuccessSms(resData, billingPayInfo.getEnterpriseId());
sendApprovalSms(resData, "GICJFZX007");
break;
case 2:
// 短信套餐包购买
this.billingOrderService.updateBySerialNumber(resData.getOrderSerialNumber(), resData.getTotalFeePaid(), resData.getAuditStatus(), resData.getTimeEnd());
sendApprovalSms(resData, "GICJFZX008");
break;
default:
break;
......@@ -176,11 +177,11 @@ public class OfflineStrategy implements PayStrategy {
sendSms(resData, userDTO, "GICJFZX005");
}
private void sendApprovalSms(ApprovalCallBackDTO resData) {
private void sendApprovalSms(ApprovalCallBackDTO resData, String code) {
TabBillingRechargeRecord rechargeRecord = billingRechargeRecordService.getRechargeRecordBySerialNumber(resData.getOrderSerialNumber());
Integer initiator = rechargeRecord.getInitiator();
UserDTO userDTO = userApiService.getUserById(initiator).getResult();
sendSms(resData, userDTO, "GICJFZX008");
sendSms(resData, userDTO, code);
}
private void sendSms(ApprovalCallBackDTO resData, UserDTO userDTO, String code) {
......
......@@ -118,7 +118,7 @@ public class WxPayStrategy implements PayStrategy {
switch (billingPayInfo.getBuyType()) {
case 1:
// 商户余额充值
billingRechargeRecordService.updateBySerialNumber(resData.getEnterpriseId(), billingPayInfo.getOrderSerialNumber(), resData.getTotalFeePaid(), resData.getTotalFeePaid(), BillingAuditStatusEnum.PASS.getCode(), resData.getTimeEnd());
billingRechargeRecordService.updateBySerialNumber(resData.getEnterpriseId(), billingPayInfo.getOrderSerialNumber(), resData.getTotalFeePaid(), resData.getTotalFeePaid(), BillingAuditStatusEnum.PASS.getCode(), resData.getTimeEnd(), resData.getOnlineSerialNumber());
this.pushMessageApiService.pushMessage(resData.getEnterpriseId(), "系统通知", "余额充值", "您的商户成功充值"+resData.getTotalFeePaid()+"元!感谢您的支持和使用!");
sendRechargeSuccessSms(resData, billingPayInfo.getEnterpriseId());
break;
......
......@@ -5,6 +5,7 @@
<id column="recharge_record_id" jdbcType="INTEGER" property="rechargeRecordId" />
<result column="enterprise_id" jdbcType="INTEGER" property="enterpriseId" />
<result column="serial_number" jdbcType="VARCHAR" property="serialNumber" />
<result column="online_serial_number" jdbcType="VARCHAR" property="onlineSerialNumber" />
<result column="total_fee" jdbcType="DOUBLE" property="totalFee" />
<result column="total_fee_paid" jdbcType="DOUBLE" property="totalFeePaid" />
<result column="pay_type" jdbcType="INTEGER" property="payType" />
......@@ -20,9 +21,9 @@
<result column="deduction_time" jdbcType="TIMESTAMP" property="deductionTime" />
</resultMap>
<sql id="Base_Column_List">
recharge_record_id, enterprise_id, serial_number, total_fee, total_fee_paid, pay_type,
pay_info_id, status, initiator, initiator_user, initiator_name, audit_status, verification_code,
create_time, update_time, deduction_time
recharge_record_id, enterprise_id, serial_number, online_serial_number, total_fee,
total_fee_paid, pay_type, pay_info_id, status, initiator, initiator_user, initiator_name,
audit_status, verification_code, create_time, update_time, deduction_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
......@@ -36,17 +37,17 @@
</delete>
<insert id="insert" parameterType="com.gic.enterprise.entity.TabBillingRechargeRecord">
insert into tab_billing_recharge_record (recharge_record_id, enterprise_id, serial_number,
total_fee, total_fee_paid, pay_type,
pay_info_id, status, initiator,
initiator_user, initiator_name, audit_status,
verification_code, create_time, update_time,
deduction_time)
online_serial_number, total_fee, total_fee_paid,
pay_type, pay_info_id, status,
initiator, initiator_user, initiator_name,
audit_status, verification_code, create_time,
update_time, deduction_time)
values (#{rechargeRecordId,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{serialNumber,jdbcType=VARCHAR},
#{totalFee,jdbcType=DOUBLE}, #{totalFeePaid,jdbcType=DOUBLE}, #{payType,jdbcType=INTEGER},
#{payInfoId,jdbcType=INTEGER}, #{status,jdbcType=INTEGER}, #{initiator,jdbcType=INTEGER},
#{initiatorUser,jdbcType=INTEGER}, #{initiatorName,jdbcType=VARCHAR}, #{auditStatus,jdbcType=INTEGER},
#{verificationCode,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{deductionTime,jdbcType=TIMESTAMP})
#{onlineSerialNumber,jdbcType=VARCHAR}, #{totalFee,jdbcType=DOUBLE}, #{totalFeePaid,jdbcType=DOUBLE},
#{payType,jdbcType=INTEGER}, #{payInfoId,jdbcType=INTEGER}, #{status,jdbcType=INTEGER},
#{initiator,jdbcType=INTEGER}, #{initiatorUser,jdbcType=INTEGER}, #{initiatorName,jdbcType=VARCHAR},
#{auditStatus,jdbcType=INTEGER}, #{verificationCode,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}, #{deductionTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.gic.enterprise.entity.TabBillingRechargeRecord">
insert into tab_billing_recharge_record
......@@ -60,6 +61,9 @@
<if test="serialNumber != null">
serial_number,
</if>
<if test="onlineSerialNumber != null">
online_serial_number,
</if>
<if test="totalFee != null">
total_fee,
</if>
......@@ -110,6 +114,9 @@
<if test="serialNumber != null">
#{serialNumber,jdbcType=VARCHAR},
</if>
<if test="onlineSerialNumber != null">
#{onlineSerialNumber,jdbcType=VARCHAR},
</if>
<if test="totalFee != null">
#{totalFee,jdbcType=DOUBLE},
</if>
......@@ -160,6 +167,9 @@
<if test="serialNumber != null">
serial_number = #{serialNumber,jdbcType=VARCHAR},
</if>
<if test="onlineSerialNumber != null">
online_serial_number = #{onlineSerialNumber,jdbcType=VARCHAR},
</if>
<if test="totalFee != null">
total_fee = #{totalFee,jdbcType=DOUBLE},
</if>
......@@ -206,6 +216,7 @@
update tab_billing_recharge_record
set enterprise_id = #{enterpriseId,jdbcType=INTEGER},
serial_number = #{serialNumber,jdbcType=VARCHAR},
online_serial_number = #{onlineSerialNumber,jdbcType=VARCHAR},
total_fee = #{totalFee,jdbcType=DOUBLE},
total_fee_paid = #{totalFeePaid,jdbcType=DOUBLE},
pay_type = #{payType,jdbcType=INTEGER},
......@@ -253,7 +264,8 @@
update tab_billing_recharge_record
set total_fee_paid = #{totalFeePaid},
audit_status = #{auditStatus},
deduction_time = #{timeEnd}
deduction_time = #{timeEnd},
online_serial_number = #{onlineSerialNumber}
where serial_number = #{orderSerialNumber}
</update>
<select id="getAuditingRechargeRecord" resultMap="BaseResultMap">
......
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