public JsonResult Edit(SceneEditModel model) { var objectId = ObjectId.GenerateNewId(); if (!string.IsNullOrEmpty(model.ID) && !ObjectId.TryParse(model.ID, out objectId)) { return(Json(new { Code = 300, Msg = "ID is not allowed." })); } if (string.IsNullOrEmpty(model.Name)) { return(Json(new { Code = 300, Msg = "Name is not allowed to be empty." })); } if (model.Name.StartsWith("_")) { return(Json(new { Code = 300, Msg = "Name is not allowed to start with _." })); } var mongo = new MongoHelper(); // 开启权限时,判断是否是自己的场景 if (ConfigHelper.EnableAuthority) { var user = UserHelper.GetCurrentUser(); var filter11 = Builders <BsonDocument> .Filter.Eq("ID", objectId); var doc = mongo.FindOne(Constant.SceneCollectionName, filter11); if (doc == null) { return(Json(new { Code = 300, Msg = "The scene is not existed." })); } // 保存其他人的场景 if (doc.Contains("UserID") && doc["UserID"].ToString() != user.ID) { return(Json(new { Code = 300, Msg = "Permission denied." })); } // 非管理员组保存不带UserID的场景 if (!doc.Contains("UserID") && user.RoleName != "Administrator") { return(Json(new { Code = 300, Msg = "Permission denied." })); } } var pinyin = PinYinHelper.GetTotalPinYin(model.Name); var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId); var update1 = Builders <BsonDocument> .Update.Set("Name", model.Name); var update2 = Builders <BsonDocument> .Update.Set("TotalPinYin", pinyin.TotalPinYin); var update3 = Builders <BsonDocument> .Update.Set("FirstPinYin", pinyin.FirstPinYin); var update4 = Builders <BsonDocument> .Update.Set("Thumbnail", model.Image); UpdateDefinition <BsonDocument> update5; if (string.IsNullOrEmpty(model.Category)) { update5 = Builders <BsonDocument> .Update.Unset("Category"); } else { update5 = Builders <BsonDocument> .Update.Set("Category", model.Category); } var update6 = Builders <BsonDocument> .Update.Set("IsPublic", model.IsPublic); var update = Builders <BsonDocument> .Update.Combine(update1, update2, update3, update4, update5, update6); mongo.UpdateOne(Constant.SceneCollectionName, filter, update); return(Json(new { Code = 200, Msg = "Saved successfully!" })); }
public JsonResult Edit(SceneEditModel model) { var objectId = ObjectId.GenerateNewId(); if (!string.IsNullOrEmpty(model.ID) && !ObjectId.TryParse(model.ID, out objectId)) { return(Json(new { Code = 300, Msg = "ID不合法。" })); } if (string.IsNullOrEmpty(model.Name)) { return(Json(new { Code = 300, Msg = "名称不允许为空。" })); } if (model.Name.StartsWith("_")) { return(Json(new { Code = 300, Msg = "名称不允许以下划线开头。" })); } var mongo = new MongoHelper(); var pinyin = PinYinHelper.GetTotalPinYin(model.Name); var filter = Builders <BsonDocument> .Filter.Eq("ID", objectId); var update1 = Builders <BsonDocument> .Update.Set("Name", model.Name); var update2 = Builders <BsonDocument> .Update.Set("TotalPinYin", pinyin.TotalPinYin); var update3 = Builders <BsonDocument> .Update.Set("FirstPinYin", pinyin.FirstPinYin); var update4 = Builders <BsonDocument> .Update.Set("Thumbnail", model.Image); UpdateDefinition <BsonDocument> update5; if (string.IsNullOrEmpty(model.Category)) { update5 = Builders <BsonDocument> .Update.Unset("Category"); } else { update5 = Builders <BsonDocument> .Update.Set("Category", model.Category); } var update = Builders <BsonDocument> .Update.Combine(update1, update2, update3, update4, update5); mongo.UpdateOne(Constant.SceneCollectionName, filter, update); return(Json(new { Code = 200, Msg = "保存成功!" })); }