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 "";
|
|
}
|
|
}
|
|
}
|