todo: 余额不足发短信

This commit is contained in:
ZZ 2021-08-10 19:03:11 +08:00
parent f609fb861b
commit 34e5f7d88b
7 changed files with 49 additions and 11 deletions

View File

@ -13,6 +13,7 @@ public class StartChargingData {
private String gunId; //枪号
@Min(value = 5, message = "账户余额不能小于5")
private Integer balance; //账户余额(精度:小数点后2位)=实际金额()×100
private String tel;
private String logicCardNo = "0000000000000000"; //逻辑卡号 16进制,无需补零
private String physicCardNo = "0000000000000000"; //物理卡号 同上
private String version = "0A"; //协议版本号(0A)
@ -57,6 +58,16 @@ public class StartChargingData {
this.balance = balance;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getLogicCardNo() {
return logicCardNo;

View File

@ -3,6 +3,7 @@ package com.xhpc.common.data.up;
public class BalanceUpdateReplyData extends BaseData {
private String pileNo; //桩号
private String gunId; //枪号
private String cardNo; //物理卡号
private String modifyResult; //修改结果
@ -16,6 +17,16 @@ public class BalanceUpdateReplyData extends BaseData {
this.pileNo = pileNo;
}
public String getGunId() {
return gunId;
}
public void setGunId(String gunId) {
this.gunId = gunId;
}
public String getCardNo() {
return cardNo;

View File

@ -201,6 +201,12 @@ public class ChargingController {
String seq = seqHex(skey);
byte[] msg = translateStart(startChargingData, seq);
clientHandler.sendClientBinary(msg);
Integer balance = startChargingData.getBalance();
String orderkey = "order:".concat(startChargingData.getOrderNo());
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
cacheOrder.put("balance", balance);
cacheOrder.put("tel", startChargingData.getTel());
REDIS.setCacheMap(orderkey, cacheOrder);
return R.ok();
} catch (IOException e) {
log.error("send message failed. " + e.getMessage(), e);

View File

@ -24,7 +24,7 @@ public class BalanceUpdateReplyDataLogic implements ServiceLogic {
Map<String, Object> req = sp.getParameters();
ObjectMapper objectMapper = new ObjectMapper();
BalanceUpdateReplyData balanceUpdateReplyData = objectMapper.convertValue(req, BalanceUpdateReplyData.class);
//todo
log.info("balanceUpdateResult({}) [{}]", balanceUpdateReplyData.getPileNo().concat(balanceUpdateReplyData.getGunId()), balanceUpdateReplyData.getModifyResult());
return new ServiceResult(false);
}

View File

@ -31,9 +31,9 @@ public class BmsChargingDataLogic implements ServiceLogic {
String orderNo = bmsChargingData.getOrderNo();
String orderkey = "order:".concat(orderNo);
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
List<BmsChargingData> bmsChargingDataList = (List<BmsChargingData>) cacheOrder.getOrDefault("bmsChargings", new ArrayList<>());
List<BmsChargingData> bmsChargingDataList = (List<BmsChargingData>) cacheOrder.getOrDefault("bmsChargingData", new ArrayList<>());
bmsChargingDataList.add(bmsChargingData);
cacheOrder.put("bmsChargings", bmsChargingDataList);
cacheOrder.put("bmsChargingData", bmsChargingDataList);
REDIS.setCacheMap(orderkey, cacheOrder);
return new ServiceResult(false);
}

View File

@ -62,16 +62,26 @@ public class RealtimeDataLogic implements ServiceLogic {
String orderNo = realtimeData.getOrderNo();
String orderkey = "order:".concat(orderNo);
if (!orderNo.equals("00000000000000000000000000000000")) {
Map<String, Object> order = REDIS.getCacheMap(orderkey);
List<CacheRealtimeData> realtimeDataList = (List<CacheRealtimeData>) order.get("realtimeDataList");
Map<String, Object> cacheOrder = REDIS.getCacheMap(orderkey);
List<CacheRealtimeData> realtimeDataList = (List<CacheRealtimeData>) cacheOrder.get("realtimeDataList");
if (realtimeDataList == null) {
realtimeDataList = new ArrayList<>();
}
realtimeDataList.add(translate(realtimeData));
order.put("soc", realtimeData.getSoc());
order.put("status", statusplain);
order.put("realtimeDataList", realtimeDataList);
REDIS.setCacheMap(orderkey, order);
Integer balance = (Integer) cacheOrder.get("balance");
CacheRealtimeData cacheRealtimeData = translate(realtimeData);
if ((balance - cacheRealtimeData.getAmountCharged()) < 500) {
String alerted = (String) cacheOrder.get("alerted");
String tel = (String) cacheOrder.get("tel");
if (alerted == null && tel != null) {
// todo send sms
cacheOrder.put("alerted", "true");
}
}
realtimeDataList.add(cacheRealtimeData);
cacheOrder.put("soc", realtimeData.getSoc());
cacheOrder.put("status", statusplain);
cacheOrder.put("realtimeDataList", realtimeDataList);
REDIS.setCacheMap(orderkey, cacheOrder);
}
return new ServiceResult(false);
}

View File

@ -40,7 +40,7 @@ public class RegisterLogic implements ServiceLogic {
resultCode = ServiceResult.FAIL;
} else if (!EarlierBeanConf.ifreg(pileNo)) {
log.info("pile already registered ({}) ", pileNo);
hexCode = ServiceResult.HEX_FAIL; //todo we may need optimize it
hexCode = ServiceResult.HEX_FAIL;
resultCode = ServiceResult.FAIL;
} else {
String pkey = "pile:".concat(pileNo);