function.ashx 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. <%@ WebHandler Language="C#" Class="function" %>
  2. using System;
  3. using System.Web;
  4. using System.Web.SessionState;
  5. using System.Collections.Generic;
  6. using System.Collections.Specialized;
  7. using System.Data;
  8. using Curtain.DataAccess;
  9. using DK.XuWei.WebMes;
  10. /// <summary>
  11. /// TP_SYS_FUNCTION
  12. /// xuwei create 2020-01-02
  13. /// </summary>
  14. public class function : IHttpHandler, IReadOnlySessionState
  15. {
  16. public void ProcessRequest(HttpContext context)
  17. {
  18. context.Response.ContentType = "text/plain";
  19. if (mes.LoginCheck() && context.Request["m"] is object)
  20. {
  21. Button b = new Button();
  22. if(mes.RightCheck("系统管理"))
  23. {
  24. b.btnIndex = true;
  25. b.btnInsert = true;
  26. b.btnInsertBatch = false;
  27. b.btnCopy = true;
  28. b.btnUpdate = true;
  29. b.btnDelete = true;
  30. b.btnCancel = false;
  31. b.btnSearch = true;
  32. b.btnDetail = true;
  33. b.btnCheckbox = true;
  34. b.btnExport = false;
  35. b.btnReload = true;
  36. };
  37. switch (context.Request["m"].ToString().ToLower())
  38. {
  39. case "b":
  40. {
  41. //按钮
  42. context.Response.Write(new JsonResult(b).ToJson());
  43. break;
  44. }
  45. case "a":
  46. {
  47. //添加
  48. if (b.btnDetail && context.Request["id"].ToString() != "")
  49. context.Response.Write(detail());
  50. else
  51. {
  52. xRecord r = new xRecord();
  53. context.Response.Write(new JsonResult(r).ToJson());
  54. }
  55. break;
  56. }
  57. case "s":
  58. {
  59. //搜索
  60. if (b.btnIndex)
  61. context.Response.Write(search(context.Request.Form));
  62. else
  63. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  64. break;
  65. }
  66. case "t":
  67. {
  68. //详细
  69. if (b.btnDetail)
  70. context.Response.Write(detail());
  71. else
  72. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  73. break;
  74. }
  75. case "i":
  76. {
  77. //插入
  78. if (b.btnInsert)
  79. context.Response.Write(insert(context.Request.Form));
  80. else
  81. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  82. break;
  83. }
  84. case "u":
  85. {
  86. //修改
  87. if (b.btnUpdate)
  88. context.Response.Write(update(context.Request.Form));
  89. else
  90. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  91. break;
  92. }
  93. case "d":
  94. {
  95. //删除
  96. if (b.btnDelete)
  97. context.Response.Write(delete());
  98. else
  99. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  100. break;
  101. }
  102. case "e":
  103. {
  104. //导出
  105. if (b.btnExport)
  106. {
  107. context.Response.Write(export());
  108. }
  109. else
  110. {
  111. context.Response.Write(new JsonResult(JsonStatus.rightError).ToJson());
  112. }
  113. break;
  114. }
  115. default:
  116. {
  117. break;
  118. }
  119. }
  120. }
  121. else
  122. {
  123. context.Response.Write(new JsonResult(JsonStatus.loginError).ToJson());
  124. }
  125. }
  126. /// <summary>
  127. /// TP_SYS_FUNCTION 查询
  128. /// </summary>
  129. /// <returns>json</returns>
  130. private string search(NameValueCollection form)
  131. {
  132. using(IDataAccess conn=DataAccess.Create())
  133. {
  134. int page = HttpContext.Current.Request["page"] is object ? Convert.ToInt32(HttpContext.Current.Request["page"]) : 1;
  135. int rows = HttpContext.Current.Request["rows"] is object ? Convert.ToInt32(HttpContext.Current.Request["rows"]) : 10;
  136. string sort = HttpContext.Current.Request["sort"] is object ? HttpContext.Current.Request["sort"] : "FUNCTIONLEVEL";
  137. string order = HttpContext.Current.Request["order"] is object ? HttpContext.Current.Request["order"] : "";
  138. string sqlStr = @"
  139. SELECT
  140. m.FUNCTIONCODE,
  141. m.URL,
  142. m.FUNCTIONNAME,
  143. m.FULLNAME,
  144. m.FUNCTIONFLAG,
  145. m.FUNCTIONBUTTONFLAG,
  146. m.REMARK,
  147. m.FORMNAME,
  148. m.BUTTONNAME,
  149. m.FUNCTIONLEVEL,
  150. m.FUNCTIONPROGRAM,
  151. m.IS_PDA,
  152. m.IS_PC,
  153. m.IS_WEB,
  154. m.FUNCTIONCODE AS SID
  155. FROM
  156. TP_SYS_FUNCTION m
  157. WHERE
  158. 1 = 1
  159. ";
  160. List<CDAParameter> sqlPara = new List<CDAParameter>();
  161. if(!string.IsNullOrEmpty(form["FUNCTIONCODE"]))
  162. {
  163. sqlStr += " AND m.FUNCTIONCODE = @FUNCTIONCODE@ ";
  164. sqlPara.Add(new CDAParameter("FUNCTIONCODE", form["FUNCTIONCODE"].ToString()));
  165. }
  166. if(!string.IsNullOrEmpty(form["URL"]))
  167. {
  168. sqlStr += " AND INSTR( m.URL, @URL@ ) > 0 ";
  169. sqlPara.Add(new CDAParameter("URL", form["URL"].ToString()));
  170. }
  171. if(!string.IsNullOrEmpty(form["FUNCTIONNAME"]))
  172. {
  173. sqlStr += " AND INSTR( m.FUNCTIONNAME, @FUNCTIONNAME@ ) > 0 ";
  174. sqlPara.Add(new CDAParameter("FUNCTIONNAME", form["FUNCTIONNAME"].ToString()));
  175. }
  176. if(!string.IsNullOrEmpty(form["FULLNAME"]))
  177. {
  178. sqlStr += " AND INSTR( m.FULLNAME, @FULLNAME@ ) > 0 ";
  179. sqlPara.Add(new CDAParameter("FULLNAME", form["FULLNAME"].ToString()));
  180. }
  181. if(!string.IsNullOrEmpty(form["FUNCTIONFLAG"]))
  182. {
  183. sqlStr += " AND INSTR( m.FUNCTIONFLAG, @FUNCTIONFLAG@ ) > 0 ";
  184. sqlPara.Add(new CDAParameter("FUNCTIONFLAG", form["FUNCTIONFLAG"].ToString()));
  185. }
  186. if(!string.IsNullOrEmpty(form["FUNCTIONBUTTONFLAG"]))
  187. {
  188. sqlStr += " AND INSTR( m.FUNCTIONBUTTONFLAG, @FUNCTIONBUTTONFLAG@ ) > 0 ";
  189. sqlPara.Add(new CDAParameter("FUNCTIONBUTTONFLAG", form["FUNCTIONBUTTONFLAG"].ToString()));
  190. }
  191. if(!string.IsNullOrEmpty(form["REMARK"]))
  192. {
  193. sqlStr += " AND INSTR( m.REMARK, @REMARK@ ) > 0 ";
  194. sqlPara.Add(new CDAParameter("REMARK", form["REMARK"].ToString()));
  195. }
  196. if(!string.IsNullOrEmpty(form["FORMNAME"]))
  197. {
  198. sqlStr += " AND INSTR( m.FORMNAME, @FORMNAME@ ) > 0 ";
  199. sqlPara.Add(new CDAParameter("FORMNAME", form["FORMNAME"].ToString()));
  200. }
  201. if(!string.IsNullOrEmpty(form["BUTTONNAME"]))
  202. {
  203. sqlStr += " AND INSTR( m.BUTTONNAME, @BUTTONNAME@ ) > 0 ";
  204. sqlPara.Add(new CDAParameter("BUTTONNAME", form["BUTTONNAME"].ToString()));
  205. }
  206. if(!string.IsNullOrEmpty(form["FUNCTIONLEVEL"]))
  207. {
  208. sqlStr += " AND INSTR( m.FUNCTIONLEVEL, @FUNCTIONLEVEL@ ) > 0 ";
  209. sqlPara.Add(new CDAParameter("FUNCTIONLEVEL", form["FUNCTIONLEVEL"].ToString()));
  210. }
  211. if(!string.IsNullOrEmpty(form["FUNCTIONPROGRAM"]))
  212. {
  213. sqlStr += " AND INSTR( m.FUNCTIONPROGRAM, @FUNCTIONPROGRAM@ ) > 0 ";
  214. sqlPara.Add(new CDAParameter("FUNCTIONPROGRAM", form["FUNCTIONPROGRAM"].ToString()));
  215. }
  216. if(!string.IsNullOrEmpty(form["IS_PDA"]))
  217. {
  218. sqlStr += " AND INSTR( m.IS_PDA, @IS_PDA@ ) > 0 ";
  219. sqlPara.Add(new CDAParameter("IS_PDA", form["IS_PDA"].ToString()));
  220. }
  221. if(!string.IsNullOrEmpty(form["IS_PC"]))
  222. {
  223. sqlStr += " AND INSTR( m.IS_PC, @IS_PC@ ) > 0 ";
  224. sqlPara.Add(new CDAParameter("IS_PC", form["IS_PC"].ToString()));
  225. }
  226. if(!string.IsNullOrEmpty(form["IS_WEB"]))
  227. {
  228. sqlStr += " AND INSTR( m.IS_WEB, @IS_WEB@ ) > 0 ";
  229. sqlPara.Add(new CDAParameter("IS_WEB", form["IS_WEB"].ToString()));
  230. }
  231. if(sort != "")
  232. {
  233. sqlStr += " ORDER BY " + sort + " " + order;
  234. }
  235. int total = 0;
  236. DataTable dt = conn.SelectPages(page, rows,out total, sqlStr, sqlPara.ToArray());
  237. return new JsonResult(dt) { total = total}.ToJson();
  238. }
  239. }
  240. /// <summary>
  241. /// 详细 TP_SYS_FUNCTION
  242. /// </summary>
  243. /// <returns>json</returns>
  244. private string detail()
  245. {
  246. using(IDataAccess conn= DataAccess.Create())
  247. {
  248. DataTable dt = conn.ExecuteDatatable(@"
  249. SELECT
  250. m.URL,
  251. m.FUNCTIONNAME,
  252. m.FULLNAME,
  253. m.FUNCTIONFLAG,
  254. m.FUNCTIONBUTTONFLAG,
  255. m.REMARK,
  256. m.FORMNAME,
  257. m.BUTTONNAME,
  258. m.FUNCTIONLEVEL,
  259. m.FUNCTIONPROGRAM,
  260. m.IS_PDA,
  261. m.IS_PC,
  262. m.IS_WEB,
  263. m.FUNCTIONCODE
  264. FROM
  265. TP_SYS_FUNCTION m
  266. WHERE
  267. m.FUNCTIONCODE = @FUNCTIONCODE@
  268. ",
  269. new CDAParameter("FUNCTIONCODE",HttpContext.Current.Request["id"].ToString())
  270. );
  271. return new JsonResult(dt).ToJson();
  272. }
  273. }
  274. /// <summary>
  275. /// 插入 TP_SYS_FUNCTION
  276. /// </summary>
  277. /// <returns>json</returns>
  278. private string insert(NameValueCollection form)
  279. {
  280. using(IDataAccess conn= DataAccess.Create())
  281. {
  282. //string primaryKey = conn.GetSequenceNextval("SEQ_TP_SYS_FUNCTION").ToString();
  283. int result = conn.ExecuteNonQuery(@"
  284. INSERT INTO TP_SYS_FUNCTION (
  285. URL,
  286. FUNCTIONNAME,
  287. FULLNAME,
  288. FUNCTIONFLAG,
  289. FUNCTIONBUTTONFLAG,
  290. REMARK,
  291. FORMNAME,
  292. BUTTONNAME,
  293. FUNCTIONLEVEL,
  294. FUNCTIONPROGRAM,
  295. IS_PDA,
  296. IS_PC,
  297. IS_WEB,
  298. FUNCTIONCODE
  299. ) VALUES (
  300. @URL@,
  301. @FUNCTIONNAME@,
  302. @FULLNAME@,
  303. @FUNCTIONFLAG@,
  304. @FUNCTIONBUTTONFLAG@,
  305. @REMARK@,
  306. @FORMNAME@,
  307. @BUTTONNAME@,
  308. @FUNCTIONLEVEL@,
  309. @FUNCTIONPROGRAM@,
  310. @IS_PDA@,
  311. @IS_PC@,
  312. @IS_WEB@,
  313. @FUNCTIONCODE@
  314. )
  315. ",
  316. new CDAParameter("URL",form["URL"].ToString()),
  317. new CDAParameter("FUNCTIONNAME",form["FUNCTIONNAME"].ToString()),
  318. new CDAParameter("FULLNAME",form["FULLNAME"].ToString()),
  319. new CDAParameter("FUNCTIONFLAG",form["FUNCTIONFLAG"].ToString()),
  320. new CDAParameter("FUNCTIONBUTTONFLAG",form["FUNCTIONBUTTONFLAG"].ToString()),
  321. new CDAParameter("REMARK",form["REMARK"].ToString()),
  322. new CDAParameter("FORMNAME",form["FORMNAME"].ToString()),
  323. new CDAParameter("BUTTONNAME",form["BUTTONNAME"].ToString()),
  324. new CDAParameter("FUNCTIONLEVEL",form["FUNCTIONLEVEL"].ToString()),
  325. new CDAParameter("FUNCTIONPROGRAM",form["FUNCTIONPROGRAM"].ToString()),
  326. new CDAParameter("IS_PDA",form["IS_PDA"].ToString()),
  327. new CDAParameter("IS_PC",form["IS_PC"].ToString()),
  328. new CDAParameter("IS_WEB",form["IS_WEB"].ToString()),
  329. new CDAParameter("FUNCTIONCODE",form["FUNCTIONCODE"].ToString())
  330. );
  331. return new JsonResult(JsonStatus.success).ToJson();
  332. }
  333. }
  334. /// <summary>
  335. /// 更新 TP_SYS_FUNCTION
  336. /// </summary>
  337. /// <returns>json</returns>
  338. private string update(NameValueCollection form)
  339. {
  340. using(IDataAccess conn=DataAccess.Create())
  341. {
  342. int result = conn.ExecuteNonQuery(@"
  343. UPDATE TP_SYS_FUNCTION
  344. SET
  345. URL = @URL@,
  346. FUNCTIONNAME = @FUNCTIONNAME@,
  347. FULLNAME = @FULLNAME@,
  348. FUNCTIONFLAG = @FUNCTIONFLAG@,
  349. FUNCTIONBUTTONFLAG = @FUNCTIONBUTTONFLAG@,
  350. REMARK = @REMARK@,
  351. FORMNAME = @FORMNAME@,
  352. BUTTONNAME = @BUTTONNAME@,
  353. FUNCTIONLEVEL = @FUNCTIONLEVEL@,
  354. FUNCTIONPROGRAM = @FUNCTIONPROGRAM@,
  355. IS_PDA = @IS_PDA@,
  356. IS_PC = @IS_PC@,
  357. IS_WEB = @IS_WEB@,
  358. FUNCTIONCODE = @FUNCTIONCODE@
  359. WHERE
  360. FUNCTIONCODE = @FUNCTIONCODE@
  361. ",
  362. new CDAParameter("URL",form["URL"].ToString()),
  363. new CDAParameter("FUNCTIONNAME",form["FUNCTIONNAME"].ToString()),
  364. new CDAParameter("FULLNAME",form["FULLNAME"].ToString()),
  365. new CDAParameter("FUNCTIONFLAG",form["FUNCTIONFLAG"].ToString()),
  366. new CDAParameter("FUNCTIONBUTTONFLAG",form["FUNCTIONBUTTONFLAG"].ToString()),
  367. new CDAParameter("REMARK",form["REMARK"].ToString()),
  368. new CDAParameter("FORMNAME",form["FORMNAME"].ToString()),
  369. new CDAParameter("BUTTONNAME",form["BUTTONNAME"].ToString()),
  370. new CDAParameter("FUNCTIONLEVEL",form["FUNCTIONLEVEL"].ToString()),
  371. new CDAParameter("FUNCTIONPROGRAM",form["FUNCTIONPROGRAM"].ToString()),
  372. new CDAParameter("IS_PDA",form["IS_PDA"].ToString()),
  373. new CDAParameter("IS_PC",form["IS_PC"].ToString()),
  374. new CDAParameter("IS_WEB",form["IS_WEB"].ToString()),
  375. new CDAParameter("FUNCTIONCODE",HttpContext.Current.Request["id"].ToString())
  376. );
  377. return new JsonResult(JsonStatus.success).ToJson();
  378. }
  379. }
  380. /// <summary>
  381. /// 删除 TP_SYS_FUNCTION
  382. /// </summary>
  383. /// <returns>json</returns>
  384. private string delete()
  385. {
  386. using(IDataAccess conn= DataAccess.Create())
  387. {
  388. if (HttpContext.Current.Request["id"] is object)
  389. {
  390. int result = conn.ExecuteNonQuery(@"
  391. DELETE
  392. TP_SYS_FUNCTION
  393. WHERE
  394. INSTR(',' || @FUNCTIONCODE@ || ',' , ',' || FUNCTIONCODE || ',') > 0
  395. ",
  396. new CDAParameter("FUNCTIONCODE", HttpContext.Current.Request["id"].ToString())
  397. );
  398. return new JsonResult(JsonStatus.success).ToJson();
  399. }
  400. else
  401. {
  402. return new JsonResult(JsonStatus.otherError).ToJson();
  403. }
  404. }
  405. }
  406. /// <summary>
  407. /// 导出 TP_SYS_FUNCTION
  408. /// </summary>
  409. /// <returns>json</returns>
  410. private string export()
  411. {
  412. return search(new NameValueCollection());
  413. }
  414. private class Button
  415. {
  416. public bool btnIndex = false;
  417. public bool btnInsert = false;
  418. public bool btnInsertBatch = false;
  419. public bool btnCopy = false;
  420. public bool btnUpdate = false;
  421. public bool btnDelete = false;
  422. public bool btnCancel = false;
  423. public bool btnSearch = false;
  424. public bool btnDetail = false;
  425. public bool btnCheckbox = false;
  426. public bool btnExport = false;
  427. public bool btnReload = false;
  428. }
  429. private class xRecord
  430. {
  431. public string sid { get; set; }
  432. public string URL { get; set; }
  433. public string FUNCTIONNAME { get; set; }
  434. public string FULLNAME { get; set; }
  435. public string FUNCTIONFLAG { get; set; }
  436. public string FUNCTIONBUTTONFLAG { get; set; }
  437. public string REMARK { get; set; }
  438. public string FORMNAME { get; set; }
  439. public string BUTTONNAME { get; set; }
  440. public string FUNCTIONLEVEL { get; set; }
  441. public string FUNCTIONPROGRAM { get; set; }
  442. public string IS_PDA { get; set; }
  443. public string IS_PC { get; set; }
  444. public string IS_WEB { get; set; }
  445. }
  446. public bool IsReusable
  447. {
  448. get
  449. {
  450. return false;
  451. }
  452. }
  453. }