EAS短信平台更换一,前言此文档案例在EAS861版本、移动商务补丁PT167780的基础上进行改造,不同版本和补丁有一定的差异,但总体上差异不大。EAS短信平台隶属于移动商务模块,系统默认集成的短信平台为“维纳多”。在短信不是由业务调用方直接发送的场景下,系统发送短信流程大致为:1,各个业务方(如工作流消息、预警消息、登录验证码等功能)调用移动商务标准的“新增”接口生成“待发短信”记录插入相关表中;2,后续后台线程会周期性的轮询扫描“待发短信表”,查询满足条件的记录进行参数组装;3,EAS底层根据“短信业务配置”中填写的通讯平台实现类,触发自定义的实现类发送方法代码逻辑,与短信平台交互并实现短信发送。常用表:二,代码改造第一部分:客户端需要将"短信配置界面"中的“自定义”按钮放开(标准产品默认隐藏),以便填写自定义的通讯平台实现类信息。T_MO_EMAILSENDMSG待发送邮件T_MO_SENDMOMSG待发送短信,该表就是存贮待发短信的记录T_MO_RECMOMSG接收短信放开“自定义”按钮需要在相关UI类com.kingdee.eas.mobile.client.BizConfigUI中的onload方法加上代码“this.customGateway.setVisible(true)“;如截图所示:第二部分:服务端服务端部分只需要编写自定义的通讯平台实现类即可,自定义的实现类必须继承标准产品的网关类“com.kingdee.eas.mobile.framework.AbastractMobileGatewayProvider“,并重写其中关键的4个方法,(testConnection,displayBalance,sendMessage,receiveMessage)。主要关注其中的_sendMessage方法就是实现发送短信逻辑,参考截图示例:这里,以更换为阿里云短信服务平台为例,自定义编写了相关的实现类,仅供参考!!!(其中多处地方为伪代码,需要根据实际情况编写,参考代码注释理解代码逻辑)packagecom.kingdee.eas.mobile.framework;importcn.hutool.http.HttpRequest;importcn.hutool.http.HttpUtil;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONObject;importcom.kingdee.bos.BOSException;importcom.kingdee.eas.common.EASBizException;importcom.kingdee.eas.mobile.MobileConfigInfo;importjava.util.HashMap;importjava.util.Map;publicclassAliyunSmsGatewayProviderextendsAbastractMobileGatewayProvider{/***测试连接是否成功(true:连接成功)**@parammobileConfigInfo*@return*@throwsEASBizException*@throwsBOSException*/@Overrideprotectedboolean_testConnection(MobileConfigInfomobileConfigInfo)throwsEASBizException,BOSException{//伪代码returntrue;}/***短信余额显示*@parammobileConfigInfo*@return*@throwsEASBizException*@throwsBOSException*/@OverrideprotectedString_displayBalance(MobileConfigInfomobileConfigInfo)throwsEASBizException,BOSException{//伪代码return"短信余额还剩下xxx条!";}/***发送短信(true代表发送成功)**@parammobileMsgInfo待发短信记录*@parammobileConfigInfo短信配置业务配置的参数*@paramcontext*@return*@throwsBOSException*@throwsEASBizException*/@Overrideprotectedboolean_sendMessage(MobileMsgInfomobileMsgInfo,MobileConfigInfomobileConfigInfo,com.kingdee.bos.Contextcontext)throwsBOSException,EASBizException{//需要根据实际的短信平台接口或者SDK请求文档编写交互发送逻辑System.out.println("Threadstartchan");Stringhost=mobileConfigInfo.getHost();//通讯平台主机地址StringloginName=mobileConfigInfo.getLoginName();//登录用户名Stringpassword=mobileConfigInfo.getPassword();//密码StringreceiverPhoneNo=mobileMsgInfo.getReceiverPhoneNo();//接收短信的号码Stringurl="http://192.168.23.63:8086/sms/v1/sendSmsByALiYun";MapparamMap=newHashMap<>();paramMap.put("endpoint",host);paramMap.put("accessKeyId",loginName);paramMap.put("accessKeySecret",password);paramMap.put("content",mobileMsgInfo.getContent());paramMap.put("receiverPhoneNo",mobileMsgInfo.getReceiverPhoneNo());Stringjson=JSON.toJSONString(paramMap);Stringresult2=HttpRequest.post(url).body(json).execute().body();三,部署与配置可以选择私包的形式部署,部署路径为:\eas\server\lib\sp和\eas\server\deploy\fileserver.ear\easWebClient\lib\sp私包结构参考:部署参考:JSONObjectresultMap=JSON.parseObject(result2);//伪代码:表示返回code码为000即为发送成功return"000".equals(resultMap.get("code"));}/***接收短信**@parammobileConfigInfo*@paramcontext*@return*@throwsBOSException*/@OverrideprotectedMobileMsgInfo[]_receiveMessage(MobileConfigInfomobileConfigInfo,com.kingdee.bos.Contextcontext)throwsBOSException{//伪代码returnnewMobileMsgInfo[0];}}部署完毕之后,需要在EAS系统中的"短信配置界面"填写配置信息,填写完毕之后点击保存配置信息。保存完成之后,可以查询后台配置表,主要确认自定义实现类信息是否正确,且配置表应该只有一条配置信息。查询sql为:SELECTtop100*FROMT_MO_MobileConfig