/// <summary> /// 根据appkey和版本查询配置信息 /// </summary> /// <param name="appkey"></param> /// <param name="version"></param> /// <returns></returns> public GroupApiConfigModel GetGroupApiConfigByAppKey(string appkey, string version) { string sql = @" select AppSecret,GroupId,IsValid from GroupApiConfig with(nolock) inner join [group] with(nolock) on GroupApiConfig.groupid=[group].id where AppKey=@AppKey and AppVersion=@AppVersion "; IDbParameters dbParameters = DbHelper.CreateDbParameters(); dbParameters.AddWithValue("AppKey", appkey); dbParameters.AddWithValue("AppVersion", version); var dr = DbHelper.ExecuteReader(Config.SuperMan_Read, sql, dbParameters); GroupApiConfigModel config = null; if (dr.Read()) { config = new GroupApiConfigModel { AppKey = appkey, AppVersion = version }; if (dr["AppSecret"] != null) { config.AppSecret = dr["AppSecret"].ToString(); } if (dr["GroupId"] != null) { config.GroupId = int.Parse(dr["GroupId"].ToString()); } if (dr["IsValid"] != null) { config.IsValid = (byte)int.Parse(dr["IsValid"].ToString()); } } return(config); }
/// <summary> /// 创建集团Api配置 /// </summary> /// <param name="config"></param> /// <returns></returns> public bool CreateGroupApiConfig(GroupApiConfigModel model) { string sql = @" if not exists (select 1 from GroupApiConfig with(nolock) where AppKey=@AppKey and AppVersion=@AppVersion) begin INSERT INTO GroupApiConfig (AppKey ,AppSecret ,AppVersion ,GroupId) VALUES (@AppKey ,@AppSecret ,@AppVersion ,@GroupId);select @@IDENTITY end select 0 "; IDbParameters dbParameters = DbHelper.CreateDbParameters(); dbParameters.AddWithValue("AppKey", model.AppKey); dbParameters.AddWithValue("AppSecret", model.AppSecret); dbParameters.AddWithValue("AppVersion", model.AppVersion); dbParameters.AddWithValue("GroupId", model.GroupId); object i = DbHelper.ExecuteScalar(Config.SuperMan_Write, sql, dbParameters); if (i != null) { return(int.Parse(i.ToString()) > 0); } return(false); }
/// <summary> /// 修改集团api配置 /// </summary> /// <param name="model"></param> /// <returns></returns> public bool UpdateGroupApiConfig(GroupApiConfigModel model) { string sql = " update GroupApiConfig set AppKey=@AppKey,AppSecret=@AppSecret,AppVersion=@AppVersion where GroupId=@id"; IDbParameters dbParameters = DbHelper.CreateDbParameters(); dbParameters.AddWithValue("GroupId", model.GroupId); dbParameters.AddWithValue("AppKey", model.AppKey); dbParameters.AddWithValue("AppSecret", model.AppSecret); dbParameters.AddWithValue("AppVersion", model.AppVersion); int i = DbHelper.ExecuteNonQuery(Config.SuperMan_Write, sql, dbParameters); if (i > 0) { return(true); } return(false); }
/// <summary> /// 重写OnActionExecuting方法 在进入控制器之前验证 sign以及 参数合法性信息 add by caoheyang 20150318 /// </summary> /// <param name="actionContext"></param> public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext) { Stopwatch stop = new Stopwatch(); actionContext.Request.Properties[Key] = stop; stop.Start(); dynamic paramodel = actionContext.ActionArguments["paramodel"]; //当前请求的参数对象 lock (paramodel) { if (actionContext.ModelState.Count > 0 || paramodel == null) //参数错误,请求中止 { actionContext.Response = actionContext.ActionDescriptor.ResultConverter.Convert (actionContext.ControllerContext, ResultModel <object> .Conclude(OrderApiStatusType.ParaError, actionContext.ModelState.Keys)); return; } IGroupProvider groupProvider = new GroupProvider(); GroupApiConfigModel groupCofigInfo = groupProvider.GetGroupApiConfigByAppKey(paramodel.app_key, paramodel.v); LogHelper.LogWriter("groupCofigInfo", new { groupCofigInfo = groupCofigInfo }); if (groupCofigInfo != null && groupCofigInfo.IsValid == 1)//集团可用,且有appkey信息 { string signStr = groupCofigInfo.AppSecret + "app_key" + paramodel.app_key + "timestamp" + paramodel.timestamp + "v" + paramodel.v + groupCofigInfo.AppSecret; string sign = MD5.Encrypt(signStr); LogHelper.LogWriter("签名是否一致:", new { sign = sign, sign1 = paramodel.sign }); if (sign != paramodel.sign) //sign错误,请求中止 { actionContext.Response = actionContext.ActionDescriptor.ResultConverter.Convert (actionContext.ControllerContext, ResultModel <object> .Conclude(OrderApiStatusType.SignError)); return; } else { paramodel.group = ParseHelper.ToInt(groupCofigInfo.GroupId, 0); //设置集团 actionContext.ActionArguments["paramodel"] = paramodel; //更新参数实体 } } else { actionContext.Response = actionContext.ActionDescriptor.ResultConverter.Convert (actionContext.ControllerContext, ResultModel <object> .Conclude(OrderApiStatusType.SignError)); //sign错误,请求中止 return; } } }
/// <summary> /// 修改集团api配置 /// </summary> /// <param name="config"></param> /// <returns></returns> public ResultInfo <bool> UpdateGroupApiConfig(GroupApiConfigModel config) { var result = new ResultInfo <bool> { Message = "", Result = false, Data = false }; try { result.Data = _dao.UpdateGroupApiConfig(config); result.Message = "执行成功"; result.Result = true; } catch (Exception ex) { result.Message = ex.ToString(); result.Result = false; LogHelper.LogWriterFromFilter(ex); } return(result); }
public JsonResult AddGroupConfig(GroupApiConfigModel model) { if (model.GroupId == 0) { return(Json(new ResultModel(false, "集团ID不能为空"))); } if (string.IsNullOrEmpty(model.AppKey)) { return(Json(new ResultModel(false, "集团AppKey不能为空"))); } if (string.IsNullOrEmpty(model.AppVersion)) { return(Json(new ResultModel(false, "集团AppVersion不能为空"))); } var res = iGroupServices.CreateGroupApiConfig(model); if (res.Result) { return(Json(res.Data ? new ResultModel(true, "成功") : new ResultModel(false, "已存在该appkey"))); } return(Json(new ResultModel(false, "服务器异常"))); }
/// <summary> /// 根据appkey和版本查询配置信息 /// </summary> /// <param name="appkey">appkey</param> /// <param name="version">版本号码</param> /// <returns></returns> public GroupApiConfigModel GetGroupApiConfigByAppKey(string appkey, string version) { var redis = new ETS.NoSql.RedisCache.RedisCache(); GroupApiConfigModel model = redis.Get <GroupApiConfigModel>(appkey + version); if (model == null) { GroupApiConfigModel tempmodel = _dao.GetGroupApiConfigByAppKey(appkey, version); if (tempmodel == null) { return(null); } else { redis.Set(appkey + version, tempmodel); return(redis.Get <GroupApiConfigModel>(appkey + version)); } } else { return(model); } }