public void AddShopInfo(ShopInfo item) { int error = 0; do { try { using (var db = _dbFactory.OpenDbConnection()) { item.CreateTime = DateTime.Now; db.Insert(item); } break; } catch (Exception ex1) { error++; Thread.Sleep(10000); LogServer.WriteLog(ex1.Message, "DBError"); } } while (error < 4); }
public static void Main() { int clientCount = 1; var port = 8888; TcpListener serverSocket = new TcpListener(IPAddress.Any, port); serverSocket.Start(); Thread serverListeningMessageOnDisplayThread = new Thread(ServerListeningMessageOnDisplay); serverListeningMessageOnDisplayThread.Start(); while (true) { try { TcpClient client = serverSocket.AcceptTcpClient(); lock (_lock) { clientTable.Add(clientCount, client); } LogServer.Message("Client connected!"); Console.WriteLine("Client connected!"); Thread clientThread = new Thread(HandleClients); clientThread.Start(clientCount); clientCount++; } catch (Exception ex) { LogServer.Error(ex); } } }
public bool DeleteData(int id) { int error = 0; do { try { using (var db = _dbFactory.OpenDbConnection()) { error = db.DeleteById <ShopInfo>(id); return(true); } break; } catch (Exception ex1) { error++; Thread.Sleep(10000); LogServer.WriteLog(ex1.Message, "DBError"); } } while (error < 4); return(false); }
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { Exception ex = e.ExceptionObject as Exception; if (ex != null) { HeartServerInfo hsInfo = this[ex.Source]; if (hsInfo != null) { hsInfo.ReceiveException(ex); } else { LogServer.WriteException("Default AppDomain", ex); Exception subException = ex.InnerException; while (subException != null) { LogServer.WriteException("InnerException", subException); subException = subException.InnerException; } } } }
protected void Page_Load(object sender, EventArgs e) { if (Session["userid"] == null || Session["userid"].ToString() != "23") { string url = HttpContext.Current.Request.Url.PathAndQuery; Response.Redirect("Login.aspx?url=" + url); } var oldnum = Request.Form["oldnumber"]; var newnum = Request.Form["newnumber"]; var method = Request.Form["method"]; if (method == "2" && !string.IsNullOrEmpty(oldnum)) { // 查询 StringBuilder items = new StringBuilder(); var list = new prologDb().GetproLogById(oldnum.Trim()); string head = " <table cellspacing ='0' cellpadding = '0' width = '100%' class='listtable'><tbody><tr><th>编号</th><th>名称</th></tr>"; items.Append(head); foreach (var car in list) { items.AppendFormat("<tr><td>{0}</td><td><a target='_blank' href='http://www.nb77.cn/dealer/index.php?mod=user&ac=refresh&id={2}&page=1'>{1}</a></td></tr>", car.shopNumber, car.proName, car.proid); } items.Append("</table>"); return; } if (!string.IsNullOrEmpty(oldnum) && !string.IsNullOrEmpty(newnum)) { var list = new prologDb().GetproLogById(oldnum.Trim()); if (list.Count == 0) { msg = "没有找到任何车辆信息"; return; } brandList = new BandInfoDb().GetBandInfoByParentNum("0"); foreach (var bandInfo in brandList) { brandReg += bandInfo.BrandName + "|"; } brandReg = brandReg.TrimEnd('|'); foreach (var item in list) { try { addCar(item); } catch (Exception ex) { LogServer.WriteLog("proid:" + item.proid + "error" + ex.Message, "jiexi"); } } msg = "导入完毕共导入" + Items.Count + "条信息"; } //brandList = new BandInfoDb().GetBandInfoByParentNum("0"); //foreach (var bandInfo in brandList) //{ // brandReg += bandInfo.BrandName + "|"; //} //brandReg = brandReg.TrimEnd('|'); //var list = new prologDb().GetproLogById(0, 100); //foreach (var item in list) //{ // try // { // addCar(item); // } // catch (Exception ex) // { // LogServer.WriteLog("proid:" + item.proid + "error" + ex.Message, "jiexi"); // } //} }
static void Main(string[] args) { mServer = new LogServer(); mServer.Open(); Console.Read(); }
static void Main(string[] args) { LogServer server = new LogServer(); server.Run(); }
public void Load(int clientId, string port, string address) { Init(clientId, port, address); m_serviceManager = new ServiceManager(m_clientId); LogServer.LogStatus(STT.General.INFO_GENERAL, $"ServiceManager had been loaded."); }
private object ServiceGenericLogic(ServiceType type, string data) { try { if (OperationContext.Current != null) { IPublishing registeredUser = OperationContext.Current.GetCallbackChannel <IPublishing>(); var result = false; if (!_callbackList.Contains(new KeyValuePair <ServiceType, IPublishing>(type, registeredUser))) { result = _callbackList.TryAdd(type, registeredUser); } } IManager manager; object childManager = null; DataBoundary serializedObject = JsonConvert.DeserializeObject <DataBoundary>(data); if (Services.TryGetValue(type, out manager) && serializedObject != null) { MethodInfo method; if (serializedObject.TypeName != string.Empty && serializedObject.TypeName != null) { method = manager.GetType().GetMethod(serializedObject.TypeName); childManager = method.Invoke(manager, new object[0]); method = childManager.GetType().GetMethod(serializedObject.CommandName); } else { method = manager.GetType().GetMethod(serializedObject.CommandName); } if (method != null) { List <object> parameters = new List <object>(); foreach (var val in serializedObject.Attributes) { var typo = Type.GetType(val.Key.ToString()); if (typo.IsEnum) { parameters.Add(Enum.Parse(typo, val.Value.ToString())); } else { parameters.Add(val.Value.ToString()); } } object result; if (childManager != null) { result = method.Invoke(childManager, parameters.ToArray()); } else { result = method.Invoke(manager, parameters.ToArray()); } serializedObject.Attributes.Clear(); serializedObject.Attributes.Add(method.ReturnType, result); return(JsonConvert.SerializeObject(serializedObject)); } } return(null); } catch (Exception e) { LogServer.LogException(e, General.EXCEPTION_GENERAL); return(null); } }
public LogServer() { _instance = this; }
public static bool UploadWaybill_Node(Model_Waybill_Node node, int customerId, int?parentStorageId) { bool saveUploadDataProgress = false;//是否保存到冷链数据上报进度表 bool isFirstNode = false; try { if (node != null) { LogServer.AddLogText(string.Format("进入创建运单节点逻辑{0},操作时间{1}", node.BaseId, node.operateAt), node.BaseId); string cwMsg = "(上报节点)NodeNumber=" + node.BaseId + ";Content=" + node.Content + ";CustomerId=" + customerId + ";ParentStorageId=" + (parentStorageId == null ? "无" : parentStorageId.ToString()); Console.WriteLine(cwMsg); LogServer.AddLogText(cwMsg, node.BaseId); if (!string.IsNullOrEmpty(node.BaseId) && node.BaseId.Contains(@"\")) { node.BaseId = node.BaseId.Replace(@"\", "").Replace("/", ""); Console.WriteLine("替换运单号中的斜杠:" + node.BaseId); LogServer.AddLogText("替换运单号中的斜杠:" + node.BaseId, node.BaseId); } } string sql = string.Empty; string number = node.BaseId;//PDA传过来的BaseId就是运单号 //Customer=0为自运单,否则为第三方运单 if (customerId != 0) { //第三方运单需要查询关系表获取转换后的运单号 sql = "select number from huadong_tmsorder_waybillbase where relationid='" + number + "' and customerId=" + customerId; number = _SqlHelp.ExecuteScalar <string>(sql); LogServer.AddLogText(string.Format("第三方运单需要查询关系表获取转换后的运单号{0},结果:{1}", sql, number), node.BaseId); } else { LogServer.AddLogText("自运单 :", node.BaseId); } Model_Waybill_Base waybillBase = null;//根据运单号获取到BaseId sql = "select * from waybill_base where number = '" + number + "' order by id desc limit 1"; LogServer.AddLogText("查询运单是否存在:" + sql, node.BaseId); waybillBase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybillBase == null) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? node.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; sql = string.Format("insert into unnecessary_node(baseId,operateAt,storageId,storageName,content,arrived,remarks,inserttime,parentStorageId,customerId) values('{0}', '{1}', {2}, '{3}', '{4}', {5}, '{6}','{7}','{8}','{9}');", node.BaseId, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName, node.Content, (int)node.Arrived, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), parentStorageId, customerId); int insertResult = _SqlHelp.ExecuteNonQuery(sql); saveUploadDataProgress = insertResult > 0; LogServer.AddLogText(remark + ":" + sql + " 执行结果:" + insertResult, node.BaseId); return(true);//运单不存在,将存入暂存表 } else { LogServer.AddLogText("当前运单存在,开始添加节点", node.BaseId); } if (waybillBase.BeginAt == node.operateAt) { isFirstNode = true; } //查询该运单已有的所有节点 List <Model_Waybill_Node> base_NodeList = new List <Model_Waybill_Node>(); sql = "select id, convert(baseId, CHAR) as baseId ,operateAt,storageId,storageName,content,arrived from waybill_node where baseId = " + waybillBase.Id; base_NodeList = _SqlHelp.ExecuteObjects <Model_Waybill_Node>(sql); LogServer.AddLogText("查询该运单已有的所有节点:" + sql + ",查询到的节点条数:" + base_NodeList.Count + "", node.BaseId); foreach (Model_Waybill_Node item in base_NodeList) { //存在内容一致,时间一致的节点时丢弃 if (item.operateAt == node.operateAt) { LogServer.AddLogText(string.Format("内容一致,时间一致的节点丢弃;节点ID[{0}] 节点时间[{1}] 节点内容[{2}]", item.Id, item.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), item.Content), node.BaseId); return(true); } if (item.Arrived == Enum_Arrived.HaveArrived) { if (node.Arrived == Enum_Arrived.HaveArrived) //存在运抵节点时,并且当前上报的也是运抵节点则丢弃 { LogServer.AddLogText("已存在运抵节点,当前也是运抵节点,弃之", node.BaseId); return(true); } else if (node.operateAt >= item.operateAt) //存在运抵节点时,当前节点虽然不是运抵节点但是创建时间比运抵时间大的也丢弃 { LogServer.AddLogText("已存在运抵节点,当前节点时间大于运抵节点时间,弃之", node.BaseId); return(true); } } } List <string> sqlList = new List <string>(); sqlList.Add(string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived,parentStorageId,handleFlag,scanNumber,CustomerId,insertTime) values ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}','{6}','{7}','{8}','{9}','{10}');", waybillBase.Id, node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), node.StorageId, node.StorageName.Replace("[默认]", ""), node.Content, (int)node.Arrived, (parentStorageId == null?-1:parentStorageId), (parentStorageId == null ? -1 : (customerId == 0 ? -1 : 0)), node.BaseId, customerId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); if (node.Arrived == Enum_Arrived.HaveArrived) { sqlList.Add(string.Format("update waybill_base set stage=1 ,signinAt='{0}' where number='{1}';", node.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), number)); //运抵时更新此单的上报优先级(第三方运单) //if (customerId != 0) // sqlList.Add(string.Format("update huadong_tmsorder_waybillbase set handleCount = null,handleLastTime=now() where number = '{0}';", number)); } foreach (string item in sqlList) { LogServer.AddLogText(string.Format("添加节点:{0}", item), node.BaseId); } bool result = _SqlHelp.ExecuteTranstration(sqlList); LogServer.AddLogText("添加结果:" + result.ToString(), node.BaseId); saveUploadDataProgress = result; return(result); } catch (Exception ex) { LogServer.AddLogText("添加节点失败:" + ex.Message, node.BaseId); throw ex; } finally { try { if (customerId != 0 && parentStorageId != null && saveUploadDataProgress) { SaveUploadDataProgress(node, (int)parentStorageId, isFirstNode); } } catch (Exception ex) { LogServer.AddLogText("添加冷链数据上报进度失败,但未影响该节点上报:" + ex.Message, node.BaseId); } } }
///// <summary> ///// 查询运单以前是否存在节点信息,没有超过一个月的节点信息保存到节点表中,超过时间的节点信息删除。 ///// </summary> ///// <param name="waybillList"></param> ///// <returns></returns> //public static int GetNode(List<Model_Waybill_Base> waybillList) //{ // int result = 0; // try // { // //是否存在运单信息 // List<Model_Waybill_Base> numberList = GetExistWaybills(waybillList.Select(l => l.Number).Distinct().ToList()); // foreach (Model_Waybill_Base item in waybillList) // { // //查询unnecessary_node是否存在节点信息 // string sql = string.Format("select * from unnecessary_node where baseId='{0}' ;", item.Number); // List<Model_Waybill_Node> waybillnode = _SqlHelp.ExecuteObjects<Model_Waybill_Node>(sql); // if (waybillnode.Count != 0) // { // //获取id // int baseId = numberList.Find(l => l.Number == item.Number).Id; // foreach (Model_Waybill_Node node in waybillnode) // { // //节点信息超过一个月就删除 // if (node.operateAt.AddMonths(1) > item.BeginAt) // { // sql = string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived) values('{0}','{1}','{2}','{3}','{4}','{5}') ;", // baseId, node.operateAt, node.StorageId, node.StorageName, node.Content, (int)node.Arrived); // result = _SqlHelp.ExecuteNonQuery(sql); // //添加成功后删除节点 // if (result > 0) // { // sql = string.Format("delete from unnecessary_node where id={0} ", node.Id); // _SqlHelp.ExecuteNonQuery(sql); // } // } // else // { // sql = string.Format("delete from unnecessary_node where id={0} ", node.Id); // _SqlHelp.ExecuteNonQuery(sql); // } // } // } // } // } // catch (Exception ex) // { // throw ex; // } // return result; //} /// <summary> /// 上传图片,插入签收拍照信息 /// </summary> /// <param name="postback">签收拍照信息</param> /// <param name="postbackTime">签收拍照时间</param> /// <param name="picList">图片列表</param> /// <returns></returns> public static bool UploadWaybill_Postbacks(Model_Waybill_Postback_Pic postback, DateTime postbackTime, List <object> picList, int customerId = 0) { LogServer.AddLogText(string.Format("开始进入保存图片逻辑{0},DateTime:{1}", postback.BaseId, postbackTime), postback.BaseId); bool result = false; int picIndex = 0;//成功上传的图片数量 if (picList.Count == 0) { LogServer.AddLogText(string.Format("图片列表{0}", picList.Count), postback.BaseId); return(false); } if (string.IsNullOrEmpty(postback.PicName)) { LogServer.AddLogText(string.Format("图片名称{0}", postback.PicName), postback.BaseId); return(false); } string[] picNameArr = postback.PicName.Split('|'); if (picNameArr.Length != picList.Count) { LogServer.AddLogText(string.Format("picNameArr:{0},picList:{1}", picNameArr.Length, picList.Count), postback.BaseId); return(false); } //配置文件中的路径 string filePath = string.Empty; string tempPath = System.Configuration.ConfigurationManager.AppSettings["PostbackPath"]; if (string.IsNullOrEmpty(tempPath)) { LogServer.AddLogText(string.Format("配置文件路径:{0}", tempPath), postback.BaseId); return(false); } string timePath = DateTime.Now.ToString("yyyyMM"); filePath = tempPath + "\\" + timePath; try { string sql = string.Empty; string number = postback.BaseId;//PDA传过来的BaseId就是运单号 //Customer=0为自运单,否则为第三方运单 if (customerId != 0) { //第三方运单需要查询关系表获取转换后的运单号 sql = "select number from huadong_tmsorder_waybillbase where relationid='" + number + "' and customerId=" + customerId; number = _SqlHelp.ExecuteScalar <string>(sql); LogServer.AddLogText(string.Format("查询关联表,huadong_tmsorder_waybillbase:{0},结果:{1}", sql, number), postback.BaseId); if (string.IsNullOrEmpty(number)) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? postback.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder pic = new StringBuilder("insert into temporarypictures(baseId,operateAt,PicName,remarks,inserttime) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); pic.AppendFormat("('{0}', '{1}', '{2}', '{3}', '{4}'),", postback.BaseId, postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), timePath + "/" + fileName, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //picIndex++; } pic.Length -= 1; List <string> sqlpicList = new List <string>(); sqlpicList.Add(pic.ToString()); bool pictures = _SqlHelp.ExecuteTranstration(sqlpicList); LogServer.AddLogText(string.Format("sql:{0},结果:{1}", sql, pictures), postback.BaseId); return(true); } } Model_Waybill_Base waybillBase = null;//根据运单号获取到BaseId sql = "select * from waybill_base where number = '" + number + "' order by id desc limit 1"; waybillBase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybillBase == null) { string remark = "运单[" + (string.IsNullOrEmpty(number) ? postback.BaseId : number) + "]不存在"; remark += "传入的CustomerId=" + customerId; if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder pic = new StringBuilder("insert into temporarypictures(baseId,operateAt,PicName,remarks,inserttime) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); pic.AppendFormat("('{0}', '{1}', '{2}', '{3}', '{4}'),", postback.BaseId, postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), timePath + "/" + fileName, remark, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); //picIndex++; } pic.Length -= 1; List <string> sqlpicList = new List <string>(); sqlpicList.Add(pic.ToString()); bool pictures = _SqlHelp.ExecuteTranstration(sqlpicList); LogServer.AddLogText(string.Format("查询运单,waybill_base:{0},结果:{1}", sql, waybillBase == null ? "未查询到信息" : waybillBase.Number), postback.BaseId); return(true);//运单还未上传,无法上传签收图片 } //List<Model_Waybill_Base> numberList = GetExistWaybills(new List<string> { postback.BaseId }).Distinct().ToList(); //if (numberList.Count == 0) // return true;//运单还未上传,无法上传签收图片 if (!System.IO.Directory.Exists(filePath)) { System.IO.Directory.CreateDirectory(filePath); } StringBuilder sb = new StringBuilder("insert into waybill_postback_pic (baseId,picName) values "); for (int i = 0; i < picList.Count; i++) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i]); MyTool.SaveImage(MyTool.GetGzipPicBytes(picList[i] as byte[]), filePath + "\\" + fileName); sb.AppendFormat("('{0}','{1}'),", waybillBase.Id, timePath + "/" + fileName); picIndex++; } sb.Length -= 1; List <string> sqlList = new List <string>(); sqlList.Add(sb.ToString()); sqlList.Add(string.Format("update waybill_base set picPostbackAt='{0}' where number='{1}'", postbackTime.ToString("yyyy-MM-dd HH:mm:ss"), waybillBase.Number)); result = _SqlHelp.ExecuteTranstration(sqlList); foreach (string item in sqlList) { LogServer.AddLogText(string.Format("sql:{0}", item), postback.BaseId); } LogServer.AddLogText(string.Format("保存结果:{0}", result), postback.BaseId); } catch (Exception ex) { LogServer.AddLogText("保存图片失败:" + ex.Message, postback.BaseId); throw ex; } finally { if (result == false && picIndex > 0) { //失败时删除图片 for (int i = picIndex; i > 0; i--) { string fileName = postback.BaseId + "_" + System.IO.Path.GetFileName(postback.PicName.Split('|')[i - 1]); System.IO.File.Delete(filePath + "\\" + fileName); LogServer.AddLogText(string.Format("失败时删除图片,路径:{0}", filePath + "\\" + fileName), postback.BaseId); } } } return(result); }
/// <summary> /// websocket监听 /// </summary> /// <param name="context"></param> /// <returns></returns> private async Task ProcessRequest(AspNetWebSocketContext context) { var socket = context.WebSocket; string uuid = context.QueryString["uuid"].ToString(); XzyWeChatThread xzy = null; DicSocket dicSocket = new DicSocket() { socket = socket, weChatThread = xzy }; if (_dicSockets.ContainsKey(uuid)) { try { await _dicSockets[uuid].socket.CloseAsync(WebSocketCloseStatus.Empty, string.Empty, CancellationToken.None);//如果client发起close请求,对client进行ack } catch (Exception ex) { LogServer.Info(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "socketErr:" + ex.Message); } } _dicSockets.Add(uuid, dicSocket); while (true) { var buffer = new ArraySegment <byte>(new byte[1024]); var receivedResult = await socket.ReceiveAsync(buffer, CancellationToken.None);//对web socket进行异步接收数据 if (receivedResult.MessageType == WebSocketMessageType.Close) { try { //从连接池移除对象,如果想保持websocket断线后 微信继续执行可以不做此操作 #region 微信注销线程释放 //string myuuid = _dicSockets.Where(p => p.Value.socket.Equals(socket)).FirstOrDefault().Key; //_dicSockets[myuuid].weChatThread.Wx_Logout(); //_dicSockets[myuuid].weChatThread = null; //_dicSockets.Remove(myuuid); #endregion 微信注销线程释放 await socket.CloseAsync(WebSocketCloseStatus.Empty, string.Empty, CancellationToken.None);//如果client发起close请求,对client进行ack } catch (Exception ex) { LogServer.Info(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "socketErr:" + ex.Message); } break; } if (socket.State == System.Net.WebSockets.WebSocketState.Open) { string recvMsg = Encoding.UTF8.GetString(buffer.Array, 0, receivedResult.Count); SocketModel model = JsonConvert.DeserializeObject <SocketModel>(recvMsg); switch (model.action.ToLower()) { case "start": //创建socket await Task.Factory.StartNew(() => { xzy = new XzyWeChatThread(socket); }); break; case "start62": //通过账号密码+62数据登录 await Task.Factory.StartNew(() => { SocketStart62 socketStart62 = JsonConvert.DeserializeObject <SocketStart62>(model.context); xzy = new XzyWeChatThread(socket, socketStart62.username, socketStart62.password, socketStart62.str62); }); break; } } } }
public LogBusiness() { _ls = new LogServer(); }
/// <summary> /// 创建第三方运单 /// </summary> /// <param name="orderInfo"></param> /// <returns>0:处理失败; 1:处理成功; 2:运单已存在</returns> public static int UploadThirdPartyOrder(Model_ThirdPartOrder orderInfo, int customerId = 0) { int result = 0; try { LogServer.AddLogText(string.Format("进入创建第三方运单逻辑{0},操作时间{1}", orderInfo.RelationId, orderInfo.OperateAt), orderInfo.RelationId); if (orderInfo == null) { result = 1; } string sql = string.Empty; Model_ThirdCustomer customerInfo = new Model_ThirdCustomer(); //检查是否已经创建过第三方运单的关联运单 Model_Waybill_Base IsExist = CheckThirdPartyNumberExist(orderInfo.RelationId); LogServer.AddLogText(string.Format("CheckThirdPartyNumberExist:{0}", IsExist != null ? 1 : 0), orderInfo.RelationId); if (IsExist == null) { #region 获取自动生成的运单号 //sql = "select concat('99', 1000000000 + Count(*) + 1) from waybill_base where company = 1"; //object obj = _SqlHelp.ExecuteScalar(sql); string number = string.Empty; string nHead = "981000000000"; if (customerId != 2) { nHead = "991000000000"; } int jLen = orderInfo.RelationId.Length; //if (orderInfo.RelationId.Length >= 12) // jLen = 10; //number = nHead.Substring(0, 12 - orderInfo.RelationId.Length) + orderInfo.RelationId; if (orderInfo.RelationId.Length > 9) { string str1 = orderInfo.RelationId.ToString().Substring(orderInfo.RelationId.Length - 9); number = nHead.Substring(0, 12 - str1.Length) + str1; } else { number = nHead.Substring(0, 12 - orderInfo.RelationId.Length) + orderInfo.RelationId; } LogServer.AddLogText("拼接后的运单号:" + number + "", orderInfo.RelationId); //if (obj != null) //{ // number = obj.ToString(); // if (obj.ToString() == "System.Byte[]") // number = Encoding.Default.GetString(obj as byte[]); //} #endregion #region 旧版通过配置文件获取第三方供应商名称,新版查询根据CustomerID查询 int Huadong_Id = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Huadong_Id"]); string Huadong_Name = System.Configuration.ConfigurationManager.AppSettings["Huadong_Name"]; if (customerId != 0) { Huadong_Id = customerId; customerInfo = PDA_CustomerServer.GetThirdCustomers(customerId).First(); Huadong_Name = customerInfo.CustomerName; } #endregion List <string> sqlList = new List <string>(); //更新关系ID sql = string.Format("update huadong_tms_order set relationId='{0}' where (SHIPDETAILID = '{0}' or LEGCODE = '{0}' )", orderInfo.RelationId); sql += customerId == 0 ? string.Empty : (" and customerId = " + customerId); int count = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText(string.Format("更新第三方运单relationId:{0},结果:{1}", sql, count), orderInfo.RelationId); if (count == 0) { LogServer.AddLogText(string.Format("第三方运单不存在时,先插入一条空信息的运单,待第三方运单同步回来时更新运单信息", orderInfo.RelationId, orderInfo.OperateAt, customerId), orderInfo.RelationId); //第三方运单不存在时,先插入一条空信息的运单,待第三方运单同步回来时更新运单信息 sqlList.Add(string.Format("INSERT INTO `coldchain_logistics_db`.`huadong_tms_order` ( `relationId`, `code`, `SRCEXPNO`, `ROADID`, `SHIPDETAILID`, `TOTALID`, `LEGCODE`, `SHIPMENTCODE`, `CONSIGNORCODE`, `CONSIGNORNAME`, `DEPTNO`, `DEPTNAME`, `CUSTOMERCODE`, `CUSTOMERNAME`, `AREAHOUSE`, `SALESMAN`, `TRANSMODEID`, `ERPTRANSMODENAME`, `OPERATIONTYPE`, `DEMANDARRIVETIME`, `TRANSPORTTYPE`, `ORDERINSTANCY`, `TRANSPORTCATEGORY`, `ROUTENO`, `TRANSDEADLINE`, `FROMGTRANSID`, `FROMGTRANSNAME`, `TOGTRANSID`, `TOGTRANSNAME`, `RECEIVEADDR`, `RECEIVEMAN`, `RECEIVEPHONE`, `CREDATE`, `INOUTFLAG`, `WMSROUTEWAVENO`, `PRINTTYPE`, `TOTALQUNTITY`, `WHOLEQUNTITY`, `PARTQUNTITY`, `JFQUNTITY`, `DESCRIPTION`, `EXTCOL0`, `EXTCOL1`, `EXTCOL2`, `EXTCOL3`, `EXTCOL4`, `EXTCOL5`, `EXTCOL6`, `EXTCOL7`, `EXTCOL8`, `EXTCOL9`, `EXTCOL10`, `EXTCOL11`, `EXTCOL12`, `EXTCOL13`, `EXTCOL14`, `EXTCOL15`, `EXTCOL16`, `EXTCOL17`, `EXTCOL18`, `EXTCOL19`, `senderOrg`, `senderPerson`, `senderTel`, `senderAddress`, `receiverOrg`, `receiverPerson`, `receiverTel`, `receiverAddress`, `SecretKey`, `CreateTime`, `customerId`) VALUES ( '{0}', '', '', '', '{0}', '', '{0}', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 0, 0,0, 0, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '未知', '{1}', '{2}');", orderInfo.RelationId, orderInfo.OperateAt, customerId)); } LogServer.AddLogText("开始添加关联运单", orderInfo.RelationId); //插入本系统自用的关联运单 sqlList.Add(string.Format("insert into huadong_tmsorder_waybillbase(relationId,number{2}) values('{0}', '{1}'{3})", orderInfo.RelationId, number, customerId != 0 ? ",customerId" : "", customerId != 0 ? "," + customerId : "")); string updateReceiverIdSql = string.Empty; if (customerInfo.LinkType == 2) { sql = string.Format("insert into waybill_base (number,senderId,senderOrg,senderPerson,senderTel,senderAddress,receiverId,receiverOrg,receiverPerson, receiverTel, receiverAddress, billingCount, stage, beginAt, signinAt, picPostbackAt, company) select '{4}' as number, {0} as senderId, '{1}' as senderOrg, senderPerson , senderTel , senderAddress ,null as receiverId, receiverOrg , receiverPerson , receiverTel , receiverAddress,(if(isnull(JFQUNTITY),0,JFQUNTITY)) as billingCount, 0 as stage, '{2}' as beginAt, null as signinAt, null as picPostbackAt, 1 as company from huadong_tms_order where (SHIPDETAILID = '{3}' or LEGCODE = '{3}') and customerId={5} limit 1", Huadong_Id, Huadong_Name, orderInfo.OperateAt, orderInfo.RelationId, number, customerId); //宁波医药 updateReceiverIdSql = ("update waybill_base set receiverId = (select Id from customer where BindReceiverOrg=receiverOrg order by lastUpdateTime desc limit 1) where number = '" + number + "'"); } else { sql = string.Format("insert into waybill_base (number,senderId,senderOrg,senderPerson,senderTel,senderAddress,receiverId,receiverOrg,receiverPerson, receiverTel, receiverAddress, billingCount, stage, beginAt, signinAt, picPostbackAt, company) select '{4}' as number, {0} as senderId, '{1}' as senderOrg, EXTCOL12 as senderPerson, '' as senderTel, EXTCOL11 as senderAddress,null as receiverId, CUSTOMERNAME as receiverOrg, RECEIVEMAN as receiverPerson, RECEIVEPHONE as receiverTel, RECEIVEADDR as receiverAddress,0 as billingCount, 0 as stage, '{2}' as beginAt, null as signinAt, null as picPostbackAt, 1 as company from huadong_tms_order where SHIPDETAILID = '{3}' or LEGCODE = '{3}' limit 1", Huadong_Id, Huadong_Name, orderInfo.OperateAt, orderInfo.RelationId, number); //大华东 updateReceiverIdSql = ("update waybill_base set receiverId = (select Id from customer where fullName=receiverOrg order by lastUpdateTime desc limit 1) where number = '" + number + "'"); } sqlList.Add(sql); sqlList.Add(updateReceiverIdSql); foreach (string item in sqlList) { LogServer.AddLogText(item, orderInfo.RelationId); } result = _SqlHelp.ExecuteTranstration(sqlList) ? 1 : 0; LogServer.AddLogText(string.Format("执行结果:{0}", result), orderInfo.RelationId); //回滚暂存表中的可用节点 if (result == 1) { HuaDongFcCoTable(orderInfo.RelationId); HuaDongFcCoPictures(orderInfo.RelationId); } LogServer.AddLogText("创建第三方运单逻辑结束", orderInfo.RelationId); } else { //判断运单操作时间先后,操作时间早的更新后的 if (Convert.ToDateTime(orderInfo.OperateAt) < IsExist.BeginAt) { sql = string.Format("update waybill_base set beginAt='{0}' where number='{1}' ;", orderInfo.OperateAt, IsExist.Number); int updatbeginAt = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText(string.Format("sql:{0},结果:{1}", sql, updatbeginAt), orderInfo.RelationId); result = 1; } else { result = 1; } } } catch (Exception ex) { throw ex; } return(result); }
public List <CarDetialInfo> GetCarList(string carType, string brandNum, string brandType, string carColor, string bianShuQi, decimal minBaojia, decimal maxBaojia, int pageid, int pagecount, string sortKey, string sortType) { int error = 0; do { try { using (var db = _dbFactory.OpenDbConnection()) { var query = db.From <CarDetialInfo>(); if (!string.IsNullOrEmpty(carType)) { query = query.Where(c => c.CarType == carType); } if (!string.IsNullOrEmpty(brandNum)) { query = query.Where(c => c.BrandInfoKey == brandNum); } if (!string.IsNullOrEmpty(brandType)) { query = query.Where(c => c.BrandTypeKey == brandType); } if (!string.IsNullOrEmpty(carColor)) { query = query.Where(c => c.CarColor == carColor); } if (!string.IsNullOrEmpty(bianShuQi)) { query = query.Where(c => c.BianShuQi == bianShuQi); } if (minBaojia > 0) { query = query.Where(c => c.baojia >= minBaojia); } if (maxBaojia > minBaojia) { query = query.Where(c => c.baojia <= maxBaojia); } switch (sortKey) { case "ShangPaiYear": query = sortType == "desc" ? query.OrderByDescending(c => c.ShangPaiYear) : query.OrderBy(c => c.ShangPaiYear); break; case "BrandInfoKey": query = sortType == "desc" ? query.OrderByDescending(c => c.BrandInfoKey) : query.OrderBy(c => c.BrandInfoKey); break; case "baojia": query = sortType == "desc" ? query.OrderByDescending(c => c.baojia) : query.OrderBy(c => c.baojia); break; default: query = query.OrderByDescending(c => c.Id); break; } int skip = (pageid - 1) * pagecount; query = query.Skip(skip).Take(pagecount); return(db.Select(query)); } } catch (Exception ex1) { error++; Thread.Sleep(3000); LogServer.WriteLog(ex1.Message, "DBError"); } } while (error < 4); return(null); }
/// <summary> /// 查询暂存表是否存在运单节点信息,存在保存到节点表中 /// </summary> /// <param name="RelationId">运单号</param> public static void HuaDongFcCoTable(string RelationId) { try { LogServer.AddLogText("开始删除临时表超过一个月的信息", RelationId); //删除超过一个月的数据 string sql = string.Format("delete from unnecessary_node where inserttime<'{0}' ;", DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss")); _SqlHelp.ExecuteNonQuery(sql); //查询关系表是否存在信息 sql = string.Format("select * from huadong_tmsorder_waybillbase where relationId='{0}';", RelationId); LogServer.AddLogText(string.Format("查询关系表是否存在信息{0}", sql), RelationId); Model_Huadong_Tmsorder_Waybillbase huadongbase = _SqlHelp.ExecuteObject <Model_Huadong_Tmsorder_Waybillbase>(sql); if (huadongbase != null) { //查询运单信息是否存在 sql = string.Format("select * from waybill_base where number='{0}'; ", huadongbase.number); LogServer.AddLogText(string.Format("查询运单信息是否存在{0} ", sql), RelationId); Model_Waybill_Base waybbase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybbase != null) { //查询暂存表是否存在节点信息 sql = string.Format("select * from unnecessary_node where baseId='{0}' and operateAt>='{1}';", RelationId, waybbase.BeginAt.ToString("yyyy-MM-dd HH:mm:ss")); LogServer.AddLogText(string.Format("查询暂存表是否存在节点信息{0}", sql), RelationId); List <Model_UnnecessaryNode> waybnode = _SqlHelp.ExecuteObjects <Model_UnnecessaryNode>(sql); if (waybnode.Count != 0) { sql = string.Empty;//清空sql语句 foreach (Model_UnnecessaryNode item in waybnode) { string tempSql = string.Format("insert into waybill_node (baseId,operateAt,storageId,storageName,content,arrived,parentStorageId,handleFlag,scanNumber,customerId,insertTime) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{10}','{8}','{9}') ; ", waybbase.Id, item.operateAt.ToString("yyyy-MM-dd HH:mm:ss"), item.StorageId, item.StorageName, item.Content, (int)item.Arrived, item.ParentStorageId, (item.CustomerId == 0 ? -1 : 0), item.CustomerId, item.InsertTime.ToString("yyyy-MM-dd HH:mm:ss"), item.BaseId); LogServer.AddLogText("插入节点:" + tempSql, RelationId); //查询到的信息保存到节点中 sql += tempSql; //删除暂存表中的信息 tempSql = string.Format("delete from unnecessary_node where id={0} ;", item.Id); LogServer.AddLogText("删除临时节点:" + tempSql, RelationId); sql += tempSql; if (item.Arrived == Enum_Arrived.HaveArrived) { tempSql = string.Format("update waybill_base set stage=1 ,signinAt='{0}' where number='{1}';", item.operateAt, waybbase.Number); LogServer.AddLogText("更新运单运抵时间:" + tempSql, RelationId); sql += tempSql; } } int result = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText("查询到的信息保存到节点中,删除暂存表中的信息", RelationId); } else { LogServer.AddLogText("暂存表不存在节点信息", RelationId); } } else { LogServer.AddLogText("运单信息不存在", RelationId); } } else { LogServer.AddLogText("关系表信息不存在", RelationId); } } catch (Exception ex) { LogServer.AddLogText("HuaDongFcCoTable异常:" + ex.Message, RelationId); } }
public void LogServer_PerformingClientOnClose_ShouldCallAction_And_OnMessage_ShouldTryConsume_Fails() { //--------------------------------Arrange------------------------------- var mockStreamConfig = new Mock <IStreamConfig>(); var mockPublisher = new Mock <IPublisher>(); var mockLeaderConnection = new Mock <IConnection>(); var mockSourceConnectionFactory = new Mock <ISourceConnectionFactory>(); var mockAuditCommandConsumerFactory = new Mock <IAuditCommandConsumerFactory>(); var mockAuditCommandConsumer = new Mock <IAuditCommandConsumer>(); mockAuditCommandConsumerFactory.Setup(o => o.New(It.IsAny <SeriLogConsumer>(), It.IsAny <IWebSocketConnection>(), It.IsAny <IWriter>())) .Returns(mockAuditCommandConsumer.Object); var serializer = new JsonSerializer(); var testMessage = serializer.Serialize <AuditCommand>(new AuditCommand()); var falseException = new Exception("False exception from LogServerTests.cs"); mockPublisher.Setup(o => o.Publish(It.IsAny <byte[]>())).Throws(falseException); mockLeaderConnection.Setup(o => o.NewPublisher(It.IsAny <IStreamConfig>())).Returns(mockPublisher.Object); mockSourceConnectionFactory.Setup(o => o.NewConnection()).Returns(mockLeaderConnection.Object); var mockLoggerSource = new Mock <ILoggerSource>(); mockLoggerSource.Setup(ls => ls.NewConnection(It.IsAny <ILoggerConfig>())).Returns(new Mock <ILoggerConnection>().Object); var mockLoggerContext = new Mock <ILoggerContext>(); mockLoggerContext.Setup(l => l.LoggerConfig).Returns(new Mock <ILoggerConfig>().Object); mockLoggerContext.Setup(l => l.Source).Returns(mockLoggerSource.Object); mockLoggerContext.Setup(o => o.LeaderSource).Returns(mockSourceConnectionFactory.Object); mockLoggerContext.Setup(o => o.LeaderConfig).Returns(mockStreamConfig.Object); Action <IWebSocketConnection> performedAction = null; var mockWebSocketServerWrapper = new Mock <IWebSocketServerWrapper>(); mockWebSocketServerWrapper.Setup(ws => ws.Start(It.IsAny <Action <IWebSocketConnection> >())).Callback((Action <IWebSocketConnection> a) => { performedAction = a; }); var mockWebSocketServerFactory = new Mock <IWebSocketServerFactory>(); mockWebSocketServerFactory.Setup(ws => ws.New(It.IsAny <string>())).Returns(mockWebSocketServerWrapper.Object); var consoleString = ""; var mockWriter = new Mock <IWriter>(); mockWriter.Setup(w => w.WriteLine(It.IsAny <string>())).Callback((string s) => { consoleString = s; }); var logServer = new LogServer(mockWebSocketServerFactory.Object, mockWriter.Object, mockLoggerContext.Object, mockAuditCommandConsumerFactory.Object); var mockClient = new Mock <IWebSocketConnection>(); mockClient.SetupAllProperties(); var clients = new List <IWebSocketConnection> { mockClient.Object }; logServer.Start(clients); performedAction(mockClient.Object); mockClient.Object.OnMessage(Encoding.UTF8.GetString(testMessage)); //--------------------------------Act----------------------------------- mockClient.Object.OnClose(); //--------------------------------Assert-------------------------------- Assert.AreEqual(0, clients.Count); mockAuditCommandConsumerFactory.Verify(o => o.New(It.IsAny <SeriLogConsumer>(), It.IsAny <IWebSocketConnection>(), It.IsAny <IWriter>())); }
/// <summary> /// 查询临时图片表是否存在图片信息,存在保存到图片表中 /// </summary> /// <param name="RelationId"></param> public static void HuaDongFcCoPictures(string RelationId) { try { LogServer.AddLogText("开始删除临时图片表超过一个月的信息", RelationId); //删除超过一个月的数据 string sql = string.Format("delete from temporarypictures where inserttime<'{0}' ;", DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss")); _SqlHelp.ExecuteNonQuery(sql); //查询关系表是否存在信息 sql = string.Format("select * from huadong_tmsorder_waybillbase where relationId='{0}';", RelationId); Model_Huadong_Tmsorder_Waybillbase huadongbase = _SqlHelp.ExecuteObject <Model_Huadong_Tmsorder_Waybillbase>(sql); if (huadongbase != null) { //查询运单信息是否存在 sql = string.Format("select * from waybill_base where number='{0}'; ", huadongbase.number); Model_Waybill_Base waybbase = _SqlHelp.ExecuteObject <Model_Waybill_Base>(sql); if (waybbase != null) { //查询临时图片表是否存在图片信息 sql = string.Format("select * from temporarypictures where baseId='{0}' and operateAt>='{1}';", RelationId, waybbase.BeginAt.ToString("yyyy-MM-dd HH:mm:ss")); List <Model_TemporaryPictures> waybnode = _SqlHelp.ExecuteObjects <Model_TemporaryPictures>(sql); if (waybnode.Count != 0) { sql = string.Empty;//清空sql语句 foreach (Model_TemporaryPictures item in waybnode) { string tempSql = string.Format("insert into waybill_postback_pic(baseId,picName) values({0},'{1}') ; ", waybbase.Id, item.PicName); LogServer.AddLogText("插入图片:" + tempSql, RelationId); //查询到的信息保存到节点中 sql += tempSql; //删除暂存表中的信息 tempSql = string.Format("delete from temporarypictures where id={0} ;", item.id); LogServer.AddLogText("删除临时图片:" + tempSql, RelationId); sql += tempSql; tempSql = string.Format("update waybill_base set picPostbackAt='{0}' where number='{1}';", item.operateAt, waybbase.Number); LogServer.AddLogText("更新运单图片时间:" + tempSql, RelationId); sql += tempSql; } int result = _SqlHelp.ExecuteNonQuery(sql); LogServer.AddLogText("临时图片信息保存到图片表,删除临时图片表中的信息,结果:" + result, RelationId); } else { LogServer.AddLogText(string.Format("图片表不存在图片信息,sql:{0},结果:{1}", sql, waybnode.Count), RelationId); } } else { LogServer.AddLogText(string.Format("运单信息不存在,sql:{0},结果:{1}", sql, waybbase == null ? "没有信息" : "1"), RelationId); } } else { LogServer.AddLogText(string.Format("关联信息不存在,sql:{0},结果:{1}", sql, huadongbase == null ? "没有信息" : "1"), RelationId); } } catch (Exception ex) { LogServer.AddLogText("HuaDongFcCoTable异常:" + ex.Message, RelationId); } }
/// <summary> /// 启动程序 /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { #region Cors跨域需要添加以下代码 //services.AddCors(c => //{ // //控制器中[EnableCors("AllRequests")]名字需对应 // c.AddPolicy(CorsName, // policy => policy // .AllowAnyOrigin() // .AllowAnyMethod()//允许任何方式 // .AllowAnyHeader());//允许任何头//允许cookie //}); //services.AddCors(op => //{ op.AddPolicy("cors", // set => { set.SetIsOriginAllowed(origin => true) // .AllowAnyHeader().AllowAnyMethod().AllowCredentials(); }); }); #endregion services.AddSignalR(); #region 配置启动程序 //获取appsettings.json文件Default节点下面的连接字符串 var sqlconn = Configuration.GetConnectionString("SqlserverDefault"); LogServer.WriteLog("20190107", "数据库链接字符串", sqlconn); //第一个参数传入连接字符串 , 第二个参数指明执行迁移的程序集 //options.UseSqlServer(sqlconn,b=>b.MigrationsAssembly("CorePractice") 如果事WebApi 项目的话需要加services.AddEntityFrameworkSqlServer().AddDbContext services.AddEntityFrameworkSqlServer().AddDbContext <UwlDbContext>(options => options.UseSqlServer(sqlconn, b => b.MigrationsAssembly("UwlAPI.Tools"))); #endregion services.AddControllers(mvc => { //全局路由权限公约,给路由添加Authorize特性 mvc.Conventions.Insert(0, new GlobalRouteAuthorizeConvention()); //mvc.Conventions.Insert(0, new AddRoutePrefixFilter(new RouteAttribute(RoutePrefix.Name))); }); #region Swagger services.SwaggerConfigureExtension(); #endregion #region No.1 官方的JWT验证 简单的策略授权(简单版) //services.AddAuthorization(options => //{ // options.AddPolicy("Client", policy => policy.RequireRole("Client").Build()); // options.AddPolicy("Admin", policy => policy.RequireRole("Admin").Build()); // options.AddPolicy("SystemOrAdmin", policy => policy.RequireRole("Admin", "System")); // options.AddPolicy("SystemOrAdminOrOther", policy => policy.RequireRole("Admin", "System", "Other")); //}); //services.AddAuthentication(options => //{ // options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; // options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; //}).AddJwtBearer(jwt=> //{ // jwt.TokenValidationParameters = TokenValidationParameters; //}); #endregion #region No.2 中间件授权认证方式 使用此认证需要在Configure里面放开app.UseMiddleware<JwtTokenAuth>();取消注释所有控制器的[Authorize(Policy = "Admin")] 并且注释掉[Authorize] //中间件签名过期无效待解决——————需要自己写鉴权方式,前名是否过期……????????????????????????????????? //基于角色的策略授权(简单版) + 自定义认证中间件 //services.AddAuthorization(options => //{ // options.AddPolicy("Client", policy => policy.RequireRole("Client").Build()); // options.AddPolicy("Admin", policy => policy.RequireRole("Admin").Build()); // options.AddPolicy("AdminOrClient", policy => policy.RequireRole("AdminOrClient").Build()); //}); // 2【认证】、然后在下边的configure里,配置中间件即可: // app.UseMiddleware<JwtTokenAuth>(); //services.AddAuthorization(options => //{ // options.AddPolicy("Client", policy => policy.RequireRole("Client").Build()); // options.AddPolicy("Admin", policy => policy.RequireRole("Admin").Build()); // options.AddPolicy("SystemOrAdmin", policy => policy.RequireRole("Admin", "System")); // options.AddPolicy("SystemOrAdminOrOther", policy => policy.RequireRole("Admin", "System", "Other")); //}); //services.AddAuthentication(options => //{ // options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; // options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; //}).AddJwtBearer(jwt => //{ // jwt.TokenValidationParameters = TokenValidationParameters; //}); #endregion #region No.3 复杂策略授权 + 官方JWT认证 services.AddHttpContextExtension(); services.AuthExtension(); #endregion #region 添加automapper实体映射,如果存在相同字段则自动映射 services.AddAutoMapper(GetType()); //注册需要自动映射的实体类 _mapperConfiguration = new MapperConfiguration(cfg => { //初始化自动映射类 cfg.AddProfile <MyProfile>(); }); //将自动映射属性封装为静态属性 MyMappers.ObjectMapper = _mapperConfiguration.CreateMapper(); services.AddScoped <MyProfile>();//注入自动映射类 #endregion #region 接口控制反转依赖注入 -netcore自带方法 services.ServerExtension(); services.RepositotyExtension(); #endregion #region 缓存和任务调度中心使用 单例模式注入生命周期 services.CommonExtension(); services.JobExtension(); #endregion }
public override void SendData(int clientId, string data) { LogServer.LogStatus(STT.General.INFO_GENERAL, $"CommClientNotifier client ID= {clientId}send data to server side. "); CommClientNotifier.Instance.StringDataToServerEvent?.Invoke(clientId, data); }