You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

257 lines
12 KiB

  1. using Learun.Application.AppMagager;
  2. using Learun.Util;
  3. using Nancy;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using Learun.Application.Base.SystemModule;
  7. using Learun.Application.TwoDevelopment.LR_Desktop;
  8. using System.Text;
  9. using System.Data;
  10. using Learun.Application.WorkFlow;
  11. namespace Learun.Application.WebApi.Modules
  12. {
  13. public class DesktopApi : BaseApi
  14. {
  15. public DesktopApi()
  16. : base("/learun/adms/desktop")
  17. {
  18. Get["/setting"] = GetList;
  19. Get["/data"] = GetData;
  20. Get["/imgid"] = GetImgIds;
  21. Get["/img"] = GetImg;
  22. }
  23. private FunctionIBLL functionIBLL = new FunctionBLL();
  24. private DTTargetIBLL dTTargetIBLL = new DTTargetBLL();
  25. private DTListIBLL dTListIBLL = new DTListBLL();
  26. private DatabaseLinkIBLL databaseLinkIbll = new DatabaseLinkBLL();
  27. private DTChartIBLL dTChartIBLL = new DTChartBLL();
  28. private DTImgIBLL dTImgIBLL = new DTImgBLL();
  29. private NWFProcessIBLL nWFProcessIBLL = new NWFProcessBLL();
  30. public Response GetList(dynamic _)
  31. {
  32. string ver = this.GetReqData();// 获取模板请求数据
  33. var targetData = functionIBLL.GetDesktopList("1").OrderBy(m => m.F_Sort);
  34. var listData = functionIBLL.GetDesktopList("2").OrderBy(m => m.F_Sort);
  35. var chartData = functionIBLL.GetDesktopList("3").OrderBy(m => m.F_Sort);
  36. var data = new { target = targetData, list = listData, chart = chartData };
  37. string md5 = Md5Helper.Encrypt(data.ToJson(), 32);
  38. if (md5 == ver)
  39. {
  40. return Success("");
  41. }
  42. if (userInfo.Description == "学生")
  43. {
  44. var result = new string[0];
  45. var data1 = new { data = new { target = targetData, list = result, chart = chartData }, ver = md5 };
  46. return Success(data1);
  47. }
  48. else
  49. {
  50. var data1 = new { data = new { target = targetData, list = listData, chart = chartData }, ver = md5 };
  51. return Success(data1);
  52. }
  53. }
  54. public Response GetData(dynamic _)
  55. {
  56. object jsonData = null;
  57. DesktopParam param = this.GetReqData<DesktopParam>();
  58. switch (param.type)
  59. {
  60. case "Target":
  61. double valueRet = dTTargetIBLL.GetSqlData(param.id);
  62. jsonData = new
  63. {
  64. Id = param.id,
  65. value = valueRet,
  66. };
  67. break;
  68. case "list":
  69. DataTable dtnew = null;
  70. var loginUserInfo = LoginUserInfo.Get();
  71. string userId = loginUserInfo.userId;
  72. string postIds = "'" + loginUserInfo.postIds.Replace(",", "','") + "'";
  73. string roleIds = "'" + loginUserInfo.roleIds.Replace(",", "','") + "'";
  74. string companyId = loginUserInfo.companyId;
  75. string departmentId = loginUserInfo.departmentId;
  76. var dtListEntity = dTListIBLL.GetLR_DT_ListEntity(param.id);
  77. if (dtListEntity.F_Id == "33d50f1a-a64d-4b86-a6d4-2d937226de95") //待办
  78. {
  79. //审核者判断
  80. var strSql = new StringBuilder();
  81. // 添加委托信息
  82. List<UserInfo> delegateList = nWFProcessIBLL.GetDelegateProcess(userId);
  83. strSql.Append(" AND 1=1");
  84. strSql.Append($" AND r1.F_UserId ='{userId}' ");
  85. foreach (var item in delegateList)
  86. {
  87. string processId = "'" + item.wfProcessId.Replace(",", "','") + "'";
  88. string userI2 = "'" + item.userId + "'";
  89. strSql.Append(" OR (r1.F_UserId =" + userI2 + " AND t1.F_ProcessId in (" + processId + ") AND t1.F_Type != 2 )");
  90. }
  91. //strSql.Append(" AND ( t.F_AuditorId = '1' OR ");
  92. //strSql.Append(" t.F_AuditorId = '" + userId + "' ");
  93. //if (!string.IsNullOrEmpty(loginUserInfo.postIds))
  94. //{
  95. // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_CompanyId = '1' AND t.F_DepartmentId = '1' ) ");
  96. // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_CompanyId = '" + companyId + "' ) ");
  97. // strSql.Append(" OR (t.F_AuditorId in (" + postIds + ") AND t.F_DepartmentId = '" + departmentId + "' ) ");
  98. //}
  99. //if (!string.IsNullOrEmpty(loginUserInfo.roleIds))
  100. //{
  101. // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_CompanyId = '1' AND t.F_DepartmentId = '1' ) ");
  102. // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_CompanyId = '" + companyId + "' ) ");
  103. // strSql.Append(" OR (t.F_AuditorId in (" + roleIds + ") AND t.F_DepartmentId = '" + departmentId + "') ");
  104. //}
  105. //strSql.Append(" ) order by t.F_CreateDate ");
  106. dtListEntity.F_Sql = dtListEntity.F_Sql.Replace("MMM", strSql.ToString());
  107. }
  108. //增加通知公告类的已读标志
  109. if (dtListEntity.F_Url.Contains("/Notice/ViewIndex"))
  110. {
  111. dtListEntity.F_Sql = dtListEntity.F_Sql.Replace("@userId", "'" + loginUserInfo.userId + "'");
  112. }
  113. var reqDataTable = databaseLinkIbll.FindTable(dtListEntity.F_DataSourceId.Trim(), dtListEntity.F_Sql);
  114. //通知公告、家校互动、模块增加接收岗位、接收部门的限制;
  115. //通知公告(88f94781-acb8-47ca-864b-f96e3d9b5587)
  116. //家校互动(a030b590-34e1-4adc-8ab2-476d4c53976b)
  117. if (dtListEntity.F_Id == "88f94781-acb8-47ca-864b-f96e3d9b5587" || dtListEntity.F_Id == "a030b590-34e1-4adc-8ab2-476d4c53976b")
  118. {
  119. dtnew = reqDataTable.Clone();
  120. for (int i = 0; i < reqDataTable.Rows.Count; i++)
  121. {
  122. if (reqDataTable.Rows[i]["F_SendPostId"] != null && reqDataTable.Rows[i]["F_SendPostId"].ToString() != "")
  123. {
  124. if (!string.IsNullOrEmpty(loginUserInfo.postIds))
  125. {
  126. if (loginUserInfo.postIds.Contains(","))
  127. {
  128. foreach (var postid in loginUserInfo.postIds.Split(','))
  129. {
  130. if (reqDataTable.Rows[i]["F_SendPostId"].ToString().Contains(postid))
  131. {
  132. if (dtnew.Rows.Count < 5)
  133. {
  134. dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray);
  135. break;
  136. }
  137. }
  138. }
  139. }
  140. else
  141. {
  142. if (reqDataTable.Rows[i]["F_SendPostId"].ToString().Contains(loginUserInfo.postIds))
  143. {
  144. if (dtnew.Rows.Count < 5)
  145. dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray);
  146. }
  147. }
  148. }
  149. }
  150. else
  151. {
  152. if (reqDataTable.Rows[i]["F_SendDeptId"] != null && reqDataTable.Rows[i]["F_SendDeptId"].ToString() != "")
  153. {
  154. if (!string.IsNullOrEmpty(loginUserInfo.departmentId))
  155. {
  156. if (reqDataTable.Rows[i]["F_SendDeptId"].ToString().Contains(loginUserInfo.departmentId))
  157. {
  158. if (dtnew.Rows.Count < 5)
  159. dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray);
  160. }
  161. }
  162. }
  163. else
  164. {
  165. if (dtnew.Rows.Count < 5)
  166. dtnew.Rows.Add(reqDataTable.Rows[i].ItemArray);
  167. }
  168. }
  169. }
  170. jsonData = new
  171. {
  172. Id = param.id,
  173. value = dtnew
  174. };
  175. }
  176. else
  177. {
  178. jsonData = new
  179. {
  180. Id = param.id,
  181. value = reqDataTable
  182. };
  183. }
  184. break;
  185. case "chart":
  186. var dtListEntity1 = dTChartIBLL.GetLR_DT_ChartEntity(param.id);
  187. var reqDataTable1 = databaseLinkIbll.FindTable(dtListEntity1.F_DataSourceId.Trim(), dtListEntity1.F_Sql);
  188. jsonData = new
  189. {
  190. Id = param.id,
  191. value = reqDataTable1,
  192. };
  193. break;
  194. }
  195. return Success(jsonData);
  196. }
  197. public Response GetImgIds(dynamic _)
  198. {
  199. //分布式部署
  200. if (string.IsNullOrEmpty(Request.Query["isDistributed"]))
  201. {
  202. var data = dTImgIBLL.GetList().Where(m => m.F_EnabledMark == 1).Select(m => m.F_Id);
  203. return Success(data);
  204. }
  205. else
  206. {
  207. var data = dTImgIBLL.GetList().Where(m => m.F_EnabledMark == 1);
  208. //分布式部署
  209. if (!string.IsNullOrEmpty(Request.Query["isDistributed"]))
  210. {
  211. //主站地址
  212. string webrootpath = Config.GetValue("webrootpath");
  213. string fileAppDTImg = Config.GetValue("fileAppDTImg");
  214. foreach (var imgitem in data)
  215. {
  216. if (fileAppDTImg.Contains("Resource"))
  217. {
  218. imgitem.DistributedUrl = string.Format("{0}/{1}/{2}{3}", webrootpath, fileAppDTImg.Substring(fileAppDTImg.LastIndexOf("Resource")), imgitem.F_Id, imgitem.F_FileName);
  219. }
  220. }
  221. }
  222. return Success(data.Select(m => m.DistributedUrl));
  223. }
  224. }
  225. public Response GetImg(dynamic _)
  226. {
  227. string param = this.GetReqData();
  228. dTImgIBLL.GetImg(param);
  229. return Success("");
  230. }
  231. }
  232. public class DesktopParam
  233. {
  234. public string type { get; set; }
  235. public string id { get; set; }
  236. }
  237. }