|
@@ -1,12 +1,16 @@
|
|
|
package kd.bos.login.utils;
|
|
|
|
|
|
import fi.cas.opplugin.TypeUtils;
|
|
|
+import kd.bos.dataentity.OperateOption;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
import kd.bos.logging.Log;
|
|
|
import kd.bos.logging.LogFactory;
|
|
|
import kd.bos.login.utils.sms.SMSSender;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
+import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
|
import org.json.JSONObject;
|
|
|
import org.json.XML;
|
|
|
import org.w3c.dom.Document;
|
|
@@ -22,8 +26,8 @@ import javax.xml.transform.stream.StreamResult;
|
|
|
import java.io.*;
|
|
|
import java.net.Socket;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
-import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
+import java.util.Random;
|
|
|
|
|
|
/**
|
|
|
* 通用插件
|
|
@@ -32,7 +36,8 @@ import java.util.Date;
|
|
|
*/
|
|
|
public class DemoSMSSender implements SMSSender {
|
|
|
protected static final Log log = LogFactory.getLog(DemoSMSSender.class);
|
|
|
-
|
|
|
+ Long orgId = null;
|
|
|
+ Long userId = null;
|
|
|
@Override
|
|
|
public boolean sendMessage(String phone, String message, String signature) {
|
|
|
Boolean flag = false;
|
|
@@ -47,21 +52,32 @@ public class DemoSMSSender implements SMSSender {
|
|
|
if(cbsReturnJson!=null) {
|
|
|
JSONObject reMessage = cbsReturnJson.getJSONObject("Message");
|
|
|
JSONObject reBodyInfo = reMessage.getJSONObject("BodyInfo");
|
|
|
- if ("success".equals(reBodyInfo.getString("Fs_retMsg"))) {//相应成功
|
|
|
+ if (reBodyInfo.getString("Fs_retMsg").contains("success")) {//相应成功
|
|
|
if ("000".equals(reBodyInfo.getString("Fs_retCode"))) {
|
|
|
flag = true;
|
|
|
log.info("短信前置机响应成功,前置机接口发送成功");
|
|
|
+ //写入日志
|
|
|
+ writeLog(phone);
|
|
|
} else {
|
|
|
log.info("短信前置机响应成功,前置机接口发送失败");
|
|
|
}
|
|
|
} else {
|
|
|
- log.info("短信发送前置机响应失败");
|
|
|
+ log.info("短信发送前置机响应失败:"+reBodyInfo.getString("Fs_retMsg"));
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return flag;
|
|
|
}
|
|
|
|
|
|
+ private void writeLog(String phone) {
|
|
|
+ DynamicObject[] datalist = new DynamicObject[1];
|
|
|
+ DynamicObject writeObj = BusinessDataServiceHelper.newDynamicObject("nckd_assistantdata_mlog");
|
|
|
+ writeObj.set("nckd_mobile",phone);
|
|
|
+ writeObj.set("nckd_person",userId);
|
|
|
+ writeObj.set("nckd_org",orgId);
|
|
|
+ datalist[0]=writeObj;
|
|
|
+ OperationServiceHelper.executeOperate("save", "nckd_assistantdata_mlog", datalist, OperateOption.create());
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public boolean sendMessage(String phone, String message) {
|
|
|
Boolean flag = false;
|
|
@@ -105,26 +121,30 @@ public class DemoSMSSender implements SMSSender {
|
|
|
//拼接报文
|
|
|
createElement(doc, body, "Fs_channelcode", "JSX"); //渠道号
|
|
|
createElement(doc, body, "Fs_transcode", "SingleMsg"); //交易码
|
|
|
- createElement(doc, body, "Fs_rpid", "12345"); //流水号(待提供)
|
|
|
+ Date now = new Date();
|
|
|
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
|
|
|
+ String nowStr1 = formatter.format(now);
|
|
|
+ nowStr1 = nowStr1.replaceAll(" ","");
|
|
|
+ Random random = new Random();
|
|
|
+ int randomNumber = 100 + random.nextInt(900);
|
|
|
+ createElement(doc, body, "Fs_rpid", "jsx"+nowStr1+String.valueOf(randomNumber)); //流水号(待提供)
|
|
|
createElement(doc, body, "Fs_phone", phone); //手机号
|
|
|
createElement(doc, body, "Fs_ParamCount", "2");//模板数量
|
|
|
createElement(doc, body, "ParamName1", "SmsVerifyCode");//模板名称1
|
|
|
String ParamValue1 = message.substring(4,10);
|
|
|
createElement(doc, body, "ParamValue1", ParamValue1);//模板值1
|
|
|
createElement(doc, body, "ParamName2", "SceneName");//模板名称2
|
|
|
- createElement(doc, body, "ParamValue2", "wj");//模板值2
|
|
|
-
|
|
|
- createElement(doc, body, "Fs_regOrg", "");//发送机构(待提供)
|
|
|
+ createElement(doc, body, "ParamValue2", "重置密码");//模板值2
|
|
|
+ String regOrg = getRegOrg(phone);
|
|
|
+ createElement(doc, body, "Fs_regOrg", regOrg);//发送机构(待提供),例100802
|
|
|
createElement(doc, body, "Fs_bizId", "00007");//业务类型id
|
|
|
createElement(doc, body, "Fs_templateld", "2409029227");//模板id
|
|
|
|
|
|
- Date now = new Date();
|
|
|
- SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
|
|
|
- String nowStr = formatter.format(now);
|
|
|
- String Fs_reqDate = nowStr.substring(0,8);
|
|
|
- createElement(doc, body, "Fs_reqDate", Fs_reqDate);
|
|
|
- String Fs_regTime = nowStr.substring(9,15);
|
|
|
- createElement(doc, body, "Fs_regTime", Fs_regTime);
|
|
|
+ String nowStr2 = formatter.format(now);
|
|
|
+ String Fs_reqDate = nowStr2.substring(0,8);
|
|
|
+ createElement(doc, body, "Fs_reqDate", Fs_reqDate);//日期
|
|
|
+ String Fs_regTime = nowStr2.substring(9,15);
|
|
|
+ createElement(doc, body, "Fs_regTime", Fs_regTime);//时间
|
|
|
|
|
|
TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
|
|
Transformer transformer = transformerFactory.newTransformer();
|
|
@@ -143,10 +163,35 @@ public class DemoSMSSender implements SMSSender {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private String tranTime(int hour, int minute, int second) {
|
|
|
- String Fs_regTime = String.valueOf(hour)+String.valueOf(minute)+String.valueOf(second);
|
|
|
-
|
|
|
- return Fs_regTime;
|
|
|
+ private String getRegOrg(String phone) {
|
|
|
+ String orgNumber = "";
|
|
|
+ QFilter qFilter_phone = new QFilter("phone", QCP.equals,phone);
|
|
|
+ DynamicObject[] userCol = BusinessDataServiceHelper.load("bos_user",
|
|
|
+ "id,entryentity.dpt,entryentity.ispartjob",new QFilter[]{qFilter_phone});
|
|
|
+ if(userCol!=null && userCol.length>0){//手机号匹配到人员
|
|
|
+ DynamicObject userObj = userCol[0];
|
|
|
+ userId = userObj.getLong("id");
|
|
|
+ DynamicObjectCollection entryList = userObj.getDynamicObjectCollection("entryentity");
|
|
|
+ for(DynamicObject entryObj : entryList){
|
|
|
+ boolean ispartjob = entryObj.getBoolean("ispartjob");
|
|
|
+ if(ispartjob==false){//找到人员主组织
|
|
|
+ DynamicObject dpt = entryObj.getDynamicObject("dpt");
|
|
|
+ Long dptId = dpt.getLong("id");
|
|
|
+ orgId = dptId;
|
|
|
+ QFilter qFilter_org = new QFilter("nckd_orgfield",QCP.equals,dptId);
|
|
|
+ QFilter qFilter_enable = new QFilter("enable", QCP.equals,"1");
|
|
|
+ QFilter qFilter_status = new QFilter("status", QCP.equals, "C");
|
|
|
+ DynamicObject[] orgCol = BusinessDataServiceHelper.load("nckd_base_org_oa","",
|
|
|
+ new QFilter[]{qFilter_org,qFilter_enable,qFilter_status});
|
|
|
+ if(orgCol!=null && orgCol.length>0){//匹配到映射表记录
|
|
|
+ DynamicObject orgObj = orgCol[0];
|
|
|
+ orgNumber = orgObj.getString("nckd_oa_org");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return orgNumber;
|
|
|
}
|
|
|
|
|
|
public static JSONObject socketService(String serverName,String port,String xmlData){
|