diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java index 9b4c0c90..91dd9b68 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/constant/ServiceNameConstants.java @@ -33,4 +33,9 @@ public class ServiceNameConstants */ public static final String XHPC_ORDER ="xhpc-order"; + /** + * 通用服务 + */ + public static final String XHPC_GENERAL = "xhpc-general"; + } diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/SmsService.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/SmsService.java new file mode 100644 index 00000000..a905fb58 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/SmsService.java @@ -0,0 +1,19 @@ +package com.xhpc.common.api; + +import com.xhpc.common.api.factory.SmsFallbackFactory; +import com.xhpc.common.core.constant.ServiceNameConstants; +import com.xhpc.common.core.domain.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * program: ruoyi + * User: HongYun + * Date:2021-08-16 16 + */ +@FeignClient(contextId = "smsService",value = ServiceNameConstants.XHPC_GENERAL, fallbackFactory = SmsFallbackFactory.class) +public interface SmsService { + + @PostMapping("/send") + R sendNotice(String phone, String content); +} diff --git a/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/SmsFallbackFactory.java b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/SmsFallbackFactory.java new file mode 100644 index 00000000..ffa526e4 --- /dev/null +++ b/xhpc-modules/xhpc-common/src/main/java/com/xhpc/common/api/factory/SmsFallbackFactory.java @@ -0,0 +1,30 @@ +package com.xhpc.common.api.factory; + +import com.xhpc.common.api.PowerPileService; +import com.xhpc.common.api.SmsService; +import com.xhpc.common.core.domain.R; +import com.xhpc.common.data.down.StartChargingData; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; + +/** + * program: ruoyi + * User: HongYun + * Date:2021-08-16 17 + */ +public class SmsFallbackFactory implements FallbackFactory { + + private static final Logger logger = LoggerFactory.getLogger(SmsFallbackFactory.class); + @Override + public SmsService create(Throwable cause) { + logger.error("充电订单服务调用失败:{} //fallback", cause.getMessage()); + return new SmsService() { + @Override + public R sendNotice(String phone, String content) { + + return R.fail("短信发送失败:" +cause.getMessage()); + } + }; + } +} diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java index 767e3aa4..e2d0af62 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/controller/XhpcSmsController.java @@ -40,4 +40,9 @@ public class XhpcSmsController extends BaseController { return getDataTable(list); } + @GetMapping(value = "/send") + public void send(String phone , String content){ + + } + } diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/IXhpcSmsService.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/IXhpcSmsService.java index 80184477..093bd5ef 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/IXhpcSmsService.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/IXhpcSmsService.java @@ -31,5 +31,12 @@ public interface IXhpcSmsService { */ AjaxResult send(String phone, String content, String random); + /** + * Send a notice, when user's account is less than 5 yuan. + * @param phone + * @param content + */ + void sendNotice(String phone,String content); + } diff --git a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java index 8735bcbe..2d96c6d0 100644 --- a/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java +++ b/xhpc-modules/xhpc-general/src/main/java/com/xhpc/general/service/XhpcSmsServiceImpl.java @@ -124,6 +124,29 @@ public class XhpcSmsServiceImpl implements IXhpcSmsService{ return i+""; } + @Override + public void sendNotice(String phone, String content) { + + XhpcSms xhpcSms = new XhpcSms(); + try { + String req = HttpUtils.postFormData(URL,null,assembleSmsReq(phone,content)); + JSONObject json = JSONObject.parseObject(req); + xhpcSms.setPhone(phone); + xhpcSms.setContent(content); + xhpcSms.setCreateTime(new Date()); + xhpcSms.setRemark(req); + String ok = json.getString("ok"); + if("true".equals(ok)) { + xhpcSms.setStatus(0); + }else { + xhpcSms.setStatus(1); + } + xhpcSmsMapper.addXhpcSms(xhpcSms); + } catch (Exception e) { + xhpcSms.setStatus(3); + xhpcSmsMapper.addXhpcSms(xhpcSms); + } + } public static void main(String[] args) { diff --git a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java index e7790bc3..14cd84d0 100644 --- a/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java +++ b/xhpc-modules/xhpc-power-pile/src/main/java/com/xhpc/pp/logic/RealtimeDataLogic.java @@ -2,11 +2,13 @@ package com.xhpc.pp.logic; import com.fasterxml.jackson.databind.ObjectMapper; import com.xhpc.common.api.PileOrderService; +import com.xhpc.common.api.SmsService; import com.xhpc.common.data.redis.CacheRealtimeData; import com.xhpc.common.data.up.RealtimeData; import com.xhpc.pp.tx.ServiceParameter; import com.xhpc.pp.tx.ServiceResult; import com.xhpc.pp.tx.logic.ServiceLogic; +import org.checkerframework.checker.units.qual.A; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +31,10 @@ import static com.xhpc.pp.utils.security.HexUtils.toBits; @Component("RealtimeDataLogic") public class RealtimeDataLogic implements ServiceLogic { + + @Autowired + private SmsService smsService; + private static Logger log = LoggerFactory.getLogger(RealtimeDataLogic.class); public static final String[] stable = {"离线", "故障", "空闲", "充电"}; @@ -38,6 +44,7 @@ public class RealtimeDataLogic implements ServiceLogic { @Autowired private PileOrderService pileOrderService; + @Override public ServiceResult service(ServiceParameter sp) throws Exception { @@ -103,6 +110,7 @@ public class RealtimeDataLogic implements ServiceLogic { String tel = (String) cacheOrder.get("tel"); if (alerted == null && tel != null) { // todo send sms + smsService.sendNotice(tel,"【小华充电】尊敬的用户,你的账户余额小于5元,为不影响您的正常充电,请您尽快充值交费,谢谢。"); cacheOrder.put("alerted", "true"); } } @@ -124,6 +132,8 @@ public class RealtimeDataLogic implements ServiceLogic { return new ServiceResult(false); } + + private CacheRealtimeData translate(RealtimeData realtimeData) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException, InstantiationException { Class crdclz = CacheRealtimeData.class;