From 35c3d6fb4284eccae884b9f17a0712e9c54343c6 Mon Sep 17 00:00:00 2001
From: TangCheng <tangchengmail@163.com>
Date: 星期三, 05 三月 2025 17:49:32 +0800
Subject: [PATCH] Merge branch 'weixin' of http://47.103.154.90:83/r/WI/Service.V1.0 into weixin

---
 /dev/null                                                                                  |   74 ---------
 JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java |  330 +++++++++++++++++++---------------------
 JAVA/SMTAIServer/src/main/resources/requestmap/weixin.json                                 |   17 ++
 3 files changed, 174 insertions(+), 247 deletions(-)

diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java
index b750cc5..2c2b918 100644
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java
+++ b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/control/SMTAIWeixinControl.java
@@ -7,8 +7,6 @@
 import com.smtaiserver.smtaiserver.database.SMTDatabase.DBRecords;
 import com.smtaiserver.smtaiserver.javaai.ast.ASTDBMap;
 import com.smtaiserver.smtaiserver.javaai.llm.core.SMTLLMConnect;
-import com.smtaiserver.smtaiserver.vo.MediaVo;
-import com.smtaiserver.smtaiserver.vo.WechatMessageVO;
 import com.smtservlet.core.SMTRequest;
 import com.smtservlet.util.Json;
 import com.smtservlet.util.SMTJsonWriter;
@@ -20,18 +18,14 @@
 import org.dom4j.DocumentException;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
-import org.springframework.boot.configurationprocessor.json.JSONException;
 import org.springframework.boot.configurationprocessor.json.JSONObject;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.web.servlet.ModelAndView;
 
-import javax.annotation.Resource;
 import javax.servlet.ServletInputStream;
 import javax.servlet.http.HttpServletRequest;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.Marshaller;
-import javax.xml.crypto.Data;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.StringWriter;
@@ -42,7 +36,6 @@
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
 
 import static java.util.Arrays.sort;
 
@@ -52,11 +45,10 @@
   private static final String TO_USER_NAME = "ToUserName";
   private static final String CONTENT = "Content";
   private static Logger _logger = LogManager.getLogger(SMTAIServerControl.class);
-  
-  private Object		_lockToken = new Object();
-  private String		_tokenValue = null;
-  private long			_tokenTicket = 0;
-  
+
+  private Object _lockToken = new Object();
+  private String _tokenValue = null;
+  private long _tokenTicket = 0;
 
   /** 寰俊楠岃瘉 */
   public ModelAndView weChatNotify(SMTAIServerRequest tranReq) throws Exception {
@@ -72,39 +64,53 @@
     if (requestMap.isEmpty()) {
       return null;
     }
-
+    //    wechatMessage.setFromUserName(requestMap.get(TO_USER_NAME));
+    //    wechatMessage.setToUserName(requestMap.get(FROM_USER_NAME));
+    //    wechatMessage.setCreateTime(System.currentTimeMillis() / 1000);
+    String xmltemp =
+        "<xml>\n"
+            + "  <ToUserName><![CDATA[{{{toUser}}}]]></ToUserName>\n"
+            + "  <FromUserName><![CDATA[{{{fromUser}}}]]></FromUserName>\n"
+            + "  <CreateTime>{{{CreateTime}}}</CreateTime>\n"
+            + "  <MsgType><![CDATA[text]]></MsgType>\n"
+            + "  <Content><![CDATA[鎴戞鍦ㄦ�濊�冨摝~璇风◢绛夆�︹�]></Content>\n"
+            + "</xml>";
+    long l = System.currentTimeMillis() / 1000;
+    String createTimeStr = String.valueOf(l); // 灏� long 杞崲涓� String
+    // 鏇挎崲鍗犱綅绗�
+    String result =
+        xmltemp
+            .replace("{{{toUser}}}", requestMap.get(TO_USER_NAME))
+            .replace("{{{fromUser}}}", requestMap.get(FROM_USER_NAME))
+            .replace("{{{CreateTime}}}", createTimeStr);
     String reqContent = requestMap.get(CONTENT);
-    WechatMessageVO wechatMessage = new WechatMessageVO();
-    wechatMessage.setFromUserName(requestMap.get(TO_USER_NAME));
-    wechatMessage.setToUserName(requestMap.get(FROM_USER_NAME));
     // 璁剧疆娑堟伅绫诲瀷
-    switch (reqContent) {
-      case "鏂囧瓧":
-        wechatMessage.setMsgType("text");
-        break;
-      case "鍥剧墖":
-        wechatMessage.setMsgType("image");
-        break;
-      case "璇煶":
-        wechatMessage.setMsgType("voice");
-        break;
-      case "瑙嗛":
-        wechatMessage.setMsgType("video");
-        break;
-      case "闊充箰":
-        wechatMessage.setMsgType("music");
-        break;
-      case "鍥炬枃":
-        wechatMessage.setMsgType("news");
-        break;
-      default:
-        wechatMessage.setMsgType("text");
-        break;
-    }
+    //    switch (reqContent) {
+    //      case "鏂囧瓧":
+    //        wechatMessage.setMsgType("text");
+    //        break;
+    //      case "鍥剧墖":
+    //        wechatMessage.setMsgType("image");
+    //        break;
+    //      case "璇煶":
+    //        wechatMessage.setMsgType("voice");
+    //        break;
+    //      case "瑙嗛":
+    //        wechatMessage.setMsgType("video");
+    //        break;
+    //      case "闊充箰":
+    //        wechatMessage.setMsgType("music");
+    //        break;
+    //      case "鍥炬枃":
+    //        wechatMessage.setMsgType("news");
+    //        break;
+    //      default:
+    //        wechatMessage.setMsgType("text");
+    //        break;
+    //    }
 
-    wechatMessage.setCreateTime(System.currentTimeMillis() / 1000);
-    MediaVo media = new MediaVo();
-    wechatMessage.setContent("鎴戞鍦ㄦ�濊�冨摝~璇风◢绛夆�︹��");
+    //    MediaVo media = new MediaVo();
+    //    wechatMessage.setContent("鎴戞鍦ㄦ�濊�冨摝~璇风◢绛夆�︹��");
     // 寮傛璋冪敤 aiReplyToTheUserASecondTime
     CompletableFuture.runAsync(
         () -> {
@@ -158,102 +164,112 @@
 
     try {
       // 灏� WechatMessageVO 瀵硅薄杞崲涓� XML
-      JAXBContext jaxbContext = JAXBContext.newInstance(WechatMessageVO.class);
-      Marshaller marshaller = jaxbContext.createMarshaller();
-      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
-      StringWriter sw = new StringWriter();
-      marshaller.marshal(wechatMessage, sw);
-      _logger.info("寰俊娑堟伅杩斿弬锛�" + sw);
+      //      JAXBContext jaxbContext = JAXBContext.newInstance(WechatMessageVO.class);
+      //      Marshaller marshaller = jaxbContext.createMarshaller();
+      //      marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+      //      StringWriter sw = new StringWriter();
+      //      marshaller.marshal(wechatMessage, sw);
+      _logger.info("寰俊娑堟伅杩斿弬锛�" + xmltemp);
       // 杩斿洖 XML 瀛楃涓�
-      return tranReq.returnText(sw.toString());
-    } catch (JAXBException e) {
+      return tranReq.returnText(xmltemp.toString());
+    } catch (Exception e) {
       throw new RuntimeException(e);
     }
   }
 
-  /** ai鍥炲 
- * @throws Exception */
-  private String callAIForAnswerQuestion(String question, SMTAIServerRequest tranReq) throws Exception 
-  {
-	  String callFunc = 
-			  "query_water_fee:\n"
-	  		+ "    鍔熻兘锛歕n"
-	  		+ "	      鏌ヨ鐢ㄦ埛鐢ㄦ按閲忓拰姘磋垂淇℃伅\n"
-	  		+ "    鍙傛暟:\n"
-	  		+ "	      question:鐢ㄦ埛闂\n"
-	  		+ "	      user_name:鐢ㄦ埛鍚峔n"
-	  		+ "	      value_title:'鐢ㄦ按閲�'鎴�'姘磋垂'\n"
-	  		+ "	      value_name:鐢ㄦ按閲忥細volume, 姘磋垂:amount\n"
-	  		+ "	      start_time:鏌ヨ璧峰鏃ユ湡锛屾牸寮忥細骞�-鏈�-鏃n"
-	  		+ "	      end_time:鏌ヨ缁撴潫鏃堕棿锛屾牸寮忥細骞�-鏈�-鏃n"
-	  		;
-	  
-	  String prompt = ((String) SMTAIServerApp.getApp().getGlobalConfig("prompt.agent_tools"))
-			 .replace("{{{AGENT_TOOL_DEFINE_LIST}}}", callFunc);
-	  
-	  SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
-	  String answer = llm.callWithMessage(new String[] {prompt}, question, tranReq);
-	  tranReq.traceLLMDebug(answer);
-	  Json oASTList = SMTStatic.convLLMAnswerToJson(answer, true);
-	  if(oASTList != null && oASTList.isArray())
-	  {
-		  List<Json> jsonASTList = oASTList.asJsonList();
-		  if(jsonASTList.size() > 0)
-		  {
-			  Json jsonAST = jsonASTList.get(0);
-			  if("query_water_fee".equals(jsonAST.safeGetStr("call", null)))
-			  {
-				  jsonAST = jsonAST.getJson("args");
-				  try(ASTDBMap dbMap = new ASTDBMap())
-				  {
-					  SMTDatabase db = dbMap.getDatabase("DS_74_CHENGTOU");
-					  DBRecords recs = db.querySQL(
-						  " SELECT ROUND(SUM(" + jsonAST.getJson("value_name").asString() + ")::NUMERIC(10, 2), 2) AS TOTAL"
-						+ " FROM chengtou_data.bill_data WHERE billing_date BETWEEN ? AND ?" 
-						, new Object[] {
-						SMTStatic.toDate(jsonAST.getJson("start_time").asString()),
-						SMTStatic.toDate(jsonAST.getJson("end_time").asString())
-						});
-					  
-					  if(recs.getRowCount() == 0)
-						  return "浠�" + jsonAST.getJson("start_time").asString() + "鍒�" + jsonAST.getJson("end_time").asString() + "鐨�" + jsonAST.getJson("value_title").asString() + "鏈煡鍒颁换浣曟暟鎹�";
-					  
-					  return "浠�" + jsonAST.getJson("start_time").asString() + "鍒�" + jsonAST.getJson("end_time").asString() + "鐨�" + jsonAST.getJson("value_title").asString()
-					  	+ "鎬昏" + recs.getRecord(0).getString(0);				  	
-				  }
-	
-			  }
-		  }
-	  }
-	  answer = llm.callWithMessage(null, question, tranReq);
-	  
-	  return answer;
+  /**
+   * ai鍥炲
+   *
+   * @throws Exception
+   */
+  private String callAIForAnswerQuestion(String question, SMTAIServerRequest tranReq)
+      throws Exception {
+    String callFunc =
+        "query_water_fee:\n"
+            + "    鍔熻兘锛歕n"
+            + "	      鏌ヨ鐢ㄦ埛鐢ㄦ按閲忓拰姘磋垂淇℃伅\n"
+            + "    鍙傛暟:\n"
+            + "	      question:鐢ㄦ埛闂\n"
+            + "	      user_name:鐢ㄦ埛鍚峔n"
+            + "	      value_title:'鐢ㄦ按閲�'鎴�'姘磋垂'\n"
+            + "	      value_name:鐢ㄦ按閲忥細volume, 姘磋垂:amount\n"
+            + "	      start_time:鏌ヨ璧峰鏃ユ湡锛屾牸寮忥細骞�-鏈�-鏃n"
+            + "	      end_time:鏌ヨ缁撴潫鏃堕棿锛屾牸寮忥細骞�-鏈�-鏃n";
+
+    String prompt =
+        ((String) SMTAIServerApp.getApp().getGlobalConfig("prompt.agent_tools"))
+            .replace("{{{AGENT_TOOL_DEFINE_LIST}}}", callFunc);
+
+    SMTLLMConnect llm = SMTAIServerApp.getApp().allocLLMConnect(null);
+    String answer = llm.callWithMessage(new String[] {prompt}, question, tranReq);
+    tranReq.traceLLMDebug(answer);
+    List<Json> jsonASTList = SMTStatic.convLLMAnswerToJson(answer, true).asJsonList();
+    if (jsonASTList.size() > 0) {
+      Json jsonAST = jsonASTList.get(0);
+      if ("query_water_fee".equals(jsonAST.safeGetStr("call", null))) {
+        jsonAST = jsonAST.getJson("args");
+        try (ASTDBMap dbMap = new ASTDBMap()) {
+          SMTDatabase db = dbMap.getDatabase("DS_74_CHENGTOU");
+          DBRecords recs =
+              db.querySQL(
+                  " SELECT ROUND(SUM("
+                      + jsonAST.getJson("value_name").asString()
+                      + ")::NUMERIC(10, 2), 2) AS TOTAL"
+                      + " FROM chengtou_data.bill_data WHERE billing_date BETWEEN ? AND ?",
+                  new Object[] {
+                    SMTStatic.toDate(jsonAST.getJson("start_time").asString()),
+                    SMTStatic.toDate(jsonAST.getJson("end_time").asString())
+                  });
+
+          if (recs.getRowCount() == 0)
+            return "浠�"
+                + jsonAST.getJson("start_time").asString()
+                + "鍒�"
+                + jsonAST.getJson("end_time").asString()
+                + "鐨�"
+                + jsonAST.getJson("value_title").asString()
+                + "鏈煡鍒颁换浣曟暟鎹�";
+
+          return "浠�"
+              + jsonAST.getJson("start_time").asString()
+              + "鍒�"
+              + jsonAST.getJson("end_time").asString()
+              + "鐨�"
+              + jsonAST.getJson("value_title").asString()
+              + "鎬昏"
+              + recs.getRecord(0).getString(0);
+        }
+      }
+    }
+    answer = llm.callWithMessage(null, question, tranReq);
+
+    return answer;
   }
 
   /** 浜屾鍥炲 */
   public ModelAndView aiReplyToTheUserASecondTime(String answer, String fromUserName)
       throws Exception {
     String accessToken = getAccessToken();
-    
+
     SMTJsonWriter jsonWr = new SMTJsonWriter(false);
     jsonWr.addKeyValue("touser", fromUserName);
     jsonWr.addKeyValue("msgtype", "text");
     jsonWr.beginMap("text");
     {
-    	jsonWr.addKeyValue("content", answer);
+      jsonWr.addKeyValue("content", answer);
     }
     jsonWr.endMap();
-//    JSONObject jsonObject = new JSONObject();
-//    jsonObject.put("touser", fromUserName);
-//    jsonObject.put("msgtype", "text");
-//    JSONObject jsonObject1 = new JSONObject();
-//    jsonObject1.put("content", answer);
-//    jsonObject.put("text", jsonObject1);
-//    _logger.info("jsonObject: {}", jsonObject);
+    //    JSONObject jsonObject = new JSONObject();
+    //    jsonObject.put("touser", fromUserName);
+    //    jsonObject.put("msgtype", "text");
+    //    JSONObject jsonObject1 = new JSONObject();
+    //    jsonObject1.put("content", answer);
+    //    jsonObject.put("text", jsonObject1);
+    //    _logger.info("jsonObject: {}", jsonObject);
     String url =
         String.format(
             "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s", accessToken);
-    //Map<String, Object> stringObjectMap = jsonObjectToMap(jsonWr.getRootJson());
+    // Map<String, Object> stringObjectMap = jsonObjectToMap(jsonWr.getRootJson());
     String s = sendPost(url, jsonWr.getRootJson());
     _logger.info("涓婁紶缁撴灉: {}", s);
     return null;
@@ -279,63 +295,31 @@
     return tranReq.returnText("");
   }
 
-  public String getAccessToken() throws Exception 
-  {
-	  synchronized(this._lockToken)
-	  {
-		  if(_tokenValue == null || (System.currentTimeMillis() - _tokenTicket) > 3600 * 1000)
-		  {
-			  HashMap<String, String> weixinParam = getWeixinParam();
-		      String url =
-		          "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
-		              + weixinParam.get("appId")
-		              + "&secret="
-		              + weixinParam.get("secret");
-		      String response = HttpUtil.get(url);
-		      JSONObject jsonObject = new JSONObject(response);
-		      if (jsonObject.has("access_token")) {
-		        String accessToken = jsonObject.getString("access_token");
-		        
-		        _tokenValue = accessToken;
-		      }
-		      else
-		      {
-		    	  throw new Exception("can't get weixin token");
-		      }
-		      _tokenTicket = System.currentTimeMillis();
-		  }
-		  return _tokenValue;
-	  }
+  public String getAccessToken() throws Exception {
+    synchronized (this._lockToken) {
+      if (_tokenValue == null || (System.currentTimeMillis() - _tokenTicket) > 3600 * 1000) {
+        HashMap<String, String> weixinParam = getWeixinParam();
+        String url =
+            "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
+                + weixinParam.get("appId")
+                + "&secret="
+                + weixinParam.get("secret");
+        String response = HttpUtil.get(url);
+        JSONObject jsonObject = new JSONObject(response);
+        if (jsonObject.has("access_token")) {
+          String accessToken = jsonObject.getString("access_token");
+
+          _tokenValue = accessToken;
+        } else {
+          throw new Exception("can't get weixin token");
+        }
+        _tokenTicket = System.currentTimeMillis();
+      }
+      return _tokenValue;
+    }
   }
 
-//  public static Map<String, Object> jsonObjectToMap(JSONObject jsonObject) throws JSONException {
-//    Map<String, Object> map = new HashMap<>();
-//    Iterator<String> keys = jsonObject.keys();
-//
-//    while (keys.hasNext()) {
-//      String key = keys.next();
-//      Object value = jsonObject.get(key);
-//
-//      // 濡傛灉鍊兼槸 JSONObject锛岄�掑綊杞崲涓� Map
-//      if (value instanceof JSONObject) {
-//        value = jsonObjectToMap((JSONObject) value);
-//      }
-//
-//      map.put(key, value);
-//    }
-//
-//    return map;
-//  }
-
-
-  /**
-   * 楠岃瘉绛惧悕util
-   *
-   * @param signature
-   * @param timestamp
-   * @param nonce
-   * @return
-   */
+  /** 楠岃瘉绛惧悕util */
   public static boolean checkSignature(String signature, String timestamp, String nonce)
       throws Exception {
     HashMap<String, String> weixinParam = getWeixinParam();
@@ -425,7 +409,7 @@
 
   public static String sendPost(String urlString, Json jsonParam) throws Exception {
     // 灏嗗弬鏁拌浆鎹负 JSON 鏍煎紡瀛楃涓�
-   // JSONObject jsonParams = new JSONObject(params);
+    // JSONObject jsonParams = new JSONObject(params);
     String payload = jsonParam.toString();
     // 鍒涘缓杩炴帴
     URL url = new URL(urlString);
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/Item.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/Item.java
deleted file mode 100644
index 1d83387..0000000
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/Item.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.smtaiserver.smtaiserver.vo;
-
-public class Item {
-
-  private String title;
-  private String description;
-  private String picUrl;
-  private String url;
-
-  public String getTitle() {
-    return title;
-  }
-
-  public void setTitle(String title) {
-    this.title = title;
-  }
-  public String getUrl() {
-    return url;
-  }
-
-  public void setUrl(String url) {
-    this.url = url;
-  }
-}
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/MediaVo.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/MediaVo.java
deleted file mode 100644
index 0c82b70..0000000
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/MediaVo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.smtaiserver.smtaiserver.vo;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlTransient;
-
-import lombok.Setter;
-
-public class MediaVo {
-  @XmlElement(name = "MediaId")
-  private String mediaId;
-
-  @XmlElement(name = "item")
-  private Item item;
-
-  @XmlElement(name = "Title")
-  private String title;
-
-  @XmlElement(name = "Description")
-  private String description;
-
-  @XmlElement(name = "MusicUrl")
-  private String musicUrl;
-
-  @XmlElement(name = "HQMusicUrl")
-  private String hQMusicUrl;
-
-  @XmlElement(name = "ThumbMediaId")
-  private String thumbMediaId;
-  @XmlTransient
-  public String getTitle() {
-    return title;
-  }
-
-  public void setTitle(String title) {
-    this.title = title;
-  }
-}
diff --git a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/WechatMessageVO.java b/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/WechatMessageVO.java
deleted file mode 100644
index 029a635..0000000
--- a/JAVA/SMTAIServer/src/main/java/com/smtaiserver/smtaiserver/vo/WechatMessageVO.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.smtaiserver.smtaiserver.vo;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-import lombok.Setter;
-
-@XmlRootElement(name = "xml")
-public class WechatMessageVO {
-  /** 鎺ユ敹鏂瑰笎鍙凤紙鏀跺埌鐨凮penID锛� */
-  @XmlElement(name = "ToUserName")
-  private String toUserName;
-
-  /** 寮�鍙戣�呭井淇″彿 */
-  @XmlElement(name = "FromUserName")
-  private String fromUserName;
-
-  /** 娑堟伅鍒涘缓鏃堕棿 锛堟暣鍨嬶級 */
-  @XmlElement(name = "CreateTime")
-  private long createTime;
-
-  /** 娑堟伅绫诲瀷 */
-  @XmlElement(name = "MsgType")
-  private String msgType;
-
-  /** 娑堟伅绫诲瀷 */
-  @XmlElement(name = "Content")
-  private String content;
-
-  /** 鍥剧墖娑堟伅 */
-  @XmlElement(name = "Image")
-  private MediaVo image;
-
-  /** 闊抽 */
-  @XmlElement(name = "Voice")
-  private MediaVo voice;
-
-  /** 瑙嗛 */
-  @XmlElement(name = "Video")
-  private MediaVo video;
-
-  /** 闊充箰 */
-  @XmlElement(name = "Music")
-  private MediaVo music;
-
-  /** 鍥炬枃 */
-  @XmlElement(name = "Articles")
-  private MediaVo articles;
-
-
-  public void setToUserName(String toUserName) {
-    this.toUserName = toUserName;
-  }
-
-
-  public void setFromUserName(String fromUserName) {
-    this.fromUserName = fromUserName;
-  }
-
-
-  public void setCreateTime(long createTime) {
-    this.createTime = createTime;
-  }
-
-
-  public void setMsgType(String msgType) {
-    this.msgType = msgType;
-  }
-
-
-  public void setContent(String content) {
-    this.content = content;
-  }
-
-}
diff --git a/JAVA/SMTAIServer/src/main/resources/requestmap/weixin.json b/JAVA/SMTAIServer/src/main/resources/requestmap/weixin.json
index d529fa2..76e0036 100644
--- a/JAVA/SMTAIServer/src/main/resources/requestmap/weixin.json
+++ b/JAVA/SMTAIServer/src/main/resources/requestmap/weixin.json
@@ -15,5 +15,22 @@
         ]
       }
     ]
+  },
+  "weixin/test_control": {
+    "map": {
+      "class": "#SMTAIWeixinControl",
+      "method": ""
+    },
+    "no_shrio": true,
+    "swaggers": [
+      {
+        "tags": [
+          "寰俊鍏紬鍙蜂富娴嬭瘯鎺ュ彛"
+        ],
+        "title": "娴嬭瘯鎺ュ彛",
+        "parameters": [
+        ]
+      }
+    ]
   }
 }
\ No newline at end of file

--
Gitblit v1.9.3