/// <summary> /// 设备回调 /// </summary> /// <param name="statusCode">状态码</param> /// <param name="printerCode">打印设备编码</param> /// <param name="faultTime">异常时间</param> public void DeviceCallBack(int statusCode, string printerCode, DateTime faultTime) { LogUtil.Info(string.Format("打印设备回调:发送设备状态通知,设备号:{0},状态码: {1},故障时间:{2}", printerCode, statusCode, faultTime)); //获取设备所属应用信息 McpApplicationInfo app = null; var cc = new ConditionCollection(); cc.Add(new Condition("printer_code", printerCode)); var deviceApps = this.GetRepository <McpMerchantPrinterInfo>().ListModel(cc); var apps = GetApplicationList(); if (deviceApps != null && deviceApps.Count > 0) { foreach (var devApp in deviceApps) { //执行回调更新第三方应用数据状态 app = apps.Find(d => d.AppId.Equals(devApp.AppId, StringComparison.CurrentCultureIgnoreCase)); if (app != null && !string.IsNullOrWhiteSpace(app.AuthCallbackUrl)) { var callbackModel = new CallBackViewModel() { printer_code = printerCode, result_code = statusCode.ToString(), fault_time = faultTime.ToString(RegexConsts.DATETIME_FORMAT), key = app.SignKey }; int status = 0, tryNum = 1; try { status = ExceCallBack(callbackModel, app.AuthCallbackUrl, tryNum); if (status != 1) { System.Threading.Thread.Sleep(delayTryInterval); if (tryNum <= tryMax) { status = ExceCallBack(callbackModel, app.AuthCallbackUrl, ++tryNum); } } } catch (Exception ex) { LogUtil.Error(ex.Message); System.Threading.Thread.Sleep(delayTryInterval); if (tryNum <= tryMax) { status = ExceCallBack(callbackModel, app.AuthCallbackUrl, ++tryNum); } else { throw new MessageException(ex.Message); } } } } } }
/// <summary> /// 新增应用 /// </summary> /// <param name="model">视图数据模型</param> public ProcessResult AddApplyInfo(DevApplyViewModel model) { var result = new ProcessResult(); var url = ""; // 数据校验 result = CheckApplyData(model); if (model.LogoFile != null) { result = LogFileUpload(model.LogoFile); if (result.Result) { url = result.Data; } else { return(result); } } if (result.Result) { // 判断应用Id是否为空 if (!string.IsNullOrEmpty(model.AppId)) { var cc = new ConditionCollection() { new Condition("app_id", model.AppId) }; var dataMode = GetRepository <McpApplicationInfo>().GetModel(cc); dataMode.AppName = model.AppName; dataMode.SignKey = model.SignKey; dataMode.UpdateCallbackUrl = model.UpdateCallbackUrl; dataMode.ModifiedBy = model.ModifiedBy; dataMode.ModifiedOn = CommonUtil.GetDBDateTime(); dataMode.DeveloperId = model.DeveloperId; dataMode.Memo = model.Memo; if (string.IsNullOrEmpty(url) && !string.IsNullOrEmpty(model.LogoPath)) { dataMode.LogoPath = model.LogoPath; } else { dataMode.LogoPath = url; } var count = this.GetRepository <McpApplicationInfo>().Update(dataMode); if (count <= 0) { result.Result = false; result.Msg = "修改应用失败,请与管理员联系"; return(result); } result.Msg = "修改应用成功"; } else { var cc = new ConditionCollection() { new Condition("app_name", model.AppName) }; if (GetRepository <McpApplicationInfo>().IsExists(cc)) { result.Result = false; result.Msg = "应用名称已经在系统中存在,请更换应用名称"; return(result); } var dataMode = new McpApplicationInfo() { AppId = CommonUtil.GetGuidNoSeparator(), AppKey = VerifyCodeUtil.Intance.GenCode(16).ToLower(), AppName = model.AppName, SignKey = model.SignKey, UpdateCallbackUrl = model.UpdateCallbackUrl, LogoPath = url, CreatedBy = model.ModifiedBy, CreatedOn = CommonUtil.GetDBDateTime(), DeveloperId = model.DeveloperId, Memo = model.Memo, StatusCode = Convert.ToInt32(ApplyStatuCode.Operative) }; var appId = this.GetRepository <McpApplicationInfo>().Create(dataMode); if (string.IsNullOrEmpty(appId.ToString())) { result.Result = false; result.Msg = "新增应用失败,请与管理员联系"; return(result); } result.Msg = "新增应用成功"; } result.Result = true; return(result); } return(result); }