コード例 #1
0
        /// <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);
                            }
                        }
                    }
                }
            }
        }
コード例 #2
0
        /// <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);
        }