public ApiResult <AutoPreview> Preview(string id, string type) { //check if (type.IsNullOrEmpty() || type == "undefined") { return(ApiResult.Failure <AutoPreview>("类型不能为空")); } if (id.IsNullOrEmpty()) { return(ApiResult.Failure <AutoPreview>("id不能为空")); } var typeIntance = type.GetTypeByName(); var find = type.GetInstanceByName(); if (find == null || typeIntance == null) { return(ApiResult.Failure <AutoPreview>($"类型不存在,请确认{type}输入是否正确")); } //entity if (find is IEntity) { var obj = Dynamics.DynamicService.ResolveMethod(typeIntance.Name, "GetViewById", id); var autoPreview = AutoPreviewMapping.Convert(obj); return(ApiResult.Success(autoPreview)); } //Auto preview if (find is IAutoPreview set) { var autoPreview = set.GetPreview(id, AutoModel); return(ApiResult.Success(autoPreview)); } return(ApiResult.Success(AutoPreviewMapping.Convert(find.GetType().FullName))); }
public async Task <IActionResult> Add([FromForm] ApiAppData data) { string fileName = ""; if (data.file != null) { var fileExName = data.file.FileName.Substring(data.file.FileName.LastIndexOf(".")); fileName = Guid.NewGuid().ToString("N") + fileExName; var saveFile = Path.Combine(Ptilopsis.Config.Get().AppZipPath, fileName); using (FileStream fs = System.IO.File.Create(saveFile)) { await data.file.CopyToAsync(fs); fs.Flush(); } } //储存对象 PtiApp app = new PtiApp() { Name = data.name, ZipFile = fileName, DefaultRunCmd = data.runCmd, Description = data.description, CreateDate = DateTime.Now }; app.Id = MD5Helper.getMd5Hash(app.Name); if (AppManager.Get().AddApp(app)) { return(ApiResult.OK()); } else { return(ApiResult.Failure("程序添加失败")); } }
public ApiResult SaveOrderAddress([FromBody] AddressInput parameter) { if (parameter == null) { return(ApiResult.Failure("所在地区不能为空")); } var regex = RegexHelper.ChinaMobile.IsMatch(parameter.Mobile); if (!regex) { return(ApiResult.Failure("联系电话格式不正确")); } if (parameter.Mobile.IsNullOrEmpty()) { return(ApiResult.Failure("联系电话不能为空")); } if (parameter.Address.IsNullOrEmpty()) { return(ApiResult.Failure("详细地址不能为空")); } if (parameter.Name.IsNullOrEmpty()) { return(ApiResult.Failure("收货人姓名不能为空")); } if (!this.IsFormValid()) { return(ApiResult.Failure(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } var serviceResult = Resolve <IUserAddressService>().SaveOrderAddress(parameter); return(ToResult(serviceResult)); }
public override void OnActionExecuting(ActionExecutingContext context) { // api接口可以匿名访问,不需要任何安全措施 if (context.Filters.OfType <IAllowAnonymousFilter>().Any()) { return; } //基础api接口权限检查 var token = GetAccessToken(); if (token.Status != ResultStatus.Success) { context.Result = new JsonResult(ApiResult.Failure(token.Message, token.MessageCode)); } // 用户权限检查,比如管理员、会员、供应商等权限的检查 token = UserAccessToken(context); if (token.Status != ResultStatus.Success) { context.Result = new JsonResult(ApiResult.Failure(token.Message, token.MessageCode)); } base.OnActionExecuting(context); }
public ApiResult <List <KeyValue> > Preview([FromQuery] PreviewInput parameter) { if (!this.IsFormValid()) { return(ApiResult.Failure <List <KeyValue> >(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } var view = Resolve <IRewardService>().GetRewardView(parameter.Id.ConvertToLong()); if (view == null) { return(ApiResult.Failure <List <KeyValue> >("该分润记录不存在!")); } //var result = view.Reward.ToKeyValues(); var result = AutoMapping.SetValue <RewardPriviewOutput>(view.Reward); result.MoneyTypeName = view.MoneyTypeName; //result.StatusName = view.Status.GetDisplayName(); result.OrderUserName = view.OrderUser.UserName; return(ApiResult.Success(result.ToKeyValues())); }
public ApiResult FindPayPassword([FromBody] FindPasswordInput parameter) { if (!this.IsFormValid()) { return(ApiResult.Failure(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } parameter.UserName = parameter.Mobile; if (!Resolve <IOpenService>().CheckVerifiyCode(parameter.Mobile, parameter.MobileVerifiyCode.ConvertToLong()) ) { return(ApiResult.Failure("手机验证码错误", MessageCodes.ParameterValidationFailure)); } var result = Resolve <IUserDetailService>().FindPayPassword(parameter); if (!result.Succeeded) { return(ApiResult.Failure(result.ToString(), MessageCodes.ParameterValidationFailure)); } return(ApiResult.Success("支付密码修改成功")); }
private static async Task <ApiResult> InvokeAsync(this HttpClient @this, HttpRequestMessage request, Func <HttpClient, HttpRequestMessage, CancellationToken, Task <HttpResponseMessage> > invocation, CancellationToken cancellationToken) { @this.ThrowIfNull(typeof(HttpClient).Name.ToLower()); request.ThrowIfNull(nameof(request)); invocation.ThrowIfNull(nameof(invocation)); cancellationToken.ThrowIfNull(nameof(cancellationToken)); ApiResult apiResult; try { var response = await invocation(@this, request, cancellationToken); apiResult = await response.ToApiResult(request); } catch (Exception e) { apiResult = ApiResult.Failure(request, e); } return(apiResult); }
public ApiResult ToExcel([FromQuery] string type) { AutoModel.Query = Query; var dataResult = Resolve <IAutoTableService>().Table(type, QueryDictionary().ToJsons(), AutoModel); if (!dataResult.Item1.Succeeded) { return(ApiResult.Failure(dataResult.Item1.ErrorMessages.ToString())); } var modelType = type.GetTypeByName(); if (type.IsNullOrEmpty() || type == "undefined") { return(ApiResult.Failure(new { File = "" }, "失败: 类型不能为空")); } var autoTable = dataResult.Item2; try { var result = Resolve <IAdminTableService>().ToExcel(modelType, autoTable.Result); var index = result.Item2.LastIndexOf(@"\wwwroot\"); if (index < 0) { return(ApiResult.Failure(new { File = "" }, "失败: 文件生成失败")); } var fileBytes = System.IO.File.ReadAllBytes(result.Item2); var file = File(fileBytes, "application/x-msdownload", result.Item3); var path = $"{result.Item2.Substring(index)}".Replace(@"\", "/"); return(ApiResult.Success(path)); } catch (Exception ex) { return(ApiResult.Failure(new { File = "" }, ex.Message)); } }
public ApiResult GetStoreOrdersToExcel(StoreOrdersToExcel model) { var webSite = Resolve <IAutoConfigService>().GetValue <WebSiteConfig>(); var store = Resolve <IStoreService>().GetSingle(u => u.UserId == model.UserId); if (store == null) { return(ApiResult.Failure("非法操作")); } var query = new ExpressionQuery <Order> { PageIndex = 1, PageSize = 15 }; // query.And(u => u.StoreId == store.Id); query.And(u => u.OrderStatus == model.Status); var view = Resolve <IOrderService>().GetPagedList(query); var orders = new List <Order>(); foreach (var item in view) { TimeSpan ts = DateTime.Now.Subtract(item.CreateTime); if (ts.Days < model.Days) { orders.Add(item); } } view.Result = orders; var modelType = "Order".GetTypeByName(); var result = Resolve <IAdminTableService>().ToExcel(modelType, view); var url = webSite.ApiImagesUrl + "/wwwroot/excel/" + result.Item3; return(ApiResult.Success(url)); }
public ApiResult <List <KeyValue> > QueryField(string type) { var find = type.GetAllPropertys(); if (find == null) { return(ApiResult.Failure <List <KeyValue> >("类型不存在")); } var list = new List <KeyValue>(); foreach (var item in find) { if (item.Property.PropertyType == typeof(decimal) || item.Property.PropertyType == typeof(Enum) || item.Property.PropertyType.BaseType == typeof(Enum) || item.Property.PropertyType == typeof(int) || item.Property.PropertyType == typeof(long) || item.Property.PropertyType == typeof(short)) { if (item.Property.Name == "Id") { continue; } var key = new KeyValue { Name = $"{item.DisplayAttribute.Name}({item.Property.Name})", Value = item.Property.Name, Key = item.Property.Name }; list.Add(key); } } return(ApiResult.Success(list)); }
public IHttpActionResult LogOn([FromBody] LoginRequest request) { var result = _service.LogOn(request); if (result.Success) { var account = ((OpResult <Account>)result).Result; string token; if (string.IsNullOrWhiteSpace(account.EmailVerificationCode)) { token = CreateFullyAuthorizedToken(request.UserName); } else { token = CreateEmailVerificationRequiredToken(request.UserName); } return(Json(ApiResult.Success(new { jwt = token }))); } return(Json(ApiResult.Failure(result.Errors))); }
public ApiResult <List <KeyValue> > All(string type) { var find = type.GetAllPropertys(); if (find == null) { return(ApiResult.Failure <List <KeyValue> >("类型不存在")); } var list = new List <KeyValue>(); foreach (var item in find) { var key = new KeyValue { Name = $"{item.DisplayAttribute.Name}({item.Property.Name})", Value = item.Property.Name, Key = item.Property.Name }; list.Add(key); } return(ApiResult.Success(list)); }
public ApiResult <Coupon> GetCouponView([FromQuery] string id = "") { var view = new Coupon(); if (!this.IsFormValid()) { return(ApiResult.Failure <Coupon>(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } if (!string.IsNullOrEmpty(id) && !id.Equals("undefined")) { view = Resolve <ICouponService>().GetSingle(id.ToObjectId()); if (view != null) { if (view.StartPeriodOfValidity.ToString() != "0001/1/1 0:00:00" || view.EndPeriodOfValidity.ToString() != "0001/1/1 0:00:00") { view.AfterDays = -1; } } } return(ApiResult.Success(view)); }
public ApiResult <AutoPreview> Preview([FromQuery] PreviewInput parameter) { if (!this.IsFormValid()) { return(ApiResult.Failure <AutoPreview>(this.FormInvalidReason(), MessageCodes.ParameterValidationFailure)); } var userOutPut = Resolve <IUserDetailService>().GetUserOutput(parameter.Id.ConvertToLong()); if (userOutPut == null) { return(ApiResult.Failure <AutoPreview>("用户不存在或者已经删除!")); } //if (!(userOutPut.ParentId == parameter.LoginUserId || userOutPut.Id == parameter.LoginUserId)) { // return ApiResult.Failure<List<KeyValue>>("对不起您无权查看!"); //} //var result = userOutPut.ToKeyValues(); return(ApiResult.Success(new AutoPreview { KeyValues = userOutPut.ToKeyValues() })); }
public async Task <ApiResult> VerifyApiKey(string username, string apikey) { ApiResult apiresult = new ApiResult(); if (String.IsNullOrWhiteSpace(username)) { return(apiresult.Failure("Invalid Username.")); } if (apikey?.Length != HashUtils.APIKeyLength256) { return(apiresult.Failure("Invalid APIKey.")); } if (this.UserContext == null) { return(apiresult.Failure("You do not have permission to perform this action.")); } if (!this.UserContext.IsVerifiedLogin) { return(apiresult.Failure("Login Credentials Expired. Try Relogging In.")); } DBLogin dbLogin; try { dbLogin = await DBLogin.SP_Account_Login_GetAsync(WebAppContext.Factory, username, apikey).ConfigureAwait(false); } catch (Exception ex) { return(apiresult.Failure(ex)); } if (dbLogin != null && HashUtils.VerifyHashMatch256(apikey, dbLogin.UserName, dbLogin.APIKeyHash)) { apiresult.Success("Is Valid ApiKey"); } else { apiresult.Failure("ApiKey is Invalid"); } return(apiresult); }
public ApiResult <ProductDetailView> Show(long id, long userId = 0) { ObjectCache.Remove("ApiProduct_" + id); return(ObjectCache.GetOrSet(() => { var result = Resolve <IProductService>().Show(id, userId); if (result.Item1.Succeeded) { var productDetail = result.Item2.MapTo <ProductDetailView>(); var config = Resolve <IAutoConfigService>().GetValue <MemberDiscountConfig>(); if ((AutoModel?.BasicUser?.Id ?? 0) != 0) { userId = AutoModel.BasicUser.Id; } var loginUser = Resolve <IUserService>().GetSingle(userId); var isAdmin = Resolve <IUserService>().IsAdmin(userId); productDetail.IsFrontShowPrice = true; productDetail.DisplayPrice = Resolve <IProductService>() .GetDisplayPrice(productDetail.Price, productDetail.PriceStyleId, 0M); if (productDetail?.ProductExtensions?.ProductSkus?.Count > 0) { productDetail.ProductExtensions.ProductSkus.Foreach(x => x.DisplayPrice = Resolve <IProductService>() .GetDisplayPrice(productDetail.Price, productDetail.PriceStyleId, 0M)); } //bniuniu 不进行该判断 StringValues isTenant = string.Empty; if (Request.Headers.TryGetValue("zk-tenant", out isTenant)) { var tenant = Resolve <IUserService>().GetSingle(s => s.Mobile == isTenant.FirstOrDefault()); //如果有租户头 判断是否为空 ,如果不为空则表示有值 //if (isTenant.Where(s => !(string.IsNullOrEmpty(s) || s == "null"||s== "[object Null]")).Count() <= 0) if (tenant == null) //不是租户 则判断是否显示价格 { if (loginUser == null) { productDetail.IsFrontShowPrice = false; productDetail.PriceAlterText = config.PriceAlterText; } else if (!isAdmin && loginUser.GradeId == Guid.Parse("72BE65E6-3000-414D-972E-1A3D4A366000")) { productDetail.IsFrontShowPrice = config.IsFrontShowPrice; productDetail.PriceAlterText = config.PriceAlterText; } } } else { //如果没有该头部 直接判断 if (loginUser == null) { //未登录直接不允许查看 productDetail.IsFrontShowPrice = false; productDetail.PriceAlterText = config.PriceAlterText; } else if (!isAdmin && loginUser.GradeId == Guid.Parse("72BE65E6-3000-414D-972E-1A3D4A366000")) { //如果不是管理员 且 会员等级为免费会员 productDetail.IsFrontShowPrice = config.IsFrontShowPrice; productDetail.PriceAlterText = config.PriceAlterText; } } return ApiResult.Success(productDetail); } return ApiResult.Failure <ProductDetailView>(result.Item1.ToString()); }, "ApiProduct_" + id).Value); }
public ApiResult SendRaw(string mobile, string message) { //验证手机 if (!CheckMobile(mobile)) { return(ApiResult.Failure()); } //验证消息是否为空 if (string.IsNullOrWhiteSpace(message)) { throw new ArgumentNullException(nameof(message)); } //先使用v2 var res = Ioc.Resolve <ISmsService>().Sent(mobile, message); if (res.Code.ToUpper().Equal("SUCCESS")) { return(ApiResult.Success()); } //记录错误 Ioc.Resolve <ITableService>().Log($"V2=>{mobile},{message};res=>{res.ToJson()}", LogsLevel.Error); //如果发送不成功尝试使用V1版本 // 循环发送五次,确保发送率更高 ////令牌未获取 //if (_serverAuthenticationManager.Token == null || _serverAuthenticationManager.Token.Token.IsNullOrEmpty()) { // var msg = "短信发送失败,未授权" + mobile + message; // Ioc.Resolve<ITableService>().Log(msg, LogsLevel.Warning); // // 重新授权一次,反正授权失败 // Authentication(); // BaseService(); //} ////令牌过期 //if (_serverAuthenticationManager.Token.ExpiresTime < DateTime.Now) { // var msg = "短信发送失败,授权已过期" + mobile + message; // Ioc.Resolve<ITableService>().Log(msg, LogsLevel.Warning); // //令牌过期 重新授权一次 // Authentication(); // BaseService(); //} ////如果两次判断令牌还没 则直接返回 //if (_serverAuthenticationManager.Token == null || _serverAuthenticationManager.Token.Token.IsNullOrEmpty()) // return ApiResult.Failure(); //var count = 0; //while (count < 5) { // count++; // //发送 // var result = _messageApiClient.SendRaw(_serverAuthenticationManager.Token.Token, mobile, message, // HttpWeb.Ip); // if (result.Status != ResultStatus.Success) { // var msg = // $"授权服务端短信发送失败:发送次数{count},{result.Message},_serverAuthenticationManager.Token.:{_serverAuthenticationManager.Token},_serverAuthenticationManager.Token.Token:{_serverAuthenticationManager.Token.Token}"; // Ioc.Resolve<ITableService>().Log(msg, LogsLevel.Error); // } else { // return ApiResult.Success(); // } //} return(ApiResult.Failure()); }
public ApiResult UpdatePassword([FromBody] ViewAdminEdit view) { var passwordInput = new PasswordInput { Password = view.Password, ConfirmPassword = view.ConfirmPassword, UserId = view.EditUserId }; var editUser = Resolve <IUserService>().GetSingle(view.EditUserId); if (editUser == null) { return(ApiResult.Failure("要编辑的用户ID对应用户信息不存在")); } view.User = editUser; //修改登录密码 if (view.Type == 1) { passwordInput.Type = PasswordType.LoginPassword; var reuslt = Resolve <IUserDetailService>().ChangePassword(passwordInput, false); if (reuslt.Succeeded) { Resolve <IUserService>() .Log($"管理员修改会员的登录密码,会员ID为{view.User.Id},会员名{view.User.UserName},姓名{view.User.Name}"); if (view.SendPassword) { // _messageManager.AddRawQueue(view.User.Mobile, // $"管理员已成功修改了您的登录密码,新的登录密码为{view.Password},请尽快登录系统,并修改登录密码"); } } else { return(ApiResult.Failure("服务异常:登录密码修改失败,请稍后在试")); } } if (view.Type == 2) { passwordInput.Type = PasswordType.PayPassword; var reuslt = Resolve <IUserDetailService>().ChangePassword(passwordInput, false); if (reuslt.Succeeded) { Resolve <IUserService>().Log( $"管理员修改会员的支付密码,会员ID为{view.User.Id},会员名{view.User.UserName},姓名{view.User.Name}" ); if (view.SendPassword) { // _messageManager.AddRawQueue(view.User.Mobile, // $"管理员已成功修改了您的支付密码,新的登录密码为{view.Password},请尽快登录系统,并修改支付密码"); } } else { return(ApiResult.Failure("服务异常:支付密码修改失败,请稍后在试" + reuslt)); } } return(ApiResult.Success("密码修改成功")); }
public ApiResult Save([FromBody] CategoryView view) { //如果id为空就判断是否存在 if (view.Id != Guid.Empty) { //判断重复 var confrim = Resolve <ICategoryService>() .Count(s => s.Name == view.Name && s.PartentId != view.PartentId); if (confrim > 0) { return(ApiResult.Failure("已存在同名类目!")); } } else { //判断重复 var confrim = Resolve <ICategoryService>().Count(s => s.Name == view.Name); if (confrim > 0) { return(ApiResult.Failure("已存在同名类目!")); } } //销售属性 var saleDistinct = view.SalePropertys.GroupBy(p => new { p.Name }).Select(g => g.First()).ToList(); if (saleDistinct.Count() < view.SalePropertys.Count) { return(ApiResult.Failure("已存在同名销售属性!")); } foreach (var item in view.SalePropertys) { ///销售属性值 var saleItemDistinct = item.Values.GroupBy(p => new { p.ValueName }).Select(g => g.First()).ToList(); if (saleItemDistinct.Count() < item.Values.Count) { return(ApiResult.Failure("已存在同名销售属性值!")); } } //商品参数 var displayDistinct = view.DisplayPropertys.GroupBy(p => new { p.Name }).Select(g => g.First()).ToList(); if (displayDistinct.Count() < view.DisplayPropertys.Count) { return(ApiResult.Failure("已存在同名商品参数!")); } foreach (var item in view.DisplayPropertys) { ///销售属性值 var saleItemDistinct = item.Values.GroupBy(p => new { p.ValueName }).Select(g => g.First()).ToList(); if (saleItemDistinct.Count() < item.Values.Count) { return(ApiResult.Failure("已存在同名商品参数值!")); } } var valAdd = new List <CategoryPropertyValue>(); var valDel = new List <CategoryPropertyValue>(); var valUpd = new List <CategoryPropertyValue>(); var propertyDel = new List <CategoryProperty>(); var catetory = new Category(); // CreateNew if (view.Id == Guid.Empty) { catetory = new Category { Name = view.Name, PartentId = view.PartentId, SortOrder = view.SortOrder }; Resolve <ICategoryService>().Add(catetory); } else { catetory = Resolve <ICategoryService>().GetSingle(view.Id); catetory.Name = view.Name; catetory.PartentId = view.PartentId; catetory.SortOrder = view.SortOrder; Resolve <ICategoryService>().Update(catetory); } // CreateNew if (view.Id == Guid.Empty) { var property = new CategoryProperty(); foreach (var saleProp in view.SalePropertys) { property = ProcessProp(catetory, saleProp); foreach (var vi in saleProp.Values) { ValueProcess(property, vi, valAdd); } } foreach (var dispProp in view.DisplayPropertys) { property = ProcessDispProp(catetory, dispProp); foreach (var vi in dispProp.Values) { ValueProcess(property, vi, valAdd); } } } else // Update Exist { // var catetory = Resolve<ICategoryService>().GetSingle(view.Id); catetory.Name = view.Name; catetory.PartentId = view.PartentId; catetory.SortOrder = view.SortOrder; Resolve <ICategoryService>().Update(catetory); var propertyIdList = catetory.SalePropertys?.Select(x => x.Id.ToString()); //需要删除的销售属性 var delSalePropertyIdList = propertyIdList.Except(view.SalePropertys.Select(x => x.Id.ToString())); var delSalePropertyList = Resolve <ICategoryPropertyService>().GetList(string.Join(',', delSalePropertyIdList)); propertyDel.AddRange(delSalePropertyList); //需要删除的商品参数 var delDisplayPropertyIdList = catetory.DisplayPropertys?.Select(s => s.Id.ToString()) .Except(view.DisplayPropertys.Select(x => x.Id.ToString())); var delDisplayPropertyList = Resolve <ICategoryPropertyService>() .GetList(string.Join(',', delDisplayPropertyIdList)); propertyDel.AddRange(delDisplayPropertyList); var property = new CategoryProperty(); foreach (var saleProp in view.SalePropertys) { var loadIdList = Resolve <ICategoryPropertyValueService>().GetList(x => x.PropertyId == saleProp.Id) .Select(x => x.Id.ToString()); var delIdList = loadIdList.Except(saleProp.Values.Select(x => x.Id.ToString())); var delList = Resolve <ICategoryPropertyValueService>().GetList(string.Join(',', delIdList)); valDel.AddRange(delList); property = ProcessProp(catetory, saleProp); foreach (var vi in saleProp.Values) { ValueProcess(property, vi, valAdd, valUpd, delIdList); } } foreach (var dispProp in view.DisplayPropertys) { var loadIdList = Resolve <ICategoryPropertyValueService>().GetList(x => x.PropertyId == dispProp.Id) .Select(x => x.Id.ToString()); var delIdList = loadIdList.Except(dispProp.Values.Select(x => x.Id.ToString())); var delList = Resolve <ICategoryPropertyValueService>().GetList(string.Join(',', delIdList)); valDel.AddRange(delList); property = ProcessDispProp(catetory, dispProp); foreach (var vi in dispProp.Values) { ValueProcess(property, vi, valAdd, valUpd, delIdList); } } } //先删除属性值 Resolve <ICategoryPropertyValueService>().DeleteMany(valDel.Select(x => x.Id)); //再删除属性 Resolve <ICategoryPropertyService>().DeleteMany(propertyDel.Select(x => x.Id)); // Resolve<ICategoryPropertyValueService>().DeleteMany(valDel.Select(x => x.Id)); foreach (var item in valUpd) { Resolve <ICategoryPropertyValueService>().Update(item); } Resolve <ICategoryPropertyValueService>().AddMany(valAdd); return(ApiResult.Success("保存成功!")); }
public ApiResult <List <KeyValue> > GetKeyValue([FromQuery] string type) { if (type.IsNullOrEmpty() || type == "undefined") { return(ApiResult.Failure <List <KeyValue> >("类型不能为空")); } if (type == "IAutoTable") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoTableKeyValues())); } if (type == "IAutoForm") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoFormKeyValues())); } if (type == "IAutoList") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoListKeyValues())); } if (type == "IAutoPreview") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoPreviewKeyValues())); } if (type == "IAutoNews") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoNewsKeyValues())); } if (type == "IAutoArticle") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoArticleKeyValues())); } if (type == "IAutoReport") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoReportKeyValues())); } if (type == "IAutoFaq") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoFaqsKeyValues())); } if (type == "IAutoImage") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoImagesKeyValues())); } if (type == "IAutoIndex") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoIndexKeyValues())); } if (type == "IAutoIntro") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoIntroKeyValues())); } if (type == "IAutoTask") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoTaskKeyValues())); } if (type == "IAutoVideo") { return(ApiResult.Success(Resolve <IAutoUIService>().AutoVideoKeyValues())); } if (type == "CatalogEntity") { return(ApiResult.Success(Resolve <ITableService>().CatalogEntityKeyValues())); } if (type == "SqlServcieCatalogEntity") { return(ApiResult.Success(Resolve <ITableService>().SqlServcieCatalogEntityKeyValues())); } if (type == "MongodbCatalogEntity") { return(ApiResult.Success(Resolve <ITableService>().MongodbCatalogEntityKeyValues())); } var find = type.GetTypeByName(); if (find == null) { return(ApiResult.Failure <List <KeyValue> >($"类型不存在,请确认{type}输入是否正确")); } var intances = type.GetInstanceByName(); if (intances is IRelation) { var result = ServiceInterpreter.Eval <IEnumerable <KeyValue> >("IRelationService", "GetKeyValues2", type); return(ApiResult.Success(result.ToList())); } //enum if (find.IsEnum) { var keyValues = KeyValueExtesions.EnumToKeyValues(type); if (keyValues == null) { return(ApiResult.Failure <List <KeyValue> >("枚举不存在")); } return(ApiResult.Success(keyValues.ToList())); } // auto config if (intances is IAutoConfig) { var configValue = Resolve <ITypeService>().GetAutoConfigDictionary(type); if (configValue == null) { return(ApiResult.Failure <List <KeyValue> >($"{type}不存在")); } var keyValues = new List <KeyValue>(); foreach (var item in configValue) { keyValues.Add(new KeyValue { Key = item.Key, Value = item.Value }); } return(ApiResult.Success(keyValues)); } return(null); }
protected ApiResult <T> ApiResultFromModelErrors <T>() { return(ApiResult <T> .Failure(GetModelErrors())); }
public async Task <ApiResult> Process([FromBody] Refund parameter) { var order = Resolve <IOrderService>().GetSingle(parameter.OrderId); var pay = Resolve <IPayService>().GetSingle(s => s.Id == order.PayId); pay.PayExtension = pay.Extensions.ToObject <PayExtension>(); //先把微信金额原路退回 var entity = Resolve <IRefundService>().GetByIdNoTracking(order.OrderExtension?.RefundInfo?.Id); if (entity == null) { return(await Task.FromResult(ApiResult.Failure("退款状态以异常!"))); } if (pay.Amount < parameter.Amount) //退款金额不能大于支付金额 { return(await Task.FromResult(ApiResult.Failure("退款金额不能大于订单金额!"))); } //退款金额等于 手动退款的金额 entity.Amount = parameter.Amount; //再更新订单状态和退货状态 var refundFree = Resolve <IPayService>().Refund(ref pay, Convert.ToInt32(parameter.Amount * 100), order.OrderExtension?.RefundInfo?.Id.ToString()); //请求结果 if (!refundFree.Item1.Succeeded) { return(ApiResult.Failure( $"退款失败!refundFree.Item1:ErrorMessages=>{refundFree.Item1.ErrorMessages.Join()}/ReturnMessage=>{refundFree.Item1.ReturnMessage},refundFree.Item2:{refundFree.Item2}")); } //未发货 if (order.OrderStatus == OrderStatus.AfterSale) { if (order.OrderExtension.RefundInfo.Process == RefundStatus.WaitSaleAllow) { entity.Process = RefundStatus.Sucess; } else { return(await Task.FromResult(ApiResult.Failure("售后状态已被更改,操作失败!"))); } } else if (order.OrderStatus == OrderStatus.Refund) { //退款可以在 同意之后或者 直接退款,退款后直接完成 if (order.OrderExtension.RefundInfo.Process == RefundStatus.BuyerApplyRefund) { entity.Process = RefundStatus.Sucess; } else { return(await Task.FromResult(ApiResult.Failure("售后状态已被更改,操作失败!"))); } } else { return(await Task.FromResult(ApiResult.Failure("订单状态已更改,操作失败!"))); } //退款完成后将更改订单状态 order.OrderStatus = OrderStatus.Refunded; entity.ProcessMessage = parameter.ProcessMessage; var res = Resolve <IRefundService>().Update(entity); order.OrderExtension.RefundInfo = entity; order.Extension = order.OrderExtension.ToJsons(); var update = Resolve <IOrderService>().Update(order); var result = res && update?ApiResult.Success() : ApiResult.Failure("退款失败!"); return(await Task.FromResult(result)); }
public ApiResult DetailEdit([FromBody] AccountViewIn view) { var chargeUser = Resolve <IUserService>().GetSingle(view.ChargeUserId); if (chargeUser == null) { return(ApiResult.Failure("对应编辑的用户ID不存在")); } view.User = chargeUser; view.AccountList = Resolve <IAccountService>().GetUserAllAccount(chargeUser.Id); //view.UserId = chargeUser.Id; if (!this.IsFormValid()) { return(ApiResult.Failure(string.Empty, this.FormInvalidReason())); } var loginUser = Resolve <IUserService>().GetUserDetail(view.UserId); if (loginUser.Status != Status.Normal) { return(ApiResult.Failure(string.Empty, "操作失败:您的账户不正常,不能进行资产操作")); } //var safePassword = HttpContext.Request.Form["SafePassWord"].ToString(); if (view.AdminPayPassword.IsNullOrEmpty()) { return(ApiResult.Failure(string.Empty, "操作失败:支付密码不能为空")); } if (loginUser.Detail.PayPassword != view.AdminPayPassword.ToMd5HashString()) { return(ApiResult.Failure(string.Empty, "操作失败:支付密码不正确")); } var moneyType = Resolve <IAutoConfigService>().MoneyTypes().FirstOrDefault(r => r.Id == view.MoneyTypeId); if (moneyType == null) { return(ApiResult.Failure("操作失败:对应的货币类型不支持!")); } var result = ServiceResult.Success; if (view.ActionType == (int)FinanceActionType.Add) { if (view.Amount > 1000000) { return(ApiResult.Failure("Amount", "资产增加单次金额不能超过100W")); } result = Resolve <IBillService>() .Increase(chargeUser, moneyType, view.Amount, "管理员后台手动增加资产" + view.Remark); } if (view.ActionType == (int)FinanceActionType.Reduce) { result = Resolve <IBillService>().Reduce(chargeUser, moneyType, view.Amount, "管理员后台减少" + view.Remark); } if (view.ActionType == (int)FinanceActionType.Freeze) { result = Resolve <IBillService>().Treeze(chargeUser, moneyType, view.Amount, "管理员后台冻结" + view.Remark); } if (view.ActionType == (int)FinanceActionType.Unfreeze) { result = Resolve <IBillService>() .DeductTreeze(chargeUser, moneyType, view.Amount, "管理员后台解结" + view.Remark); } if (!result.Succeeded) { return(ApiResult.Failure(string.Empty, result.ToString())); } Resolve <IAccountService>().Log( $@"管理员{AutoModel.BasicUser.UserName}{GetAcctionName(view.ActionType)}会员{chargeUser.UserName}的资产,账户为:{moneyType.Name},金额为:{view.Amount}" ); //通知会员后台手动添加资产 var userAccount = Resolve <IAccountService>().GetAccount(chargeUser.Id, moneyType.Id); IDictionary <string, string> parameter = new Dictionary <string, string> { { "accountName", moneyType.Name }, { "account", view.Amount.ToString() }, { "userName", chargeUser.UserName }, { "balance", userAccount.Amount.ToString() }, { "acctionname", GetAcctionName(view.ActionType) } }; // _messageManager.AddTemplateQueue(2001, chargeUser.Mobile, parameter); // _messageManager.AddTemplateQueue(2002, _messageManager.OpenMobile, parameter); return(ApiResult.Success($"{GetAcctionName(view.ActionType)}资产成功")); }
public ApiResult SendSms([FromBody] SmsInput input) { try { if (string.IsNullOrEmpty(input.Message)) { return(ApiResult.Failure("请输入message内容")); } if (input.Type == Sms.Enums.SmsType.Phone && string.IsNullOrEmpty(input.Phone)) { return(ApiResult.Failure("type为指定手机号码时,phone 不能为空")); } IList <SmsSend> phones = new List <SmsSend>(); if (input.Type == Sms.Enums.SmsType.All) { var users = Resolve <IUserService>().GetList(); if (Resolve <ApiStore.Sms.Services.ISmsSendService>().GetAll(SendState.Root).Count() <= 0) { var sendList = users.Select(s => new SmsSend { State = SendState.Root, Phone = s.Mobile, UserId = s.Id, UserName = s.UserName, CreateTime = DateTime.Now }).ToList(); Resolve <ApiStore.Sms.Services.ISmsSendService>().Add(sendList); phones = Resolve <ApiStore.Sms.Services.ISmsSendService>().GetAll(input.State); } else { phones = Resolve <ApiStore.Sms.Services.ISmsSendService>().GetAll(input.State); } //phones = users.Select(s => new SmsSend //{ // State = SendState.Root, // Phone = s.Mobile, // UserId=s.Id //}).ToList(); //phones = input.Phone.Split(",").Select(s => new SmsSend //{ // State = SendState.Root, // Phone = s, //}).ToList(); } else { phones = input.Phone.Split(",").Select(s => new SmsSend { State = SendState.Root, Phone = s, }).ToList(); } for (int i = 1249; i < phones.Count; i++) { if (!string.IsNullOrEmpty(input.Message)) { //Task.Factory.StartNew(() => //{ var result = Resolve <ISmsService>().SendRaw(phones[i].Phone, input.Message); if (result.Status == ResultStatus.Success) { phones[i].State = SendState.Success; Resolve <ApiStore.Sms.Services.ISmsSendService>().Update(phones[i]); } else { phones[i].State = SendState.Fail; Resolve <ApiStore.Sms.Services.ISmsSendService>().Update(phones[i]); } //}); } //if (i % 50 == 0) //{ Thread.Sleep(500); //} // i++; } return(ApiResult.Success("执行完毕")); } catch (Exception ex) { return(ApiResult.Failure(ex.Message)); } }
public ApiResult Pay([FromBody] OrderEditPay orderEditPay) { var user = Resolve <IUserService>().GetUserDetail(orderEditPay.UserId); if (user == null) { return(ApiResult.Failure("用户已经不存在")); } if (user.Detail.PayPassword != orderEditPay.PayPassword.ToMd5HashString()) { return(ApiResult.Failure("支付密码不正确")); } var order = Resolve <IOrderService>().GetSingle(r => r.Id == orderEditPay.OrderId); if (order == null) { return(ApiResult.Failure("订单不存在")); } if (order.OrderStatus != OrderStatus.WaitingBuyerPay) { return(ApiResult.Failure("订单已付款或关闭,请刷新")); } IList <Order> orderList = new List <Order> { order }; var reduceMoneys = new List <OrderMoneyItem>(); order.OrderExtension.ReduceAmounts.Foreach(r => { reduceMoneys.Add(new OrderMoneyItem { MoneyId = r.MoneyTypeId, MaxPayPrice = r.ForCashAmount }); }); var singlePayInput = new SinglePayInput { Orders = orderList, User = user, ReduceMoneys = reduceMoneys, IsAdminPay = true }; var payResult = Resolve <IOrderAdminService>().AddSinglePay(singlePayInput); if (!payResult.Item1.Succeeded) { return(ApiResult.Failure(payResult.Item1.ToString())); } var payInput = AutoMapping.SetValue <PayInput>(payResult.Item2); payInput.LoginUserId = user.Id; payInput.PayId = payResult.Item2.Id; var result = Resolve <IPayService>().Pay(payInput); if (!result.Item1.Succeeded) { return(ApiResult.Failure(result.ToString())); } return(ApiResult.Success("支付成功!")); }
public static ApiResult <T> ToApiResult <T>(this ValidationException @this) { return(ApiResult.Failure <T>(@this)); }
public ApiResult BatchDelete([FromBody] string ids) { return(ApiResult.Failure("改类型不支持api 接口删除")); }
public ApiResult <EventInfo> EventUpdate(long EventID, EventInput input) { //TODO: Verify Event belongs to user if updating. Right now anyone can update any event. var apiresult = new ApiResult <EventInfo>(); if (UserContext == null) { return(apiresult.Failure("Must be logged in.")); } if (!UserContext.IsVerifiedLogin) { return(apiresult.Failure("Insufficient account permissions.")); } if (EventID <= 0) { return(apiresult.Failure("Invalid ID")); } DBEventFeedItemExtended existing = null; try { existing = Factory.EventManager.EventGetByID(EventID); if (existing == null) { return(apiresult.Failure("Event Does not exist.")); } } catch (Exception ex) { return(apiresult.Failure(ex)); } if (input == null) { return(apiresult.Failure("Input is null.")); } if (input.Title != null && existing.Title != input.Title) { existing.Title = input.Title; } if (input.Caption != null && existing.Caption != input.Caption) { existing.Caption = input.Caption; } if (input.Description != null && existing.Details != input.Description) { existing.Details = input.Description; } if (input.EventTypeID > 0 && existing.EventTypeID != input.EventTypeID) { existing.EventTypeID = input.EventTypeID; } if (input.DateStart != default && existing.DateStart != input.DateStart) { existing.DateStart = input.DateStart; } if (input.DateEnd != default && existing.DateEnd != input.DateEnd) { existing.DateEnd = input.DateEnd; } //TODO sanitize Title, Caption, and Description to be free of javascript if (existing.Title.CountAlphaNumeric() <= 5) { return(apiresult.Failure("Title to short.")); } if (existing.Caption.CountAlphaNumeric() <= 8) { return(apiresult.Failure("Caption to short.")); } if (existing.DateStart.ToUniversalTime() < DateTime.UtcNow) { apiresult.Failure("DateStart in the past."); if (UserContext.IsAdmin) { apiresult.AppendMessage("(AdminOverride)"); } else { return(apiresult); } } if (existing.DateEnd.ToUniversalTime() < input.DateStart.ToUniversalTime()) { return(apiresult.Failure("DateEnd is before DateStart")); } if (existing.DateStart.AddDays(14).ToUniversalTime() < input.DateEnd.ToUniversalTime()) { return(apiresult.Failure("Events cannot last longer than 2 weeks.")); } DBEventType eventType = Factory.EventTypeManager[existing.EventTypeID]; if (eventType == null) { return(apiresult.Failure("EventType does not exist.")); } List <DBTag> newTags = null; List <DBTag> removedTags = null; DBTag[] eventTags = null; if (input.Tags != null && input.Tags.Length > 0) { DBTag[] previousTags = existing.TagIds.Select(x => Factory.TagManager[x]).ToArray(); existing.TagIds = new long[input.Tags.Length]; eventTags = new DBTag[input.Tags.Length]; newTags = new List <DBTag>(); removedTags = new List <DBTag>(); for (int i = 0; i < input.Tags.Length; i++) { DBTag tag = eventTags[i] = Factory.TagManager[input.Tags[i]]; if (tag == null) { return(apiresult.Failure("Invalid Tag: " + input.Tags[i].ToString())); } existing.TagIds[i] = tag.TagID; if (Array.IndexOf(previousTags, tag) == -1) { newTags.Add(tag); } } for (int i = 0; i < previousTags.Length; i++) { DBTag tag = previousTags[i]; if (Array.IndexOf(eventTags, tag) == -1) { removedTags.Add(tag); } } } else { eventTags = new DBTag[existing.TagIds.Length]; for (int i = 0; i < existing.TagIds.Length; i++) { DBTag tag = Factory.TagManager[existing.TagIds[i]]; if (tag == null) { return(apiresult.Failure("Invalid Tag: " + input.Tags[i].ToString())); } eventTags[i] = tag; } } bool bLocChange = false; if (input.Location != null) { var loc = input.Location; if (loc.Name != null && existing.LocationName != loc.Name) { existing.LocationName = loc.Name; bLocChange = true; } if (loc.AddressLine != null && existing.AddressLine != loc.AddressLine) { existing.AddressLine = loc.AddressLine; bLocChange = true; } if (loc.Locality != null && existing.Locality != loc.Name) { existing.Locality = loc.Locality; bLocChange = true; } if (loc.PostalCode != null && existing.PostalCode != loc.PostalCode) { existing.PostalCode = loc.PostalCode; bLocChange = true; } if (loc.AdminDistrict != null && existing.AdminDistrict != loc.Name) { existing.AdminDistrict = loc.AdminDistrict; bLocChange = true; } if (loc.CountryRegion != null && existing.CountryRegion != loc.CountryRegion) { existing.CountryRegion = loc.CountryRegion; bLocChange = true; } if (bLocChange) { LocationNode.CountryRegionNode oCountry = Factory.LocationManager.QueryCachedCountries(existing.CountryRegion).FirstOrDefault(); if (oCountry == null) { return(apiresult.Failure("Invalid Country")); } LocationNode.AdminDistrictNode oState = Factory.LocationManager.QueryCachedStates(existing.AdminDistrict).FirstOrDefault(); if (oState == null) { return(apiresult.Failure("Invalid State")); } if (existing.PostalCode.CountAlphaNumeric() < 3) { return(apiresult.Failure("Invalid PostalCode")); } if (oCountry.Abbreviation == "USA") { LocationNode.PostalCodeNode oZip = Factory.LocationManager.QueryCachedPostalCodes(existing.PostalCode).FirstOrDefault(); if (oZip == null) { return(apiresult.Failure("Invalid PostalCode")); } } if (existing.Locality.CountAlphaNumeric() < 3) { return(apiresult.Failure("Invalid City")); } } } StreetAddress address = new StreetAddress() { ParentLocationID = existing.ParentLocationID, LocationID = existing.LocationID, Name = existing.LocationName, AddressLine = existing.AddressLine, Locality = existing.Locality, AdminDistrict = existing.AdminDistrict, PostalCode = existing.PostalCode, CountryRegion = existing.CountryRegion }; if (bLocChange) { try { address = new StreetAddress(Factory.LocationManager.GetOrCreateDBLocation(address)); } catch (Exception ex) { return(apiresult.Failure(ex)); } } try { Factory.EventManager.UpdateEvent(EventID, existing.EventTypeID, existing.DateStart, existing.DateEnd, UserContext.AccountID, existing.LocationID, existing.Title, existing.Caption, existing.Details); EventInfo info = new EventInfo() { EventID = existing.EventID, DateStart = existing.DateStart, DateEnd = existing.DateEnd, Title = existing.Title, Caption = existing.Title, EventTypeID = existing.EventTypeID, EventType = eventType, LocationID = existing.LocationID, LocationName = address.Name, AddressLine = Helpers.FormatAddress(null, address.AddressLine, address.Locality, address.AdminDistrict, address.PostalCode, address.CountryRegion), AccountID = existing.AccountID, Host = String.IsNullOrWhiteSpace(UserContext.UserDisplayName) ? UserContext.UserName : UserContext.UserDisplayName, Tags = eventTags, Details = existing.Details }; #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed if (newTags != null) { for (int i = 0; i < newTags.Count; i++) { Factory.TagManager.LinkTagToEvent(info.EventID, newTags[i].TagID); } } if (removedTags != null) { for (int i = 0; i < removedTags.Count; i++) { Factory.TagManager.RemoveTagFromEvent(info.EventID, removedTags[i].TagID); } } #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed return(apiresult.Success(info)); } catch (Exception ex) { return(apiresult.Failure(ex)); } }
public ApiResult <EventInfo> EventCreate(EventInput input) { var apiresult = new ApiResult <EventInfo>(); if (UserContext == null) { return(apiresult.Failure("Must be logged in.")); } if (!UserContext.IsVerifiedLogin) { return(apiresult.Failure("Insufficient account permissions.")); } if (input == null) { return(apiresult.Failure("Bad Post. Input is null.")); } if (input.Location == null) { return(apiresult.Failure("Location Invalid")); } //TODO sanitize Title, Caption, and Description to be free of javascript if (input.Title.CountAlphaNumeric() <= 5) { return(apiresult.Failure("Title to short.")); } if (input.Caption.CountAlphaNumeric() <= 8) { return(apiresult.Failure("Caption to short.")); } if (input.DateStart.ToUniversalTime() < DateTime.UtcNow) { return(apiresult.Failure("DateStart in the past.")); } if (input.DateEnd.ToUniversalTime() < input.DateStart.ToUniversalTime()) { return(apiresult.Failure("DateEnd is before DateStart")); } if (input.DateStart.AddDays(14).ToUniversalTime() < input.DateEnd.ToUniversalTime()) { return(apiresult.Failure("Events cannot last longer than 2 weeks.")); } DBEventType eventType = Factory.EventTypeManager[input.EventTypeID]; if (eventType == null) { return(apiresult.Failure("EventType does not exist.")); } if (input.Tags == null || input.Tags.Length == 0) { return(apiresult.Failure("Include at least one EventTag.")); } DBTag[] eventTags = new DBTag[input.Tags.Length]; for (int i = 0; i < input.Tags.Length; i++) { DBTag tag = Factory.TagManager[input.Tags[i]]; if (tag == null) { return(apiresult.Failure("Invalid Tag: " + input.Tags[i].ToString())); } eventTags[i] = tag; } LocationNode.CountryRegionNode oCountry = Factory.LocationManager.QueryCachedCountries(input.Location.CountryRegion).FirstOrDefault(); if (oCountry == null) { return(apiresult.Failure("Invalid Country")); } LocationNode.AdminDistrictNode oState = Factory.LocationManager.QueryCachedStates(input.Location.AdminDistrict).FirstOrDefault(); if (oState == null) { return(apiresult.Failure("Invalid State")); } if (input.Location.PostalCode.CountAlphaNumeric() < 3) { return(apiresult.Failure("Invalid PostalCode")); } if (oCountry.Abbreviation == "USA") { LocationNode.PostalCodeNode oZip = Factory.LocationManager.QueryCachedPostalCodes(input.Location.PostalCode).FirstOrDefault(); if (oZip == null) { return(apiresult.Failure("Invalid PostalCode")); } } if (input.Location.Locality.CountAlphaNumeric() < 3) { return(apiresult.Failure("Invalid City")); } try { StreetAddress address = new StreetAddress(Factory.LocationManager.GetOrCreateDBLocation(input.Location)); DBEventFeedItem dbEventItem = Factory.EventManager.CreateEvent(eventType.EventTypeID, input.DateStart, input.DateEnd, UserContext.AccountID, address.LocationID.UnBox(), input.Title, input.Caption, input.Description); EventInfo info = new EventInfo() { EventID = dbEventItem.EventID, DateStart = dbEventItem.DateStart, DateEnd = dbEventItem.DateEnd, Title = dbEventItem.Title, Caption = dbEventItem.Title, EventTypeID = dbEventItem.EventTypeID, EventType = eventType, LocationID = dbEventItem.LocationID, LocationName = address.Name, AddressLine = Helpers.FormatAddress(null, address.AddressLine, address.Locality, address.AdminDistrict, address.PostalCode, address.CountryRegion), AccountID = dbEventItem.AccountID, Host = String.IsNullOrWhiteSpace(UserContext.UserDisplayName) ? UserContext.UserName : UserContext.UserDisplayName, Tags = eventTags, Details = input.Description }; for (int i = 0; i < eventTags.Length; i++) { DBTag tag = eventTags[i]; #pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed Factory.TagManager.LinkTagToEvent(info.EventID, tag.TagID); #pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed } return(apiresult.Success(info)); } catch (Exception ex) { return(apiresult.Failure(ex)); } }
public ApiResult Delete([FromBody] AutoConfigDelete entity) { if (entity == null) { return(ApiResult.Failure("参数不能为空")); } if (entity.Type.IsNullOrEmpty()) { return(ApiResult.Failure("类型不能为空")); } var type = entity.Type.GetTypeByName(); if (type == null) { return(ApiResult.Failure("类型不存在")); } var attr = type.GetTypeInfo().GetAttribute <ClassPropertyAttribute>(); var configDescription = new ClassDescription(type.GetTypeInfo()); if (attr != null && !string.IsNullOrEmpty(attr.Validator) && FilterSQLScript(attr.Validator) == 0) { var script = string.Format(attr.Validator, entity.Id); var isValidated = Resolve <IAutoConfigService>().Check(script); if (isValidated) { return(ApiResult.Failure("删除失败" + attr.ValidateMessage)); } } var list = Resolve <IAutoConfigService>().GetObjectList(type); object deleteItem = null; foreach (var item in list) { if (item.GetType().GetProperty("Id").GetValue(item).ToGuid() == entity.Id.ToGuid()) { if (type.GetTypeInfo().BaseType.Name == "BaseGradeConfig") { if (item.GetType().GetProperty("IsDefault").GetValue(item).ToBoolean()) { continue; } } deleteItem = item; break; } } if (deleteItem != null) { list.Remove(deleteItem); } var config = Resolve <IAutoConfigService>().GetConfig(type.FullName); config.Value = JsonConvert.SerializeObject(list); Resolve <IAutoConfigService>().AddOrUpdate(config); Resolve <IAutoConfigService>().Log($"成功删除配置,IAutoConfig配置类型为:{type.GetTypeInfo().Name},配置ID:{entity.Id}"); return(ApiResult.Success("删除成功")); }