350 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			350 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			C#
		
	
	
	
| using Newtonsoft.Json;
 | |
| using Newtonsoft.Json.Linq;
 | |
| using System;
 | |
| using System.Configuration;
 | |
| using System.Drawing;
 | |
| using System.Drawing.Imaging;
 | |
| using System.IO;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| 
 | |
| namespace BLL
 | |
| {
 | |
|     /// <summary>
 | |
|     /// 获取身份证信息
 | |
|     /// </summary>
 | |
|     public static class APICommonService
 | |
|     {        
 | |
|         #region 获取access_token信息
 | |
|         /// <summary>
 | |
|         ///  获取access_token信息
 | |
|         /// </summary>
 | |
|         /// <param name="url"></param>
 | |
|         /// <returns></returns>
 | |
|         public static string getaccess_token()
 | |
|         {
 | |
|             string access_token = string.Empty;
 | |
|             string appid = Const.AppID_CWCEC;
 | |
|             string secret = Const.AppSecret_CWCEC;
 | |
|             //string appid = "wxb5f0e8051b7b9eee";
 | |
|             //string secret = "626175f8860bf84beb4cf507b9445115";
 | |
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | |
|             {
 | |
|                 var getToken = db.Sys_AccessToken.FirstOrDefault();
 | |
|                 if (getToken != null && getToken.Endtime > DateTime.Now)
 | |
|                 {
 | |
|                     access_token = getToken.Access_token;
 | |
|                 }
 | |
|                 else
 | |
|                 {
 | |
|                     if (getToken != null)
 | |
|                     {
 | |
|                         db.Sys_AccessToken.DeleteOnSubmit(getToken);
 | |
|                     }
 | |
|                     var strJosn = APIGetHttpService.Http("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret);
 | |
|                     if (!string.IsNullOrEmpty(strJosn))
 | |
|                     {
 | |
|                         JObject obj = JObject.Parse(strJosn);
 | |
|                         access_token = obj["access_token"].ToString();
 | |
|                         int expires_in = Funs.GetNewIntOrZero(obj["expires_in"].ToString());
 | |
|                         Model.Sys_AccessToken newToken = new Model.Sys_AccessToken
 | |
|                         {
 | |
|                             Access_token = access_token,
 | |
|                             Expires_in = expires_in,
 | |
|                             Endtime = DateTime.Now.AddSeconds(expires_in),
 | |
|                         };
 | |
| 
 | |
|                         db.Sys_AccessToken.InsertOnSubmit(newToken);
 | |
|                         db.SubmitChanges();
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             return access_token;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 发送订阅消息
 | |
|         /// <summary>
 | |
|         /// 发送订阅消息
 | |
|         /// </summary>
 | |
|         /// <param name="userId"></param>
 | |
|         /// <param name="thing2"></param>
 | |
|         /// <param name="name1"></param>
 | |
|         /// <param name="date3"></param>
 | |
|         public static string SendSubscribeMessage(string userId, string thing2, string name1, string date3)
 | |
|         {
 | |
|             string access_token = APICommonService.getaccess_token();
 | |
|             var getUser = Funs.DB.Sys_User.FirstOrDefault(x => x.UserId == userId);
 | |
|             if (getUser != null && !string.IsNullOrEmpty(getUser.OpenId))
 | |
|             {
 | |
|                 string miniprogram_state = ConfigurationManager.AppSettings["miniprogram_state"];
 | |
|                 if (string.IsNullOrEmpty(miniprogram_state))
 | |
|                 {
 | |
|                     miniprogram_state = "formal";
 | |
|                 }
 | |
|                 string contenttype = "application/json;charset=utf-8";
 | |
|                 string url = $"https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token={access_token}";
 | |
|                 var tempData = new
 | |
|                 {
 | |
|                     access_token,
 | |
|                     touser = getUser.OpenId,
 | |
|                     template_id = Const.WX_TemplateID,
 | |
|                     page = "pages/index/index",
 | |
|                     data = new
 | |
|                     {
 | |
|                         thing3 = new { value = thing2 },
 | |
|                         thing13 = new { value = name1 },
 | |
|                         time5 = new { value = date3 }
 | |
|                     },
 | |
|                     miniprogram_state,
 | |
|                     lang = "zh_CN",
 | |
|                 };
 | |
|                 string messages= APIGetHttpService.Http(url, "POST", contenttype, null, JsonConvert.SerializeObject(tempData));
 | |
|                 //// 记录
 | |
|                 SaveSysHttpLog(getUser.UserName, url, messages);
 | |
|                 return messages;
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 return "openId is null";
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 获取OpenId消息
 | |
|         /// <summary>
 | |
|         /// 获取OpenId消息
 | |
|         /// </summary>
 | |
|         /// <param name="userId"></param>
 | |
|         /// <param name="jsCode"></param>
 | |
|         /// <returns></returns>
 | |
|         public static string getUserOpenId(string userId, string jsCode,bool isRefresh = false)
 | |
|         {
 | |
|             string openId = string.Empty;
 | |
|             string appid = Const.AppID_CWCEC;
 | |
|             string secret = Const.AppSecret_CWCEC;
 | |
|             //string appid = "wxb5f0e8051b7b9eee";
 | |
|             //string secret = "626175f8860bf84beb4cf507b9445115";      
 | |
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | |
|             {
 | |
|                 var getUser = db.Sys_User.FirstOrDefault(x => x.UserId == userId);
 | |
|                 if (getUser != null)
 | |
|                 {
 | |
|                     if (!string.IsNullOrEmpty(getUser.OpenId) && !isRefresh)
 | |
|                     {
 | |
|                         openId = getUser.OpenId;
 | |
|                     }
 | |
|                     else
 | |
|                     {
 | |
|                         string getUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appid + "&secret=" + secret + "&js_code=" + jsCode + "&grant_type=authorization_code";
 | |
|                         var strJosn = APIGetHttpService.Http(getUrl);
 | |
|                         if (!string.IsNullOrEmpty(strJosn))
 | |
|                         {
 | |
|                             JObject obj = JObject.Parse(strJosn);
 | |
|                             if (obj["openid"] != null)
 | |
|                             {
 | |
|                                 openId = obj["openid"].ToString();
 | |
|                                 getUser.OpenId = openId;
 | |
|                                 db.SubmitChanges();
 | |
| 
 | |
|                                 var getUsers = from x in db.Sys_User
 | |
|                                                where x.UserId != getUser.UserId && x.OpenId == openId
 | |
|                                                select x;
 | |
|                                 if (getUsers.Count() > 0)
 | |
|                                 {
 | |
|                                     foreach (var item in getUsers)
 | |
|                                     {
 | |
|                                         item.OpenId = null;
 | |
|                                         db.SubmitChanges();
 | |
|                                     }
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                         //// 记录
 | |
|                         SaveSysHttpLog(getUser.UserName, getUrl, strJosn);
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return openId;
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         #region 待办信息接收(不审核)保存方法
 | |
|         /// <summary>
 | |
|         /// 待办信息接收(不审核)保存方法
 | |
|         /// </summary>
 | |
|         /// <param name="flowReceiveItem"></param>
 | |
|         /// <returns></returns>
 | |
|         public static void SaveFlowReceiveItem(Model.FlowReceiveItem flowReceiveItem)
 | |
|         {
 | |
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | |
|             {
 | |
|                 #region 隐患整改单
 | |
|                 if (flowReceiveItem.MenuId == Const.ProjectRectifyNoticeMenuId)
 | |
|                 {
 | |
|                     var getRectifyNotices = db.Check_RectifyNotices.FirstOrDefault(x => x.RectifyNoticesId == flowReceiveItem.DataId);
 | |
|                     if (getRectifyNotices != null)
 | |
|                     {
 | |
|                         if (!string.IsNullOrEmpty(getRectifyNotices.ProfessionalEngineerId) && getRectifyNotices.ProfessionalEngineerId.Contains(flowReceiveItem.OperaterId)) ////专业工程师
 | |
|                         {
 | |
|                             if (!getRectifyNotices.ProfessionalEngineerTime1.HasValue)
 | |
|                             {
 | |
|                                 getRectifyNotices.ProfessionalEngineerTime1 = DateTime.Now;
 | |
|                                 getRectifyNotices.ProfessionalEngineerTime2 = null;
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 getRectifyNotices.ProfessionalEngineerTime2 = DateTime.Now;
 | |
|                             }
 | |
|                         }
 | |
|                         else if (getRectifyNotices.ConstructionManagerId == flowReceiveItem.OperaterId) ////施工经理
 | |
|                         {
 | |
|                             if (!getRectifyNotices.ConstructionManagerTime1.HasValue)
 | |
|                             {
 | |
|                                 getRectifyNotices.ConstructionManagerTime1 = DateTime.Now;
 | |
|                                 getRectifyNotices.ConstructionManagerTime2 = null;
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 getRectifyNotices.ConstructionManagerTime2 = DateTime.Now;
 | |
|                             }
 | |
|                         }
 | |
|                         else if (getRectifyNotices.ProjectManagerId == flowReceiveItem.OperaterId) ////项目经理
 | |
|                         {
 | |
|                             if (!getRectifyNotices.ProjectManagerTime1.HasValue)
 | |
|                             {
 | |
|                                 getRectifyNotices.ProjectManagerTime1 = DateTime.Now;
 | |
|                                 getRectifyNotices.ProjectManagerTime2 = null;
 | |
|                             }
 | |
|                             else
 | |
|                             {
 | |
|                                 getRectifyNotices.ProjectManagerTime2 = DateTime.Now;
 | |
|                             }
 | |
|                         }
 | |
|                         else if (getRectifyNotices.DutyPersonId == flowReceiveItem.OperaterId) //// 接收人
 | |
|                         {
 | |
|                             if (!getRectifyNotices.DutyPersonTime.HasValue)
 | |
|                             {
 | |
|                                 getRectifyNotices.DutyPersonTime = DateTime.Now;                               
 | |
|                             }
 | |
|                         }
 | |
| 
 | |
|                         db.SubmitChanges();
 | |
|                     }
 | |
|                 }
 | |
|                 #endregion
 | |
| 
 | |
|                 #region 处罚通知单
 | |
|                 if (flowReceiveItem.MenuId == Const.ProjectPunishNoticeMenuId)
 | |
|                 {
 | |
|                     var getPunishNotice = db.Check_PunishNotice.FirstOrDefault(x => x.PunishNoticeId == flowReceiveItem.DataId);
 | |
|                     if (getPunishNotice != null)
 | |
|                     {
 | |
|                         if (!string.IsNullOrEmpty(getPunishNotice.ProfessionalEngineerId) && getPunishNotice.ProfessionalEngineerId.Contains(flowReceiveItem.OperaterId)) ////总包专业工程师
 | |
|                         {
 | |
|                             getPunishNotice.ProfessionalEngineerTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.ConstructionManagerId == flowReceiveItem.OperaterId) ////总包施工经理
 | |
|                         {
 | |
|                             getPunishNotice.ConstructionManagerTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.UnitHeadManId == flowReceiveItem.OperaterId) ////相关施工分包单位
 | |
|                         {
 | |
|                             getPunishNotice.UnitHeadManTime = DateTime.Now;
 | |
|                         }
 | |
| 
 | |
|                         db.SubmitChanges();
 | |
|                     }
 | |
|                 }
 | |
|                 #endregion
 | |
| 
 | |
|                 #region 暂停令
 | |
|                 if (flowReceiveItem.MenuId == Const.ProjectPauseNoticeMenuId)
 | |
|                 {
 | |
|                     var getPunishNotice = db.Check_PauseNotice.FirstOrDefault(x => x.PauseNoticeId == flowReceiveItem.DataId);
 | |
|                     if (getPunishNotice != null)
 | |
|                     {
 | |
|                         if (!string.IsNullOrEmpty(getPunishNotice.ProfessionalEngineerId) && getPunishNotice.ProfessionalEngineerId.Contains(flowReceiveItem.OperaterId)) ////总包专业工程师
 | |
|                         {
 | |
|                             getPunishNotice.ProfessionalEngineerTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.ConstructionManagerId == flowReceiveItem.OperaterId) ////总包施工经理
 | |
|                         {
 | |
|                             getPunishNotice.ConstructionManagerTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.UnitHeadManId == flowReceiveItem.OperaterId) ////相关施工分包单位
 | |
|                         {
 | |
|                             getPunishNotice.UnitHeadManTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.SupervisorManId== flowReceiveItem.OperaterId) ////监理
 | |
|                         {
 | |
|                             getPunishNotice.UnitHeadManTime = DateTime.Now;
 | |
|                         }
 | |
|                         else if (getPunishNotice.OwnerId == flowReceiveItem.OperaterId) ////业主
 | |
|                         {
 | |
|                             getPunishNotice.UnitHeadManTime = DateTime.Now;
 | |
|                         }
 | |
|                         db.SubmitChanges();
 | |
|                     }
 | |
|                 }
 | |
|                 #endregion
 | |
|             }
 | |
|         }
 | |
|         #endregion
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 
 | |
|         /// </summary>
 | |
|         /// <param name="userName"></param>
 | |
|         /// <param name="HttpUrl"></param>
 | |
|         /// <param name="LogTxt"></param>
 | |
|         public static void SaveSysHttpLog(string userName, string httpUrl, string logTxt)
 | |
|         {
 | |
|             using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
 | |
|             {
 | |
|                 Model.Sys_HttpLog newLog = new Model.Sys_HttpLog()
 | |
|                 {
 | |
|                     HttpLogId = SQLHelper.GetNewID(),
 | |
|                     LogTime = DateTime.Now,
 | |
|                     UserName = userName,
 | |
|                     HttpUrl = httpUrl,
 | |
|                     LogTxt = logTxt,
 | |
|                 };
 | |
|                 db.Sys_HttpLog.InsertOnSubmit(newLog);
 | |
|                 db.SubmitChanges();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// 获中的照片拍摄日期
 | |
|         /// </summary>
 | |
|         /// <param name="fileName">文件名</param>
 | |
|         /// <returns>拍摄日期</returns>
 | |
|         public static string GetTakePicDate(string fileName)
 | |
|         {
 | |
|             Encoding ascii = Encoding.ASCII;
 | |
|             string picDate;
 | |
|             FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
 | |
|             Image image = Image.FromStream(stream, true, false);
 | |
|             foreach (PropertyItem p in image.PropertyItems)
 | |
|             {
 | |
|                 //获取拍摄日期时间
 | |
|                 if (p.Id == 0x9003) // 0x0132 最后更新时间
 | |
|                 {
 | |
|                     stream.Close();
 | |
|                     picDate = ascii.GetString(p.Value);
 | |
|                     if ((!"".Equals(picDate)) && picDate.Length >= 10)
 | |
|                     {
 | |
|                         // 拍摄日期
 | |
|                         picDate = picDate.Substring(0, 10);
 | |
|                         picDate = picDate.Replace(":", "-");
 | |
|                         return picDate;
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|             stream.Close();
 | |
|             return "";
 | |
|         }
 | |
|     }
 | |
| }
 |