WXServiceHandler.aspx.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998
  1. using LYFZ.Weixin.SDK;
  2. using LYFZ.Weixin.SDK.Helpers;
  3. using LYFZ.WXLibrary;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Web;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. namespace LYFZ.WeixinServers.WeiXinAPP
  11. {
  12. public partial class WXServiceHandler : System.Web.UI.Page
  13. {
  14. private string Token = "";//与微信公众账号后台的Token设置保持一致,区分大小写。
  15. protected void Page_Load(object sender, EventArgs e)
  16. {
  17. // ResponseWrite("测试服务器已关闭");
  18. // return;
  19. // WeixinConfig.Register();
  20. // Token = WeixinConfig.Token;//微信公众平台后台设置的Token
  21. try
  22. {
  23. if (!IsPostBack)
  24. {
  25. string type = Request.QueryString["type"];
  26. //string requestXml = "<xml><ToUserName><![CDATA[gh_087895cb5b9f]]></ToUserName>"
  27. // + "<FromUserName><![CDATA[oEjAmtwVMH1Q27_eObyd1-pHTaRI]]></FromUserName>"
  28. // + "<CreateTime>1446026203</CreateTime>"
  29. // + "<MsgType><![CDATA[text]]></MsgType>"
  30. // + "<Content><![CDATA[你好]]></Content>"
  31. // + "<MsgId>6210635251444145713</MsgId>"
  32. // + "</xml>";
  33. //WeiXin.Library.Handlers.IHandler handler = WeiXin.Library.Handlers.HandlerFactory.CreateHandler(requestXml);
  34. // string retStr = handler.HandleRequest();
  35. if (type != null && type == "getkeyword")
  36. {
  37. GetKeyword();
  38. }
  39. else
  40. {
  41. string[] tempData = type.Split('_');
  42. type = tempData[0];
  43. if (type != null)
  44. {
  45. string retmsg = "对不起,你没有管理权限";
  46. switch (type.ToLower())
  47. {
  48. case "gettoken":
  49. this.GetToken();
  50. break;
  51. case "addfunctionmodule":
  52. if (CommonHandler.CheckAdmin(this))
  53. {
  54. addFunctionModule();
  55. }
  56. else
  57. {
  58. this.ResponseWrite(retmsg);
  59. }
  60. break;
  61. case "addkeyword":
  62. if (CommonHandler.CheckAdmin(this))
  63. {
  64. addkeyword();
  65. }
  66. else
  67. {
  68. this.ResponseWrite(retmsg);
  69. }
  70. break;
  71. case "delkeyword":
  72. if (CommonHandler.CheckAdmin(this))
  73. {
  74. DelKeyword();
  75. }
  76. else
  77. {
  78. this.ResponseWrite(retmsg);
  79. }
  80. break;
  81. case "setenabled":
  82. if (CommonHandler.CheckAdmin(this))
  83. {
  84. SetEnabled();
  85. }
  86. else
  87. {
  88. this.ResponseWrite(retmsg);
  89. }
  90. break;
  91. case "sendtemplatesmsg":
  92. SendTemplatesmsg();
  93. break;
  94. case "newsendtemplatesmsg":
  95. NewSendTemplatesmsg();
  96. break;
  97. case "setindustry":
  98. SetIndustry();
  99. break;
  100. case "gettemplatesid":
  101. GetTemplatesID();
  102. break;
  103. case "getmenu":
  104. GetCustomMenu();
  105. break;
  106. case "addmenu":
  107. CreateCustomMenu();
  108. break;
  109. case "delmenu":
  110. DeleteCustomMenu();
  111. break;
  112. case "bindcustomer":
  113. BindCustomer();
  114. break;
  115. case "unbindcustomer":
  116. UnBindCustomer();
  117. break;
  118. case "searchcustomerorder":
  119. SearchCustomerOrder();
  120. break;
  121. case "getcustomerdata":
  122. GetCustomerData();
  123. break;
  124. case "getcustomerginancetoday":
  125. GetCustomerFinanceToday();
  126. break;
  127. default:
  128. this.ResponseWrite("请求不正确...");
  129. break;
  130. }
  131. }
  132. else
  133. {
  134. this.ResponseWrite("请求参数不正确...");
  135. }
  136. }
  137. }
  138. else
  139. {
  140. this.ResponseWrite("请求已过期,请重新发起请求...");
  141. }
  142. }
  143. catch { }
  144. finally {
  145. this.Response.End();
  146. }
  147. }
  148. /// <summary>
  149. /// 获取指定APPID的Token
  150. /// </summary>
  151. void GetToken()
  152. {
  153. // string errcode = "-100";
  154. // string msgid = "";
  155. string retMsg = "";
  156. string data = "";
  157. string code = "-1";
  158. if (Request["appid"] != null)
  159. {
  160. string appid = Request["appid"].ToString().Trim();
  161. if (appid.Trim().Length > 0)
  162. {
  163. //获取当前公众号AppID的处理对象
  164. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  165. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  166. {
  167. if (APPIDHandle.AuthorizeStatus == 1)
  168. {
  169. try
  170. {
  171. data = APPIDHandle.Authorizer_access_token;
  172. retMsg = "成功";
  173. code = "200";
  174. }
  175. catch (Exception ex)
  176. {
  177. retMsg = "发送消息时错误:" + ex.Message;
  178. }
  179. }
  180. else
  181. {
  182. retMsg = "您的公众号已取消授权,不能发送模消息";
  183. }
  184. }
  185. else
  186. {
  187. retMsg = "您的公众号APPID设置不正确";
  188. }
  189. }
  190. else
  191. {
  192. retMsg = "您的还没有绑定公众号";
  193. }
  194. }
  195. else
  196. {
  197. retMsg = "参数错误";
  198. }
  199. this.ResponseWrite("{ \"code\":" + code + ",\"msg\":\"" + retMsg + "\",\"data\":\"" + data + "\"}");
  200. // this.ResponseWrite(retMsg);
  201. }
  202. private void GetCustomerFinanceToday()
  203. {
  204. throw new NotImplementedException();
  205. }
  206. private void GetCustomerData()
  207. {
  208. throw new NotImplementedException();
  209. }
  210. private void UnBindCustomer()
  211. {
  212. throw new NotImplementedException();
  213. }
  214. private void BindCustomer()
  215. {
  216. throw new NotImplementedException();
  217. }
  218. private void SearchCustomerOrder()
  219. {
  220. throw new NotImplementedException();
  221. }
  222. /// <summary>
  223. /// 获取自定义菜单
  224. /// </summary>
  225. void GetCustomMenu()
  226. {
  227. string resultStr = "获取自定义菜单失败";
  228. if (Request["appid"] != null)
  229. {
  230. LYFZ.WXLibrary.CommonHandleClass.WriteLog(string.Format("开始处理下载自定义菜单"), "-2", Global.LogsDongleDomainList);
  231. string appid = Request["appid"].ToString().Trim();
  232. if (appid.Trim().Length > 0)
  233. {
  234. //获取当前公众号AppID的处理对象
  235. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  236. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  237. {
  238. if (APPIDHandle.AuthorizeStatus == 1)
  239. {
  240. try
  241. {
  242. resultStr = LYFZ.Weixin.SDK.CustomMenuAPI.GetMenu(APPIDHandle.Authorizer_access_token);
  243. if (resultStr.Contains("\"errcode\":40001\""))
  244. {
  245. APPIDHandle.ClearAccessToken();
  246. }
  247. }
  248. catch (Exception ex)
  249. {
  250. resultStr = "获取自定义菜单失败,原因:" + ex.Message;
  251. }
  252. }
  253. else
  254. {
  255. resultStr = "您的公众号APPID授权已取消,无法获取自定义菜单";
  256. }
  257. }
  258. else
  259. {
  260. resultStr = "您的公众号APPID设置不正确";
  261. }
  262. }
  263. else
  264. {
  265. resultStr = "您的还没有绑定公众号";
  266. }
  267. }
  268. else
  269. {
  270. resultStr = "参数错误";
  271. }
  272. this.ResponseWrite(resultStr);
  273. }
  274. /// <summary>
  275. /// 删除菜单
  276. /// </summary>
  277. void DeleteCustomMenu()
  278. {
  279. string resultStr = "删除自定义菜单失败";
  280. if (Request["appid"] != null)
  281. {
  282. string appid = Request["appid"].ToString().Trim();
  283. if (appid.Trim().Length > 0)
  284. {
  285. //获取当前公众号AppID的处理对象
  286. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  287. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  288. {
  289. if (APPIDHandle.AuthorizeStatus == 1)
  290. {
  291. try
  292. {
  293. resultStr = LYFZ.Weixin.SDK.CustomMenuAPI.DeleteMenu(APPIDHandle.Authorizer_access_token);
  294. if (resultStr.Contains("\"errcode\":40001\""))
  295. {
  296. APPIDHandle.ClearAccessToken();
  297. }
  298. }
  299. catch (Exception ex)
  300. {
  301. resultStr = "删除自定义菜单失败,原因:" + ex.Message;
  302. }
  303. }
  304. else
  305. {
  306. resultStr = "您的公众号APPID授权已取消,无法删除自定义菜单";
  307. }
  308. }
  309. else
  310. {
  311. resultStr = "您的公众号APPID设置不正确";
  312. }
  313. }
  314. else
  315. {
  316. resultStr = "您的还没有绑定公众号";
  317. }
  318. }
  319. else
  320. {
  321. resultStr = "参数错误";
  322. }
  323. this.ResponseWrite(resultStr);
  324. }
  325. /// <summary>
  326. /// 创建菜单
  327. /// </summary>
  328. void CreateCustomMenu()
  329. {
  330. string resultStr = "创建自定义菜单失败";
  331. try
  332. {
  333. if (Request["appid"] != null)
  334. {
  335. LYFZ.WXLibrary.CommonHandleClass.WriteLog(string.Format("开始处理上传自定义菜单"), "-2", Global.LogsDongleDomainList);
  336. string appid = Request["appid"].ToString().Trim();
  337. if (appid.Trim().Length > 0)
  338. {
  339. LYFZ.WXLibrary.CommonHandleClass.WriteLog(string.Format("收到的自定义菜单appid:" + appid), "-2", Global.LogsDongleDomainList);
  340. string customMenuString = "";
  341. using (var streamReader = new System.IO.StreamReader(Request.InputStream))
  342. {
  343. var decryptMsg = string.Empty;
  344. var msg = streamReader.ReadToEnd();
  345. customMenuString = System.Web.HttpUtility.UrlDecode(msg.ToString().Trim());
  346. // customMenuString = msg.ToString().Trim();
  347. }
  348. LYFZ.WXLibrary.CommonHandleClass.WriteLog("收到的自定义菜单数据:" + customMenuString, "-2", Global.LogsDongleDomainList);
  349. if (customMenuString.Trim().Length > 1)
  350. {
  351. //获取当前公众号AppID的处理对象
  352. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  353. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  354. {
  355. if (APPIDHandle.AuthorizeStatus == 1)
  356. {
  357. LYFZ.WXLibrary.CommonHandleClass.WriteLog("准备上传自定义菜单数据", "-2", Global.LogsDongleDomainList);
  358. try
  359. {
  360. resultStr = LYFZ.Weixin.SDK.CustomMenuAPI.CreateMenu(APPIDHandle.Authorizer_access_token, customMenuString);
  361. if (resultStr.Contains("\"errcode\":40001\""))
  362. {
  363. APPIDHandle.ClearAccessToken();
  364. }
  365. LYFZ.WXLibrary.CommonHandleClass.WriteLog("上传自定义菜单请求返回信息:" + resultStr, "-2", Global.LogsDongleDomainList);
  366. }
  367. catch (Exception ex)
  368. {
  369. resultStr = "创建自定义菜单失败,原因:" + ex.Message;
  370. }
  371. }
  372. else
  373. {
  374. resultStr = "您的公众号APPID授权已取消,无法创建自定义菜单";
  375. }
  376. }
  377. else
  378. {
  379. resultStr = "您的公众号APPID设置不正确";
  380. }
  381. }
  382. else {
  383. resultStr = "创建自定义菜单失败,原因:参数设置不正确";
  384. }
  385. }
  386. else
  387. {
  388. resultStr = "您的还没有绑定公众号";
  389. }
  390. }
  391. else
  392. {
  393. resultStr = "参数错误";
  394. }
  395. }
  396. catch (Exception ex){
  397. resultStr = ex.Message;
  398. }
  399. LYFZ.WXLibrary.CommonHandleClass.WriteLog("返回给客户端的处理结果信息:" + resultStr, "-2", Global.LogsDongleDomainList);
  400. this.ResponseWrite(resultStr);
  401. }
  402. /// <summary>
  403. /// 获取所有已添加至账号下所有模板列表
  404. /// </summary>
  405. void GetAllPrivateTemplates()
  406. {
  407. }
  408. /// <summary>
  409. /// 获取模板ID(下载模版)
  410. /// </summary>
  411. void GetTemplatesID()
  412. {
  413. string resultStr = "下载模版失败";
  414. if (Request["appid"] != null)
  415. {
  416. string appid = Request["appid"].ToString().Trim();
  417. if (appid.Trim().Length > 0)
  418. {
  419. //获取当前公众号AppID的处理对象
  420. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  421. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  422. {
  423. if (APPIDHandle.AuthorizeStatus == 1)
  424. {
  425. try
  426. {
  427. string TemplatesNo = Request["templatesno"].ToString().Trim();
  428. var retTemplatesID = LYFZ.Weixin.SDK.TemplateMessageAPI.GetTemplates(APPIDHandle.Authorizer_access_token, TemplatesNo);
  429. if (retTemplatesID.errmsg.ToString().ToLower() == "ok")
  430. {
  431. resultStr = retTemplatesID.ToString();
  432. }
  433. else
  434. {
  435. resultStr = retTemplatesID.ToString();
  436. if (retTemplatesID.errcode.ToString().ToLower() == "40001")
  437. {
  438. APPIDHandle.ClearAccessToken();
  439. }
  440. else if (retTemplatesID.errcode.ToString().ToLower() == "-1")
  441. {
  442. resultStr = "微信服务器系统繁忙,此时请开稍候再试...";
  443. }
  444. }
  445. }
  446. catch (Exception ex)
  447. {
  448. resultStr = "下载模版失败,原因:" + ex.Message;
  449. }
  450. }
  451. else
  452. {
  453. resultStr = "您的公众号APPID授权已取消,无法下载模版";
  454. }
  455. }
  456. else {
  457. resultStr = "您的公众号APPID设置不正确";
  458. }
  459. }
  460. else {
  461. resultStr = "您的还没有绑定公众号";
  462. }
  463. }
  464. else {
  465. resultStr = "参数错误";
  466. }
  467. this.ResponseWrite(resultStr);
  468. }
  469. /// <summary>
  470. /// 设置行业ID
  471. /// </summary>
  472. void SetIndustry()
  473. {
  474. string resultStr = "设置行业ID失败";
  475. if (Request["appid"] != null)
  476. {
  477. string appid = Request["appid"].ToString().Trim();
  478. if (appid.Trim().Length > 0)
  479. {
  480. //获取当前公众号AppID的处理对象
  481. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  482. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  483. {
  484. try
  485. {
  486. /* string url = LYFZ.BLL.BLL_MicroInterface.GetSetIndustryUrl(mConfig.ServerHostOrIP, PortNumber, "31", "41", clearAccessToken);
  487. System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
  488. var result = client.GetAsync(url).Result;
  489. resultStr = result.Content.ReadAsStringAsync().Result;
  490. var retObj = Codeplex.Data.DynamicJson.Parse(resultStr);
  491. client.Dispose();*/
  492. if (APPIDHandle.AuthorizeStatus == 1)
  493. {
  494. var retMsgObj = LYFZ.Weixin.SDK.TemplateMessageAPI.SetIndustry(APPIDHandle.Authorizer_access_token, "31", "41");
  495. if (retMsgObj != null)
  496. {
  497. LYFZ.WXLibrary.CommonHandleClass.WriteLog("设置AppID:" + appid + "的行业ID返回信息:" + retMsgObj.ToString(), "-2", Global.LogsDongleDomainList);
  498. if (retMsgObj.errmsg.ToString().ToLower() == "ok")
  499. {
  500. LYFZ.WXLibrary.CommonHandleClass.WriteLog("成功设置AppID:" + appid + "的行业ID返回信息:" + retMsgObj.ToString(), "-2", Global.LogsDongleDomainList);
  501. resultStr = "设置行业ID成功";
  502. }
  503. else
  504. {
  505. resultStr = "设置行业ID失败,请重试,失败原因:" + retMsgObj.ToString();
  506. if (retMsgObj.errcode.ToString().ToLower() == "40001")
  507. {
  508. APPIDHandle.ClearAccessToken();
  509. }
  510. else if (retMsgObj.errcode.ToString().ToLower() == "-1")
  511. {
  512. resultStr = "微信服务器系统繁忙,此时请开稍候再试...";
  513. }
  514. }
  515. }
  516. else
  517. {
  518. resultStr = "设置行业ID失败,可能是网络连接失败,请重试";
  519. }
  520. }
  521. else {
  522. resultStr = "您的公众号APPID授权已取消,无法设置行业ID";
  523. }
  524. }
  525. catch (Exception ex)
  526. {
  527. resultStr = "设置行业ID失败,请重试,失败原因:" + ex.Message;
  528. LYFZ.WXLibrary.CommonHandleClass.WriteLog("设置AppID:" + appid + "的行业ID失败,原因:" + ex.Message, "-2", Global.LogsDongleDomainList);
  529. }
  530. }
  531. else
  532. {
  533. resultStr = "您的公众号APPID设置不正确";
  534. }
  535. }
  536. else {
  537. resultStr = "您的还没有绑定公众号";
  538. }
  539. }
  540. else {
  541. resultStr = "参数错误";
  542. }
  543. this.ResponseWrite(resultStr);
  544. }
  545. /// <summary>
  546. /// 新版接口发送模板消息
  547. /// </summary>
  548. void NewSendTemplatesmsg()
  549. {
  550. // string errcode = "-100";
  551. // string msgid = "";
  552. string retMsg = "";
  553. if (Request["appid"] != null)
  554. {
  555. string appid = Request["appid"].ToString().Trim();
  556. if (appid.Trim().Length > 0)
  557. {
  558. //获取当前公众号AppID的处理对象
  559. LYFZ.WXLibrary.AuthorizedAPPIDHandle APPIDHandle = null;
  560. if (OpenPlatformConfig.AuthorizedAPPIDHandleList.TryGetValue(appid, out APPIDHandle))
  561. {
  562. if (APPIDHandle.AuthorizeStatus == 1)
  563. {
  564. try
  565. {
  566. string msgContent = System.Web.HttpUtility.UrlDecode(Request.Form["content"].ToString().Trim());
  567. string access_token = APPIDHandle.Authorizer_access_token;
  568. var retMsgObj = TemplateMessageAPI.SendTemplateMessage(access_token, msgContent);
  569. if (retMsgObj.errmsg.ToString().ToLower() == "ok")
  570. {
  571. retMsg = retMsgObj.ToString();
  572. }
  573. else
  574. {
  575. retMsg = retMsgObj.ToString();
  576. if (retMsgObj.errcode.ToString().ToLower() == "40001")
  577. {
  578. APPIDHandle.ClearAccessToken();
  579. }
  580. else if (retMsgObj.errcode.ToString().ToLower() == "-1")
  581. {
  582. retMsg = "微信服务器系统繁忙,此时请开稍候再试...";
  583. }
  584. }
  585. }
  586. catch (Exception ex)
  587. {
  588. retMsg = "发送消息时错误:" + ex.Message;
  589. }
  590. }
  591. else
  592. {
  593. retMsg = "您的公众号已取消授权,不能发送模消息";
  594. }
  595. }
  596. else {
  597. retMsg = "您的公众号APPID设置不正确";
  598. }
  599. }
  600. else {
  601. retMsg = "您的还没有绑定公众号";
  602. }
  603. }
  604. else {
  605. retMsg = "参数错误";
  606. }
  607. // this.ResponseWrite("{ \"errcode\":"+errcode+",\"errmsg\":\"" + retMsg + "\", \"msgid\":\"" + msgid + "\"}");
  608. this.ResponseWrite(retMsg);
  609. }
  610. /// <summary>
  611. /// old 旧版接口发送模板消息
  612. /// </summary>
  613. void SendTemplatesmsg()
  614. {
  615. string retMsg = "{ \"errcode\":-100\"errmsg\":\"发送模板消息失败\", \"msgid\":\"\"}";
  616. try
  617. {
  618. string msgContent = System.Web.HttpUtility.UrlDecode(Request.Form["content"].ToString().Trim());
  619. string access_token = Request.Form["access_token"].ToString().Trim();
  620. var retMsgObj = TemplateMessageAPI.SendTemplateMessage(access_token, msgContent);
  621. if (retMsgObj.errmsg.ToString().ToLower() == "ok")
  622. {
  623. retMsg = retMsgObj.ToString();
  624. }
  625. else
  626. {
  627. retMsg = retMsgObj.ToString();
  628. }
  629. }
  630. catch (Exception ex)
  631. {
  632. retMsg = "发送消息时错误:" + ex.Message;
  633. }
  634. this.ResponseWrite(retMsg);
  635. }
  636. void ResponseWrite(string responseMsg)
  637. {
  638. try
  639. {
  640. this.Response.ContentType = "text/plain";
  641. this.Response.Clear();
  642. this.Response.Charset = "UTF-8";
  643. this.Response.Write(System.Web.HttpUtility.UrlDecode(responseMsg));
  644. }
  645. catch
  646. {
  647. }
  648. //finally {
  649. // this.Response.End();
  650. //}
  651. }
  652. /// <summary>
  653. /// 获取关键字集合
  654. /// </summary>
  655. void GetKeyword()
  656. {
  657. try
  658. {
  659. System.Text.StringBuilder KeywordString = new System.Text.StringBuilder();
  660. foreach (System.Data.DataRow row in Global.KeywordDaTable.Rows)
  661. {
  662. KeywordString.Append(row["FunctionCode"].ToString() + "," + row["Keyword"].ToString() + "," + row["IsEnabled"].ToString()+"|");
  663. }
  664. this.ResponseWrite(KeywordString.ToString().Trim('|'));
  665. }
  666. catch (Exception ex)
  667. {
  668. this.ResponseWrite("请求失败:" + ex.Message);
  669. }
  670. }
  671. /// <summary>
  672. /// 请求成功时返回字符串
  673. /// </summary>
  674. /// <param name="msg"></param>
  675. /// <returns></returns>
  676. string SuccessRetValue(string msg="")
  677. {
  678. return "Request success:" + msg;
  679. }
  680. LYFZ.WeixinServiceDate.DAL.DAL_FunctionList funDal = new WeixinServiceDate.DAL.DAL_FunctionList();
  681. /// <summary>
  682. /// 添加功能模块
  683. /// </summary>
  684. void addFunctionModule()
  685. {
  686. //System.Threading.Thread.Sleep(1000);{type=addfunctionmodule&modatype=edit&fname=%u8ba2%u5355%u67e5%u8be2&fcode=OrderQuery}
  687. // parameter = "modatype=" + modatype + "&fname=" + txtFunctionName + "&fcode=" + txtFunctionCode;
  688. try
  689. {
  690. string modatype = Request.QueryString["modatype"].ToString().Trim();
  691. string fname = Microsoft.JScript.GlobalObject.unescape(Request.QueryString["fname"].ToString()).Trim();
  692. string fcode = Request.QueryString["fcode"].ToString().Trim();
  693. int id =Convert.ToInt32(Request.QueryString["id"].ToString());
  694. LYFZ.WeixinServiceDate.Model.Model_FunctionList funModel = new WeixinServiceDate.Model.Model_FunctionList();
  695. funModel.ID = id;
  696. funModel.FunctionName = fname;
  697. funModel.FunctionCode = fcode;
  698. funModel.CreateTime = DateTime.Now;
  699. if (modatype == "edit")
  700. {
  701. if (funModel.ID > 0)
  702. {
  703. if (funDal.Update(funModel))
  704. {
  705. funModel = (LYFZ.WeixinServiceDate.Model.Model_FunctionList)funDal.GetModelObject("FunctionCode", fcode);
  706. Global.UpdateFunctionList(fcode, funModel);
  707. this.ResponseWrite(SuccessRetValue("修改成功"));
  708. }
  709. else {
  710. this.ResponseWrite("修改功能模块失败,更新数据库时出错!");
  711. }
  712. }
  713. else {
  714. this.ResponseWrite("修改功能模块失败,请重试!");
  715. }
  716. }
  717. else {
  718. if (funDal.Add(funModel))
  719. {
  720. funModel = (LYFZ.WeixinServiceDate.Model.Model_FunctionList)funDal.GetModelObject("FunctionCode", fcode);
  721. Global.UpdateFunctionList(fcode, funModel);
  722. this.ResponseWrite(SuccessRetValue("添加成功"));
  723. }
  724. else
  725. {
  726. this.ResponseWrite("添加功能模块失败,操作数据库时出错!");
  727. }
  728. }
  729. }
  730. catch(Exception ex) {
  731. this.ResponseWrite("请求失败:"+ex.Message);
  732. }
  733. }
  734. LYFZ.WeixinServiceDate.DAL.DAL_KeywordManagement keyDal = new WeixinServiceDate.DAL.DAL_KeywordManagement();
  735. void addkeyword()
  736. {
  737. // System.Threading.Thread.Sleep(1000);
  738. // var parameter = "modatype=" + modatype + "&viewmodule=" + Viewmodule + "&keyword=" + txtKeywordValue + "&checked=" + cbxEnabled;
  739. try
  740. {
  741. string modatype = Request.QueryString["modatype"].ToString().Trim();
  742. string keyword = Microsoft.JScript.GlobalObject.unescape(Request.QueryString["keyword"].ToString()).Trim();
  743. string viewmodule = Request.QueryString["viewmodule"].ToString().Trim();
  744. int ischecked = Convert.ToInt32(Request.QueryString["checked"].ToString().Trim());
  745. int id = Convert.ToInt32(Request.QueryString["id"].ToString());
  746. LYFZ.WeixinServiceDate.Model.Model_KeywordManagement keyModel = new WeixinServiceDate.Model.Model_KeywordManagement();
  747. keyModel.ID = id;
  748. keyModel.Keyword = keyword;
  749. keyModel.FunctionCode = viewmodule;
  750. keyModel.IsEnabled = ischecked;
  751. keyModel.CreateTime = DateTime.Now;
  752. if (modatype == "edit")
  753. {
  754. if (keyModel.ID > 0)
  755. {
  756. if (keyDal.Update(keyModel))
  757. {
  758. keyModel = (LYFZ.WeixinServiceDate.Model.Model_KeywordManagement)keyDal.GetModelObject("Keyword", keyword);
  759. Global.UpdateKeyword(keyword, keyModel, modatype);
  760. this.ResponseWrite(SuccessRetValue("修改成功"));
  761. }
  762. else
  763. {
  764. this.ResponseWrite("修改关键字失败,更新数据库时出错!");
  765. }
  766. }
  767. else
  768. {
  769. this.ResponseWrite("修改关键字失败,请重试!");
  770. }
  771. }
  772. else
  773. {
  774. if (keyDal.Add(keyModel))
  775. {
  776. keyModel = (LYFZ.WeixinServiceDate.Model.Model_KeywordManagement)keyDal.GetModelObject("Keyword", keyword);
  777. Global.UpdateKeyword(keyword, keyModel, modatype);
  778. this.ResponseWrite(SuccessRetValue("添加成功"));
  779. }
  780. else
  781. {
  782. this.ResponseWrite("添加关键字失败,操作数据库时出错!");
  783. }
  784. }
  785. }
  786. catch (Exception ex)
  787. {
  788. this.ResponseWrite("请求失败:" + ex.Message);
  789. }
  790. }
  791. void DelKeyword()
  792. {
  793. //System.Threading.Thread.Sleep(1000);
  794. //var parameter = "id=" + relvalues[0] + "&deltype=" + relvalues[1];
  795. try
  796. {
  797. string deltype = Request.QueryString["deltype"].ToString().Trim();
  798. int id = Convert.ToInt32(Request.QueryString["id"].ToString());
  799. string delvalue = Request.QueryString["delvalue"].ToString().Trim();
  800. if (deltype == "function")
  801. {
  802. System.Data.DataRow[] rows = Global.KeywordDaTable.Select("FunctionCode='" + delvalue + "'");
  803. bool isdel = true;//关键字是否删除成功
  804. if (rows != null && rows.Length > 0)
  805. {
  806. foreach (System.Data.DataRow row in rows)
  807. {
  808. if (keyDal.Delete(Convert.ToInt32(row["id"].ToString())))
  809. {
  810. Global.KeywordDaTable.Rows.Remove(row);
  811. }
  812. else
  813. {
  814. isdel = false;
  815. break;
  816. }
  817. }
  818. }
  819. if (isdel)
  820. {
  821. if (funDal.Delete(id))
  822. {
  823. Global.delFunctionList(delvalue);
  824. this.ResponseWrite(SuccessRetValue("删除成功"));
  825. }
  826. else
  827. {
  828. this.ResponseWrite("删除模块时失败,更新数据库时出错!");
  829. }
  830. }
  831. else
  832. {
  833. this.ResponseWrite("删除关键字失败,更新数据库时出错!");
  834. }
  835. }
  836. else
  837. {
  838. if (keyDal.Delete(id))
  839. {
  840. Global.delKeyword(delvalue);
  841. this.ResponseWrite(SuccessRetValue("删除成功"));
  842. }
  843. else
  844. {
  845. this.ResponseWrite("删除关键字失败,更新数据库时出错!");
  846. }
  847. }
  848. }
  849. catch (Exception ex)
  850. {
  851. this.ResponseWrite("请求失败:" + ex.Message);
  852. }
  853. }
  854. void SetEnabled()
  855. {
  856. //System.Threading.Thread.Sleep(1000);
  857. //var parameter = "id=" + relvalues[0] + "&enabledtype=" + relvalues[1];
  858. string deltype = Request.QueryString["enabledtype"].ToString().Trim();
  859. int enabled = Convert.ToInt32(Request.QueryString["enabled"].ToString());
  860. string setvalue = Request.QueryString["setvalue"].ToString().Trim();
  861. if (deltype == "function")
  862. {
  863. if (enabled == 1) { enabled = 0; } else { enabled = 1; }
  864. if (keyDal.SetFunctionCodeEnabled(setvalue, enabled))
  865. {
  866. System.Data.DataRow[] rows = Global.KeywordDaTable.Select("FunctionCode='" + setvalue + "'");
  867. if (rows != null && rows.Length > 0)
  868. {
  869. foreach (System.Data.DataRow row in rows)
  870. {
  871. row["IsEnabled"] = enabled;
  872. }
  873. }
  874. this.ResponseWrite(SuccessRetValue("设置成功"));
  875. }
  876. else
  877. {
  878. this.ResponseWrite("设置失败,更新数据库时出错!");
  879. }
  880. }
  881. else
  882. {
  883. if (enabled == 1) { enabled = 0; } else { enabled = 1; }
  884. if (keyDal.SetKeywordCodeEnabled(setvalue, enabled))
  885. {
  886. System.Data.DataRow row = Global.KeywordDaTable.Rows.Find(setvalue);
  887. if (row != null)
  888. {
  889. row["IsEnabled"] = enabled;
  890. }
  891. this.ResponseWrite(SuccessRetValue("设置成功"));
  892. }
  893. else
  894. {
  895. this.ResponseWrite("设置失败,更新数据库时出错!");
  896. }
  897. }
  898. }
  899. /// <summary>
  900. /// 获取菜单
  901. /// </summary>
  902. void GetMenu()
  903. {
  904. string menuDataString = CustomMenuAPI.GetMenu(TokenHelper.AccessToken);
  905. // List<MenuModel> modelList = CustomMenuAPI.parse<List<MenuModel>>(menuDataString);//此处不可用
  906. try
  907. {
  908. System.Xml.XmlDocument xml = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(menuDataString);
  909. menuDataString = xml.InnerXml;
  910. }
  911. catch (Exception ex)
  912. {
  913. menuDataString="获取菜单时错误:" + ex.Message + " 服务器返回信息:" + menuDataString;
  914. }
  915. finally
  916. {
  917. this.ResponseWrite(menuDataString);
  918. }
  919. }
  920. /// <summary>
  921. /// 创建菜单
  922. /// </summary>
  923. void CreateMenu()
  924. {
  925. List<MenuModel> mModelList = new List<MenuModel>();
  926. MenuModel mMenu1 = new MenuModel(WXMenuType.sub_button, "工具箱");
  927. mMenu1.Sub_buttons.Add(new MenuModel(WXMenuType.view, "百度搜索", _Url: "http://www.baidu.com/"));
  928. mMenu1.Sub_buttons.Add(new MenuModel(WXMenuType.view, "QQ视频", _Url: "http://v.qq.com/"));
  929. mMenu1.Sub_buttons.Add(new MenuModel(WXMenuType.view, "手机APP", _Url: "http://yifox.oicp.net/WebMobile/Main.aspx/"));
  930. mMenu1.Sub_buttons.Add(new MenuModel(WXMenuType.scancode_waitmsg, "扫码带提示", _Key: "rselfmenu_0_0"));
  931. mMenu1.Sub_buttons.Add(new MenuModel(WXMenuType.scancode_push, "扫码推事件", _Key: "rselfmenu_0_1"));
  932. MenuModel mMenu2 = new MenuModel(WXMenuType.sub_button, "业务查询");
  933. mMenu2.Sub_buttons.Add(new MenuModel(WXMenuType.click, "订单查询", _Key: "Order_Query"));
  934. mMenu2.Sub_buttons.Add(new MenuModel(WXMenuType.click, "流程查询", _Key: "Process_Query"));
  935. mMenu2.Sub_buttons.Add(new MenuModel(WXMenuType.click, "会员查询", _Key: "Member_Query"));
  936. MenuModel mMenu3 = new MenuModel(WXMenuType.click, "帮助", _Key: "BTN_HELP");
  937. mModelList.Add(mMenu1);
  938. mModelList.Add(mMenu2);
  939. mModelList.Add(mMenu3);
  940. string menuDataString = CustomMenuAPI.GetMenuDataString(mModelList);
  941. this.ResponseWrite(CustomMenuAPI.CreateMenu(this.Token,menuDataString));
  942. }
  943. }
  944. }