作者 shenhailong

判断 建行反馈多次接口 逻辑

package com.sunyo.energy.location.controller;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.internal.$Gson$Preconditions;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.dao.PayResponseMapper;
... ... @@ -107,111 +108,125 @@ public class PayRseponeController {
payResponse.setPaytype(PAYTYPE);
payResponse.setSign(SIGN);
try {
int msg = 0;
int i = payResponseMapperl.insertSelective(payResponse);
log.info("插入数据库{},信息{}",i, payResponse);
if (i > 0) {
msg = 1;
PayRecords payRecords = new PayRecords();
// 支付类型
if (!"".equals(ACC_TYPE)) {
if ("WX".equals(ACC_TYPE)) {
payRecords.setPayfesstype(false);
} else {
payRecords.setPayfesstype(true);
}
}
if ("Y".equals(SUCCESS)) {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("1");
} else {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("0");
}
/**
* 修改订单支付状态
*/
payRecordsMapper.updateOrderStatus(payRecords);
// 查询是水还是电
boolean selectType = payRecordsMapper.selectType(ORDERID);
if (selectType) {
// 查询该订单设备编号
String eeId = payRecordsMapper.findOrderNumber(ORDERID);
if (!"".equals(eeId)) {
// 通知充值电费
int eeResult = electricityMeterService.rechargeDevices(eeId, PAYMENT, "0", ORDERID);
if (eeResult > 0) {
log.info("电表信息充值成功{}",eeResult);
/**
* 修改电表充值状态
*/
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
log.info("修改电表订单状态{}, 修改信息{}", i1, payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
log.info("通知前端消息结果");
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
int msg = 0;
/**
* 解决建行反馈多次原因
*/
if(payResponseMapperl.count(ORDERID) == 0){
int i = payResponseMapperl.insertSelective(payResponse);
log.info("插入数据库{},信息{}",i, payResponse);
if (i > 0) {
msg = 1;
PayRecords payRecords = new PayRecords();
// 支付类型
if (!"".equals(ACC_TYPE)) {
if ("WX".equals(ACC_TYPE)) {
payRecords.setPayfesstype(false);
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "S");
webSocketServer.broadcast(jsonObject.toJSONString());
payRecords.setPayfesstype(true);
}
}
} else {
// 查询该订单设备编号
String wmId = payRecordsMapper.findOrderNumber(ORDERID);
// 通知充值水费
if (!"".equals(wmId)) {
ResultJson resultJson = waterMeterService.payWater(PAYMENT, wmId);
if ("200".equals(resultJson.getCode())) {
log.info("水表信息充值成功{}",resultJson.getCode());
/**
* 修改订单充值状态
*/
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
log.info("修改水表订单状态{}, 修改信息{}", i1, payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
log.info("通知前端消息结果");
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
if ("Y".equals(SUCCESS)) {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("1");
/**
* 修改订单支付状态
*/
payRecordsMapper.updateOrderStatus(payRecords);
// 查询是水还是电
boolean selectType = payRecordsMapper.selectType(ORDERID);
if (selectType) {
// 查询该订单设备编号
String eeId = payRecordsMapper.findOrderNumber(ORDERID);
if (!"".equals(eeId)) {
// 通知充值电费
int eeResult = electricityMeterService.rechargeDevices(eeId, PAYMENT, "0", ORDERID);
if (eeResult > 0) {
log.info("电表信息充值成功{}",eeResult);
/**
* 修改电表充值状态
*/
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
log.info("修改电表订单状态{}, 修改信息{}", i1, payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
log.info("通知前端消息结果");
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "S");
webSocketServer.broadcast(jsonObject.toJSONString());
}
}
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
// 查询该订单设备编号
String wmId = payRecordsMapper.findOrderNumber(ORDERID);
// 通知充值水费
if (!"".equals(wmId)) {
ResultJson resultJson = waterMeterService.payWater(PAYMENT, wmId);
if ("200".equals(resultJson.getCode())) {
log.info("水表信息充值成功{}",resultJson.getCode());
/**
* 修改订单充值状态
*/
int i1 = payRecordsMapper.updateByPrimaryKey(payRecords);
log.info("修改水表订单状态{}, 修改信息{}", i1, payRecords);
if (i1 > 0) {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
webSocketServer.broadcast(jsonObject.toJSONString());
log.info("通知前端消息结果");
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
} else {
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "N");
webSocketServer.broadcast(jsonObject.toJSONString());
}
}
}
} else {
payRecords.setOrdernumber(ORDERID);
payRecords.setReamke3("0");
/**
* 修改订单支付状态
*/
payRecordsMapper.updateOrderStatus(payRecords);
}
}
return i == 1 ? new ResultJson("200", "支付回执信息接受成功") : new ResultJson("500", "支付回执信息接受失败");
}else {
return 1 == 1 ? new ResultJson("200", "2次调用") : new ResultJson("500", "2次调用");
}
return i == 1 ? new ResultJson("200", "支付回执信息接受成功") : new ResultJson("500", "支付回执信息接受失败");
}catch (Exception e){
e.printStackTrace();
log.info("系统异常-----------");
... ... @@ -219,4 +234,5 @@ public class PayRseponeController {
}
}
}
... ...
... ... @@ -12,7 +12,7 @@ public interface PayRecordsMapper {
int insertSelective(PayRecords record);
PayRecords selectByPrimaryKey(Integer id);
PayRecords selectByPrimaryKey(@Param(value = "orderNumber") String orderNumber);
int updateByPrimaryKeySelective(PayRecords record);
... ...
package com.sunyo.energy.location.dao;
import com.sunyo.energy.location.model.PayResponse;
import org.apache.ibatis.annotations.Param;
public interface PayResponseMapper {
int deleteByPrimaryKey(String id);
... ... @@ -14,4 +15,6 @@ public interface PayResponseMapper {
int updateByPrimaryKeySelective(PayResponse record);
int updateByPrimaryKey(PayResponse record);
int count(@Param("order") String orderId);
}
\ No newline at end of file
... ...
... ... @@ -237,6 +237,7 @@ public class WaterMeterServiceImp implements WaterMeterService {
String s = AllUtils.nubmerDivision(payFees);
// 查询累计充值量
WaterMeterSacc waterMeterSacc = waterMeterSaccMapper.selectByPrimaryKey(AllUtils.wmIdUtils(wmId));
// 需要通知外部水表接口的累计充值量
String allSacc = AllUtils.nubmerAdd(s, waterMeterSacc.getWmSacc());
Map<String, Object> datas = new HashMap<>();
datas.put("MtId", wmId);
... ...
... ... @@ -23,11 +23,11 @@
id, payFees, payUserId, payTime, payLocationId, payStatus, payType, payFessType,
orderNumber, reamke1, reamke2, reamke3, reamke4, payUserName, payLocationName, payTypeAddress
</sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">
select
<include refid="Base_Column_List"/>
from pay_records
where id = #{id,jdbcType=INTEGER}
where orderNumber = #{orderNumber,jdbcType=INTEGER}
</select>
<select id="findAll" resultMap="BaseResultMap">
... ...
... ... @@ -31,6 +31,11 @@
from pay_response
where ID = #{id,jdbcType=VARCHAR}
</select>
<select id="count" resultType="int" parameterType="string">
select count(*) from pay_response where ORDERID = #{order,jdbcType=VARCHAR} and SUCCESS = 'Y'
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from pay_response
where ID = #{id,jdbcType=VARCHAR}
... ...