123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Cors;
- using Microsoft.AspNetCore.Mvc;
- using System.Data;
- using System.Net.Http;
- using Newtonsoft.Json;
- using System.Net.Http.Headers;
- using Newtonsoft.Json.Linq;
- namespace YDSP.Core.Controllers
- {
- [Produces("application/json")]
- [Route("api/[controller]/[action]")]
- [EnableCors("ydsp")]
- public class ValuesController : Controller
- {
- public static HttpClient httpClient = new HttpClient();
- //以下是跟钉钉对接有关方法,
- #region 钉钉appId及appSecret
- /// <summary>
- /// 钉钉appId及appSecret
- /// </summary>
- /// <returns></returns>
- private app GetApp()
- {
- app a = new app();
- string sql = "select * from ZSystemURL where ZSText = 'appkey' select * from ZSystemURL where ZSText = 'appsecret'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- a.appid = Convert.ToString(i["ZSURL"]).Trim();
- }
- foreach (DataRow i in set.Tables[1].Rows)
- {
- a.appsecret = Convert.ToString(i["ZSURL"]).Trim();
- }
- return a;
- }
- #endregion
- #region 获取钉钉接口最终返回userid
- [HttpPost]
- public SystemUser GetSystem([FromBody]SystemUser s)
- {
- SystemUser system = new SystemUser();
- app a = GetApp();
- string access_token = "";
- string uid = "";
- string name = "";
- //获取钉钉access_token
- string URL = "https://oapi.dingtalk.com/gettoken?appkey=" + a.appid + "&appsecret=" + a.appsecret;
- var responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
- var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
- foreach (var i in obj)
- {
- if (i.Key == "access_token")
- {
- access_token = i.Value;
- continue;
- }
- }
- //获取用户钉钉id
- URL = "https://oapi.dingtalk.com/user/getuserinfo?access_token=" + access_token + "&code=" + s.UserCode;
- responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
- obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
- foreach (var i in obj)
- {
- if (i.Key == "userid")
- {
- uid = i.Value;
- continue;
- }
- if (i.Key == "name")
- {
- name = i.Value;
- continue;
- }
- }
- List<SystemUser> systemUsers = new List<SystemUser>();
- try
- {
- string sql = "select *from ZSystemUser";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- SystemUser user = new SystemUser();
- user.UserCode = Convert.ToString(i["ZSUserCode"]);
- user.UserID = Convert.ToString(i["ZSUserId"]);
- user.UserName = Convert.ToString(i["ZSText"]);
- user.PWD = Convert.ToString(i["ZSPassword"]);
- user.URL = "";
- systemUsers.Add(user);
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- if (systemUsers.FirstOrDefault(f => f.UserID == uid) == null)
- {
- if (uid != "")
- {
- string sql = "insert into ZSystemUser values('', '" + uid + "', '', '')";
- YDSPHepler.ExecuteNonQuery(sql);
- sql = "select * from ZSystemUser where ZSUserId = '" + uid + "'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- system.UserID = Convert.ToString(i["ZSUserId"]).Trim();
- system.UserCode = Convert.ToString(i["ZSUserCode"]).Trim();
- system.UserName = Convert.ToString(i["ZSText"]).Trim();
- system.PWD = Convert.ToString(i["ZSPassword"]).Trim();
- }
- }
- }
- else
- {
- system = systemUsers.FirstOrDefault(f => f.UserID == uid);
- }
- return system;
- }
- #endregion
- #region 钉钉修改用户表(根据钉钉id修改usercode)
- /// <summary>
- /// 钉钉修改用户表(根据钉钉id修改usercode)
- /// </summary>
- /// <param name="system"></param>
- /// <returns></returns>
- [HttpPost]
- public string UpdateZSystemUser([FromBody]SystemUser system)
- {
- string sql = "update ZSystemUser set ZSUserCode = '" + system.UserCode + "', ZSText = '" + system.UserName + "' where ZSUserId = '" + system.UserID + "'";
- try
- {
- YDSPHepler.ExecuteNonQuery(sql);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- return sql;
- }
- #endregion
- #region 钉钉获取钉钉消息接口
- /// <summary>
- /// 钉钉获取钉钉消息接口
- /// </summary>
- /// <param name="s"></param>
- /// <returns></returns>
- [HttpPost]
- public string GetInformation([FromBody]SystemUser s)
- {
- app a = GetApp();
- string URL = "";
- string access_token = "";
- //获取钉钉access_token
- try
- {
- URL = "https://oapi.dingtalk.com/gettoken?appkey=" + a.appid + "&appsecret=" + a.appsecret;
- var responseStr = httpClient.GetAsync(URL).Result.Content.ReadAsStringAsync().Result;
- var obj = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStr);
- foreach (var i in obj)
- {
- if (i.Key == "access_token")
- {
- access_token = i.Value;
- continue;
- }
- }
- URL = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=" + access_token;
- OapiMessageSendToConversationRequest oa = new OapiMessageSendToConversationRequest();
- oa.userid_list = s.UserID;
- string sql = "select * from zsystemurl where ZSText = 'AgentId' select * from zsystemurl where ZSText = '图片地址'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- oa.agent_id = Convert.ToString(i["ZSURL"]);//获取AgentId
- }
- oa.to_all_user = false;
- msgtypeURL msgtypeURL = new msgtypeURL();
- msgtypeURL.msgtype = "link";
- msgtypeURL.link.messageUrl = s.URL;
- foreach (DataRow i in set.Tables[1].Rows)
- {
- msgtypeURL.link.picUrl = Convert.ToString(i["ZSURL"]);//获取钉钉接口(链接消息的图片参数)
- }
- msgtypeURL.link.title = s.UserCode;
- msgtypeURL.link.text = s.UserName;
- string j = Newtonsoft.Json.JsonConvert.SerializeObject(msgtypeURL);//序列化
- oa.msg = (JObject)JsonConvert.DeserializeObject(j);
- //Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);
- string data = Newtonsoft.Json.JsonConvert.SerializeObject(oa);//序列化
- HttpContent httpContent = new StringContent(data);
- httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
- httpContent.Headers.ContentType.CharSet = "utf-8";
- var responseStrs = httpClient.PostAsync(URL, httpContent).Result.Content.ReadAsStringAsync().Result;
- var objs = JsonConvert.DeserializeObject<Dictionary<string, string>>(responseStrs);
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- URL = "";
- return URL;
- }
- #endregion
- #region 钉钉获取SystemUser主要数据
- /// <summary>
- /// 钉钉获取SystemUser主要数据
- /// </summary>
- /// <returns></returns>
- [HttpGet("{name}")]
- public string GetUser(string name)
- {
- string sql = "select ZSUserId from zsystemuser where ZSUserCode = '" + name + "'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- sql = Convert.ToString(i["ZSUserId"]);
- }
- return sql;
- }
- #endregion
- #region 钉钉根据名称绑定单个地址
- /// <summary>
- /// 钉钉根据名称绑定单个地址
- /// </summary>
- /// <param name="name"></param>
- /// <returns></returns>
- [HttpGet("{name}")]
- public string GetDDSystemURL(string name)
- {
- string url = "";
- try
- {
- string sql = "select ZSURL from ZSystemURL where ZSText = '" + name + "'";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- url = Convert.ToString(i["ZSURL"]);
- }
- }
- catch (Exception ex)
- {
- url = ex.Message;
- }
- return url;
- }
- #endregion
- #region 钉钉绑定多个地址
- /// <summary>
- /// 钉钉绑定多个地址
- /// </summary>
- /// <param name="name"></param>
- /// <returns></returns>
- [HttpPost]
- public WorkFlowCaseVM PostSystemURL([FromBody] WorkFlowCaseVM work)
- {
- WorkFlowCaseVM w = new WorkFlowCaseVM();
- string sql = "select ZSURL from ZSystemURL where ZSText = '" + work.ApplicationCode + "' select ZSURL from ZSystemURL where ZSText = '" + work.url + "'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- w.ApplicationCode = Convert.ToString(i["ZSURL"]);
- }
- foreach (DataRow i in set.Tables[1].Rows)
- {
- w.url = Convert.ToString(i["ZSURL"]);
- }
- return w;
- }
- #endregion
- #region 钉钉绑定配置地址
- /// <summary>
- /// 钉钉绑定配置地址
- /// </summary>
- /// <returns></returns>
- public List<SystemUser> GetDDSystemURLList()
- {
- List<SystemUser> items = new List<SystemUser>();
- string sql = "select * from ZSystemURL";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- items.Add(new SystemUser()
- {
- UserID = Convert.ToString(i["ZSID"]),
- UserCode = Convert.ToString(i["ZSURL"]),
- UserName = Convert.ToString(i["ZSText"]),
- URL = null,
- PWD = null,
- });
- }
- return items;
- }
- #endregion
- #region 钉钉修改配置地址
- /// <summary>
- /// 钉钉修改配置地址
- /// </summary>
- /// <param name="id"></param>
- /// <param name="s"></param>
- /// <returns></returns>
- [HttpPost]
- public List<SystemUser> UpdateDDSystemURL([FromBody]List<SystemUser> s)
- {
- try
- {
- foreach (SystemUser item in s)
- {
- string updateSQL = @"update ZSystemURL set ZSURL = '" + item.UserCode + "',ZSText = '" + item.UserName + "' " +
- " where ZSID =" + item.UserID;
- YDSPHepler.ExecuteNonQuery(updateSQL);
- }
- List<SystemUser> items = new List<SystemUser>();
- string sql = "select * from ZSystemURL";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- items.Add(new SystemUser()
- {
- UserID = Convert.ToString(i["ZSID"]),
- UserCode = Convert.ToString(i["ZSURL"]),
- UserName = Convert.ToString(i["ZSText"]),
- URL = null,
- PWD = null,
- });
- }
- return items;
- }
- catch (Exception)
- {
- return null;
- }
- }
- #endregion
- //以上是跟钉钉对接有关方法,以下是跟OA对接有关方法
- #region OA获取WorkFlowCase主要数据
- /// <summary>
- /// OA获取WorkFlowCase主要数据
- /// </summary>
- /// <returns></returns>
- [HttpGet("{caseCode}")]
- public WorkFlowCaseVM GetWorkFlowCaseVM(string caseCode)
- {
- string sql = "select ApplicationCode from WorkFlowCase where CaseCode =" + caseCode;
- DataTable table = YDSPHepler.GetData(sql);
- WorkFlowCaseVM workFlow = new WorkFlowCaseVM();
- foreach (DataRow i in table.Rows)
- {
- workFlow.ApplicationCode = Convert.ToString(i["ApplicationCode"]);
- }
- return workFlow;
- }
- #endregion
- #region OA获取表单名称对应界面路径
- /// <summary>
- /// OA获取表单名称对应界面路径
- /// </summary>
- /// <param name="ProcedureName"></param>
- /// <returns></returns>
- [HttpPost]
- public WorkFlowCaseVM GetWorkFlowProcedure([FromBody]SystemUser s)
- {
- string ProcedureName = s.UserName;
- WorkFlowCaseVM w = new WorkFlowCaseVM();
- string sql = @"select ProcedureName,ApplicationPath from WorkFlowProcedure
- group by ProcedureName,ApplicationPath
- having ProcedureName = '" + ProcedureName + "' select ZSURL from ZSystemURL where ZSText = '" + s.UserID + "'";
- DataSet set = YDSPHepler.GetSet(sql);
- foreach (DataRow i in set.Tables[0].Rows)
- {
- w.ApplicationCode = Convert.ToString(i["ApplicationPath"]).Substring(3).Trim();
- }
- foreach (DataRow i in set.Tables[1].Rows)
- {
- w.url = Convert.ToString(i["ZSURL"]);
- }
- return w;
- }
- #endregion
- #region OA获取SystemUser主要数据
- /// <summary>
- /// OA获取SystemUser主要数据
- /// </summary>
- /// <returns></returns>
- [HttpPost]
- public SystemUser GetUserVM([FromBody]opinions o)
- {
- string sql = "select UserCode,UserID,UserName from SystemUser where UserCode = " + o.actUserName + " select ZSURL from ZSystemURL where ZSText = '" + o.opinionText + "' select ZSURL from ZSystemURL where ZSText = '" + o.opinionConfirm + "'";
- DataSet set = YDSPHepler.GetSet(sql);
- SystemUser user = new SystemUser();
- foreach (DataRow i in set.Tables[0].Rows)
- {
- user.UserCode = Convert.ToString(i["UserCode"]);
- user.UserID = Convert.ToString(i["UserID"]);
- user.UserName = Convert.ToString(i["UserName"]);
- }
- foreach (DataRow i in set.Tables[1].Rows)
- {
- user.URL = Convert.ToString(i["ZSURL"]);
- }
- foreach (DataRow i in set.Tables[2].Rows)
- {
- user.PWD = Convert.ToString(i["ZSURL"]);
- }
- return user;
- }
- #endregion
- #region OA根据名称绑定单个地址
- /// <summary>
- /// OA根据名称绑定单个地址
- /// </summary>
- /// <param name="name"></param>
- /// <returns></returns>
- [HttpGet("{name}")]
- public string GetSystemURL(string name)
- {
- string url = "";
- string sql = "select ZSURL from ZSystemURL where ZSText = '" + name + "'";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- url = Convert.ToString(i["ZSURL"]);
- }
- return url;
- }
- #endregion
- #region OA绑定配置地址
- /// <summary>
- /// OA绑定配置地址
- /// </summary>
- /// <returns></returns>
- public List<SystemUser> GetSystemURLList()
- {
- List<SystemUser> items = new List<SystemUser>();
- string sql = "select * from ZSystemURL";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- items.Add(new SystemUser()
- {
- UserID = Convert.ToString(i["ZSID"]),
- UserCode = Convert.ToString(i["ZSURL"]),
- UserName = Convert.ToString(i["ZSText"]),
- URL = null,
- PWD = null,
- });
- }
- return items;
- }
- #endregion
- #region OA修改配置地址
- /// <summary>
- /// OA修改配置地址
- /// </summary>
- /// <param name="id"></param>
- /// <param name="s"></param>
- /// <returns></returns>
- [HttpPost]
- public List<SystemUser> UpdateSystemURL([FromBody]List<SystemUser> s)
- {
- try
- {
- foreach (SystemUser item in s)
- {
- string updateSQL = @"update ZSystemURL set ZSURL = '" + item.UserCode + "',ZSText = '" + item.UserName + "' " +
- " where ZSID =" + item.UserID;
- YDSPHepler.ExecuteNonQuery(updateSQL);
- }
- List<SystemUser> items = new List<SystemUser>();
- string sql = "select * from ZSystemURL";
- DataTable table = YDSPHepler.GetData(sql);
- foreach (DataRow i in table.Rows)
- {
- items.Add(new SystemUser()
- {
- UserID = Convert.ToString(i["ZSID"]),
- UserCode = Convert.ToString(i["ZSURL"]),
- UserName = Convert.ToString(i["ZSText"]),
- URL = null,
- PWD = null,
- });
- }
- return items;
- }
- catch (Exception)
- {
- return null;
- }
- }
- #endregion
- }
- public class opinions
- {
- public string taskActorName { get; set; }
- public string actUserName { get; set; }
- public string opinionDate { get; set; }
- public string opinionConfirm { get; set; }
- public string opinionText { get; set; }
- }
- /// <summary>
- /// SystemUser视图模型
- /// </summary>
- public class SystemUser
- {
- public string UserCode { get; set; }
- public string UserID { get; set; }
- public string UserName { get; set; }
- public string URL { get; set; }
- public string PWD { get; set; }
- }
- /// <summary>
- /// WorkFlowCaseVM视图模型
- /// </summary>
- public class WorkFlowCaseVM
- {
- public string ApplicationCode { get; set; }
- public string url { get; set; }
- }
- /// <summary>
- /// appId及appSecret
- /// </summary>
- public class app
- {
- public string appid { get; set; }
- public string appsecret { get; set; }
- }
- public class OapiMessageSendToConversationRequest
- {
- public string userid_list { get; set; }
- public string agent_id { get; set; }
- public bool to_all_user { get; set; }
- public JObject msg { get; set; }
- }
- public class msgtypeURL
- {
- public string msgtype { get; set; }
- public Link link { get; set; } = new Link();
- }
- public class Link
- {
- public string messageUrl { get; set; }
- public string picUrl { get; set; }
- public string title { get; set; }
- public string text { get; set; }
- }
- }
|