From 4e414b5f3963d47338b51d7bf8b2191a900b499e Mon Sep 17 00:00:00 2001 From: Lemon Date: Mon, 4 Nov 2024 11:36:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=20=E5=90=8E=E7=AE=A1?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2sim=E5=8D=A1=E6=B5=81=E9=87=8F=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yunkuaichong/LoginRequestHandler.java | 3 +- .../pile/service/PileBasicInfoService.java | 3 + .../jsowell/pile/service/SimCardService.java | 94 +++++++++++++++++-- .../impl/PileBasicInfoServiceImpl.java | 23 +++++ 4 files changed, 114 insertions(+), 9 deletions(-) diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java index 5430c75ef..58a57c36c 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/LoginRequestHandler.java @@ -255,8 +255,9 @@ public class LoginRequestHandler extends AbstractYkcHandler { CompletableFuture.runAsync(() -> { // 充电桩使用的sim卡,把信息存库 try { - pileBasicInfoService.updatePileSimInfo(pileSn, iccid); + // pileBasicInfoService.updatePileSimInfo(pileSn, iccid); // pileBasicInfoService.updatePileSimInfoV2(pileSn, iccid); + pileBasicInfoService.bindPileSimCard(pileSn, iccid); } catch (Exception e) { log.error("更新充电桩sim卡信息失败pileSn:{}, iccid:{}", pileSn, iccid, e); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java index 7db837018..2720a625c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBasicInfoService.java @@ -159,6 +159,9 @@ public interface PileBasicInfoService { void updatePileSimInfo(String pileSn, String iccid); void updatePileSimInfoV2(String pileSn, String iccid); + + public void bindPileSimCard(String pileSn, String iccId); + /** * 后管首页基本信息查询 * diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java index e627f524a..6aabb982c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/SimCardService.java @@ -8,11 +8,13 @@ import com.jsowell.common.enums.sim.SimCardStatusCorrespondEnum; import com.jsowell.common.enums.sim.SimSupplierEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; +import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.http.HttpUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.sim.SimCardUtils; import com.jsowell.common.util.sim.XunZhongSimUtils; +import com.jsowell.pile.domain.PileSimInfo; import com.jsowell.pile.vo.web.*; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; @@ -71,6 +73,7 @@ public class SimCardService { /** * 不知道iccid属于哪家供应商,就用这个方法查 + * * @param iccids * @return */ @@ -92,9 +95,79 @@ public class SimCardService { return resultList; } + /** + * 通过iccId去两个官方平台查询流量卡具体数据 + * + * @param iccId + * @return + */ + SimCardVO searchOfficialWebsiteSimInfo(String iccId) { + SimCardVO vo = new SimCardVO(); + List iccIds = Lists.newArrayList(iccId); + // 查XunZhong + List simCardVOS = XunZhongGetSimInfoByIccIds(iccIds); + if (CollectionUtils.isNotEmpty(simCardVOS)) { + vo = simCardVOS.get(0); + } else { + // 查WuLian平台 + List wuLianSimData = WuLianGetSimInfoByIccIds(iccIds); + if (CollectionUtils.isEmpty(wuLianSimData)) { + return vo; + } + vo = wuLianSimData.get(0); + } + return vo; + } + + /** + * 通过iccId查询数据(2024.11.1 后管用) + * + * @param iccId + * @return + */ + SimCardVO getSimCardInfoByIccId(String iccId) { + PileSimInfo pileSimInfo = pileSimInfoService.getBasicInfoByIccId(iccId); + // 调用官方数据接口查询最新sim卡数据 + SimCardVO simCardVO = searchOfficialWebsiteSimInfo(iccId); + if (simCardVO == null) { + throw new BusinessException(ReturnCodeEnum.CODE_SELECT_INFO_IS_NULL); + } + if (pileSimInfo == null) { + // 数据库中没有此卡数据,进行新增 + pileSimInfo = PileSimInfo.builder() + .name(simCardVO.getName()) + .iccid(simCardVO.getIccId()) + .status(simCardVO.getSimCardStatus()) + .simSupplier(simCardVO.getSimCardFactory()) + .totalData(String.valueOf(simCardVO.getPackageCapacity())) + .surplusData(String.valueOf(simCardVO.getResidualFlowRate())) + .expireTime(DateUtils.parseDate(simCardVO.getExpiredTime())) + .operator(simCardVO.getSimCardOperator()) + + .build(); + pileSimInfoService.insertPileSimInfo(pileSimInfo); + } else { + // 将查到的流量套餐等最新数据更新到数据库 + pileSimInfo.setName(simCardVO.getName()); + pileSimInfo.setIccid(simCardVO.getIccId()); + pileSimInfo.setStatus(simCardVO.getSimCardStatus()); + pileSimInfo.setSimSupplier(simCardVO.getSimCardFactory()); + pileSimInfo.setTotalData(String.valueOf(simCardVO.getPackageCapacity())); + pileSimInfo.setSurplusData(String.valueOf(simCardVO.getResidualFlowRate())); + pileSimInfo.setExpireTime(DateUtils.parseDate(simCardVO.getExpiredTime())); + pileSimInfo.setOperator(simCardVO.getSimCardOperator()); + + pileSimInfoService.updatePileSimInfo(pileSimInfo); + } + + return simCardVO; + } + + /** * 批量续费(后管调用此方法) - * @param iccIds 卡号 + * + * @param iccIds 卡号 * @param cycleNumber 续费周期 */ public List renewSimByLoop(List iccIds, int cycleNumber) { @@ -123,9 +196,11 @@ public class SimCardService { /** * 根据不同的公司执行不同的续费方法 - * @param code SimSupplierEnum.getCode() - * @param iccId 卡号 + * + * @param code 👇👇👇👇👇👇👇 + * @param iccId 卡号 * @param cycleNumber 续费周期 + * @see SimSupplierEnum */ private SimRenewResultVO renewSimBySupplier(String code, String iccId, int cycleNumber) { SimRenewResultVO vo = new SimRenewResultVO(); @@ -138,7 +213,7 @@ public class SimCardService { vo.setSimSuppler(SimSupplierEnum.XUN_ZHONG.getName()); XunZhongSimRenewal(Lists.newArrayList(iccId), cycleNumber); vo.setResult(true); - }catch (BusinessException e) { + } catch (BusinessException e) { vo.setResult(false); vo.setReason(e.getMessage()); } @@ -149,7 +224,7 @@ public class SimCardService { vo.setSimSuppler(SimSupplierEnum.WU_LIAN_INTERNET.getName()); WuLianSimRenew(Lists.newArrayList(iccId), cycleNumber); vo.setResult(true); - }catch (BusinessException e){ + } catch (BusinessException e) { vo.setResult(false); vo.setReason(e.getMessage()); } @@ -158,10 +233,10 @@ public class SimCardService { } - /** * 讯众 内部接口 * 通过iccIds查询讯众Sim卡信息 + * * @param iccIds */ public List XunZhongGetSimInfoByIccIds(List iccIds) { @@ -237,6 +312,7 @@ public class SimCardService { /** * 讯众官方接口 * 获取sim卡详细信息 + * * @param iccIds Sim卡集合 * @return */ @@ -267,6 +343,7 @@ public class SimCardService { /** * 讯众官方接口 * 获取流量池信息 + * * @return */ public String getTrafficPoolInfo() { @@ -288,7 +365,8 @@ public class SimCardService { /** * 讯众官方接口 * sim卡续期 - * @param iccIds 需要续期的sim卡 + * + * @param iccIds 需要续期的sim卡 * @param cycleNumber 续费周期(0-999),0表示无限周期 * @return */ @@ -387,7 +465,7 @@ public class SimCardService { String operator = ""; if (StringUtils.contains(packageName, "移动")) { operator = "china_mobile"; - }else if (StringUtils.contains(packageName, "电信")) { + } else if (StringUtils.contains(packageName, "电信")) { operator = "china_telecom"; } else if (StringUtils.contains(packageName, "联通")) { operator = "china_unicom"; diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java index d36cb97bd..5be79fcef 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBasicInfoServiceImpl.java @@ -783,6 +783,29 @@ public class PileBasicInfoServiceImpl implements PileBasicInfoService { updateSimInfo(basicInfo); } + /** + * 绑定桩与sim卡的信息(仅0x01中调用) + * @param pileSn + * @param iccId + */ + @Override + public void bindPileSimCard(String pileSn, String iccId) { + PileBasicInfo basicInfo = selectPileBasicInfoBySN(pileSn); + if (basicInfo == null) { + return; + } + String basicInfoIccId = basicInfo.getIccId(); + if (!StringUtils.equals(iccId, basicInfoIccId)) { + // 如果表中存储的sim卡与当前登录的sim卡不一致,修改数据库 + // 清缓存 + cleanRedisCache(pileSn); + // 将桩与sim卡进行绑定 + basicInfo.setIccId(iccId); + updatePileBasicInfo(basicInfo); + } + } + + /** * 后管首页基本信息查询 *