作者 shenhailong

收到银行返回信息 通知水表接口充值水费

修改水表示实施查询逻辑
修改 水表充值 逻辑
... ... @@ -3,8 +3,12 @@ package com.sunyo.energy.location.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.sunyo.energy.location.controller.response.ResultJson;
import com.sunyo.energy.location.dao.PayRecordsMapper;
import com.sunyo.energy.location.dao.PayResponseMapper;
import com.sunyo.energy.location.model.PayResponse;
import com.sunyo.energy.location.service.PayOrderService;
import com.sunyo.energy.location.service.WaterMeterService;
import com.sunyo.energy.location.service.imp.WaterMeterServiceImp;
import com.sunyo.energy.location.websocket.WebSocketServer;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -29,6 +33,12 @@ public class PayRseponeController {
@Autowired
private PayResponseMapper payResponseMapperl;
@Autowired
private WaterMeterService waterMeterService;
@Autowired
private PayRecordsMapper payRecordsMapper;
/**
* 接受字段
* @param POSID 商户柜台代码
... ... @@ -49,7 +59,7 @@ public class PayRseponeController {
* @param PAYTYPE 支付方式
* @param SIGN 数字签名
*/
@RequestMapping(value = "/payRseponse")
@RequestMapping(value = "/payResponse")
@ApiOperation(value = "支付回执是否成功")
@ResponseBody
public ResultJson payCodeRsepone(@RequestParam(value = "POSID", required = false) String POSID,
... ... @@ -89,16 +99,30 @@ public class PayRseponeController {
payResponse.setUsrinfo(USRINFO);
payResponse.setPaytype(PAYTYPE);
payResponse.setSign(SIGN);
int msg = 0;
int msg =0;
int i = payResponseMapperl.insertSelective(payResponse);
if (i>0){
msg=1;
WebSocketServer webSocketServer = new WebSocketServer();
msg =1;
// 查询该订单设备编号
String orderNumber = payRecordsMapper.findOrderNumber(ORDERID);
// 通知充值水费
if (!"".equals(orderNumber)){
ResultJson resultJson = waterMeterService.payWater(PAYMENT, orderNumber);
if ("200".equals(resultJson.getCode())){
WebSocketServer webSocketServer = new WebSocketServer();
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", "Y");
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());
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderNumber", ORDERID);
jsonObject.put("success", SUCCESS);
webSocketServer.broadcast(jsonObject.toJSONString());
}
return i==1? new ResultJson("200","支付回执信息接受成功"):new ResultJson("500","支付回执信息接受失败");
}
... ...
... ... @@ -40,11 +40,9 @@ public class UserPayController {
@ApiOperation(value = "充值水费")
@PostMapping("/add")
public ResultJson payWater(@RequestParam(value = "payFees", required = false) String payFees,
@RequestParam(value = "wmId", required = false) String wmId,
@RequestParam(value = "userId", required = false) String userId,
@RequestParam(value = "realName", required = false) String realName){
@RequestParam(value = "wmId", required = false) String wmId){
return waterMeterService.payWater(payFees, wmId, userId, realName);
return waterMeterService.payWater(payFees, wmId);
}
@ApiOperation(value = "请求返回二维码")
... ...
... ... @@ -32,4 +32,6 @@ public interface LocationMapper {
int countParent(Integer id);
String findWmId(String roomNumber);
}
\ No newline at end of file
... ...
... ... @@ -21,4 +21,6 @@ public interface PayRecordsMapper {
List<PayRecords> findAll(@Param(value = "orderNumber") String orderNumber,
@Param(value = "startTime") String startTime,
@Param(value = "endTime") String endTime);
String findOrderNumber(String orderId);
}
\ No newline at end of file
... ...
... ... @@ -12,7 +12,7 @@ public interface WaterMeterService {
WaterMeter findRealTime(String wmId);
ResultJson payWater(String payFees, String wmId, String userId, String realName);
ResultJson payWater(String payFees, String wmId);
ResultJson waterMeterAll(String wmId);
... ...
package com.sunyo.energy.location.service.imp;
import com.sunyo.energy.location.dao.LocationMapper;
import com.sunyo.energy.location.model.WaterMeter;
import com.sunyo.energy.location.service.LocationService;
import com.sunyo.energy.location.utils.AllUtils;
import org.springframework.beans.factory.annotation.Autowired;
... ... @@ -8,6 +9,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
... ... @@ -27,14 +29,33 @@ public class LocationServiceImp implements LocationService {
/**
* 水费查询
*/
// 查询房间号 水表实施查询list
Map<String, Object> waterMap = locationMapper.userPayList(roomNumber);
if (!StringUtils.isEmpty(waterMap.get("wmSacc").toString()) && !StringUtils.isEmpty( waterMap.get("wmLacc").toString())){
// 计算剩余量 充值量 减去 消费量 参数1 减去 参数2
String subtraction = AllUtils.nubmerSubtraction(waterMap.get("wmSacc").toString(), waterMap.get("wmLacc").toString());
// 余量
waterMap.put("subtraction", subtraction);
// 查询房间号 水表本地查询list
Map<String, Object> thisLocalityWaterMap = locationMapper.userPayList(roomNumber);
Map<String, Object> distanceWaterMap = new HashMap<>();
// 是否为null 为null则去线上查询
if (thisLocalityWaterMap != null){
if (!StringUtils.isEmpty(thisLocalityWaterMap.get("wmSacc").toString()) && !StringUtils.isEmpty( thisLocalityWaterMap.get("wmLacc").toString())){
// 计算剩余量 充值量 减去 消费量 参数1 减去 参数2
String subtraction = AllUtils.nubmerSubtraction(thisLocalityWaterMap.get("wmSacc").toString(), thisLocalityWaterMap.get("wmLacc").toString());
// 余量
thisLocalityWaterMap.put("subtraction", subtraction);
}
list.add(thisLocalityWaterMap);
}else {
// 查询该房间号的水表编号
String wmId = locationMapper.findWmId(roomNumber);
if (!"".equals(wmId) && "" != wmId){
Map<String,Object> waterMaps = new HashMap<>();
WaterMeterServiceImp waterMeterServiceImp = new WaterMeterServiceImp();
WaterMeter realTime = waterMeterServiceImp.findRealTime(wmId);
String subtraction = AllUtils.nubmerSubtraction(realTime.getWmSacc(), realTime.getWmLacc());
distanceWaterMap.put("subtraction", subtraction);
distanceWaterMap.put("wmSacc",realTime.getWmSacc());
distanceWaterMap.put("wmFmstate",realTime.getWmFmstate());
distanceWaterMap.put("wmLacc",realTime.getWmLacc());
distanceWaterMap.put("wmId", wmId);
list.add(distanceWaterMap);
}
}
/**
* 电费查询
... ... @@ -44,7 +65,6 @@ public class LocationServiceImp implements LocationService {
// Map<String, Object> electricityMap = electricityMeterServiceImp.electricityInfo(roomNumber);
//
// list.add(electricityMap);
list.add(waterMap);
return list;
}
return null;
... ...
... ... @@ -122,28 +122,19 @@ public class WaterMeterServiceImp implements WaterMeterService {
* 水费充值 换算总水量 生成订单
* @param payFees
* @param wmId
* @param userId
* @param realName
* @return
*/
@Override
public ResultJson payWater(String payFees, String wmId, String userId, String realName) {
public ResultJson payWater(String payFees, String wmId) {
ResultJson<Object> resultJson = new ResultJson<>();
try {
// 得到请求接口 返回值 和总水量
Map<String, Object> map = allWater(payFees, wmId);
Map hashMap = JSON.parseObject(map.get("status").toString(), HashMap.class);
if ("0".equals(hashMap.get("state").toString())){
int update = waterMeterMapper.update(wmId, map.get("allSacc").toString());
// 成功生成水费订单
PayRecords payRecords = payRecords(payFees, wmId, userId, realName);
int i = payRecordsMapper.insertSelective(payRecords);
if (update > 0 && i >0){
resultJson.setCode("200");
}
resultJson.setCode("200");
}else {
resultJson.setCode("203");
}
... ...
... ... @@ -67,6 +67,10 @@
select count(parent) from location where parent = #{value}
</select>
<select id="findWmId" parameterType="string" resultType="string">
select wm_id from location where adrname = #{value}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
delete from location
where id = #{id,jdbcType=INTEGER}
... ...
... ... @@ -47,6 +47,10 @@
order by payTime desc
</select>
<select id="findOrderNumber" parameterType="string" resultType="string">
select distinct payTypeAddress from pay_records where orderNumber = #{value}
</select>
<update id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
UPDATE pay_records
SET reamke1 = '1'
... ... @@ -221,23 +225,31 @@
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<!-- <update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.PayRecords" >-->
<!-- update pay_records-->
<!-- set payFees = #{payfees,jdbcType=DECIMAL},-->
<!-- payUserId = #{payuserid,jdbcType=INTEGER},-->
<!-- payTime = #{paytime,jdbcType=TIMESTAMP},-->
<!-- payLocationId = #{paylocationid,jdbcType=INTEGER},-->
<!-- payStatus = #{paystatus,jdbcType=BIT},-->
<!-- payType = #{paytype,jdbcType=BIT},-->
<!-- payFessType = #{payfesstype,jdbcType=BIT},-->
<!-- orderNumber = #{ordernumber,jdbcType=VARCHAR},-->
<!-- reamke1 = #{reamke1,jdbcType=VARCHAR},-->
<!-- reamke2 = #{reamke2,jdbcType=VARCHAR},-->
<!-- reamke3 = #{reamke3,jdbcType=VARCHAR},-->
<!-- reamke4 = #{reamke4,jdbcType=VARCHAR},-->
<!-- payUserName = #{payusername,jdbcType=VARCHAR},-->
<!-- payLocationName = #{paylocationname,jdbcType=VARCHAR},-->
<!-- payTypeAddress = #{paytypeaddress,jdbcType=VARCHAR}-->
<!-- where id = #{id,jdbcType=INTEGER}-->
<!-- </update>-->
<update id="updateByPrimaryKey" parameterType="com.sunyo.energy.location.model.PayRecords" >
update pay_records
set payFees = #{payfees,jdbcType=DECIMAL},
payUserId = #{payuserid,jdbcType=INTEGER},
payTime = #{paytime,jdbcType=TIMESTAMP},
payLocationId = #{paylocationid,jdbcType=INTEGER},
payStatus = #{paystatus,jdbcType=BIT},
payType = #{paytype,jdbcType=BIT},
payFessType = #{payfesstype,jdbcType=BIT},
orderNumber = #{ordernumber,jdbcType=VARCHAR},
reamke1 = #{reamke1,jdbcType=VARCHAR},
reamke2 = #{reamke2,jdbcType=VARCHAR},
reamke3 = #{reamke3,jdbcType=VARCHAR},
reamke4 = #{reamke4,jdbcType=VARCHAR},
payUserName = #{payusername,jdbcType=VARCHAR},
payLocationName = #{paylocationname,jdbcType=VARCHAR},
payTypeAddress = #{paytypeaddress,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
set
payStatus = 1,
reamke3 = #{reamke3,jdbcType=VARCHAR}
where orderNumber = #{ordernumber,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
... ...