SchemaController.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. using CZFW.Core;
  2. using CZFW.Framework;
  3. using CZFW.Framework.Model.ViewModel;
  4. using CZFW.Framework.Tools;
  5. using CZFW.MDB;
  6. using CZFW.MDB.Util;
  7. using Microsoft.AspNetCore.Mvc;
  8. using Microsoft.AspNetCore.Mvc.Filters;
  9. using Newtonsoft.Json.Linq;
  10. namespace CZFW.CMS.Builder.Controllers
  11. {
  12. public class SchemaController : Framework.ControllerBase
  13. {
  14. string TplName;
  15. public override void OnActionExecuting(ActionExecutingContext context)
  16. {
  17. // GetSession<string>(CMSBuilderConstant.TPLNAME_SESSION_NAME);
  18. if (string.IsNullOrWhiteSpace(TplName))
  19. {
  20. context.Result = Json(Result(false, "没有指定当前要编辑的模板名称"));
  21. }
  22. base.OnActionExecuting(context);
  23. }
  24. ISchemaRepository _logic;
  25. IMongoRepository _repository;
  26. public SchemaController(ISchemaRepository logic, IMongoRepository repo)
  27. {
  28. _logic = logic;
  29. _repository = repo;
  30. TplName = ConfigHelper.GetValue("SysConfig:TplName");
  31. }
  32. public ResultModel Create([FromBody]string schema)
  33. {
  34. return _logic.Create(TplName, schema);
  35. }
  36. public IActionResult Index(int pageIndex = 1, int pageSize = 100, string sort = "{}")
  37. {
  38. var res = _logic.GetSchemaList(tplId: TplName);
  39. var json = res.CZToJson();
  40. return Content(json, "application/json");
  41. }
  42. public IActionResult GetOne(string query = "{}", string proj = "{}", string sort = "{}")
  43. {
  44. var res = _logic.GetOne(tplId: TplName, query: query, proj: proj, sort: sort);
  45. var json = res.CZToJson();
  46. return Content(json, "application/json");
  47. }
  48. public ResultModel Remove(string id)
  49. {
  50. return _logic.Remove(id);
  51. }
  52. public ResultModel Replace(string id, [FromBody]string objJson)
  53. {
  54. JObject jobj = JObject.Parse(objJson);
  55. if (!jobj.ContainsKey(Constants.TPL_NAME_FIELD))
  56. {
  57. jobj[Constants.TPL_NAME_FIELD] = TplName;
  58. objJson = jobj.ToString();
  59. }
  60. return _logic.Replace(id, objJson);
  61. }
  62. public IActionResult Detail(string id)
  63. {
  64. var data = _logic.GetSchema(id);
  65. var jobj = data.CZToJson();
  66. return Content(jobj, "application/json");
  67. }
  68. public ResultModel UpdateCategory(string pageName, string query, string cateObjJson)
  69. {
  70. _repository.SetCurrentTable(pageName);
  71. var res = _repository.UpdateMany(query, cateObjJson);
  72. return res;
  73. }
  74. public ResultModel UpdateArrayField(string pageName, string query, string deleteQuery, string insertObjJson)
  75. {
  76. _repository.SetCurrentTable(pageName);
  77. var res = _repository.UpdateMany(query, deleteQuery);
  78. if (res.Success)
  79. res = _repository.UpdateMany(query, insertObjJson);
  80. return res;
  81. }
  82. public ResultModel GetCurrentTpl()
  83. {
  84. var res = SiteHelper.GetSiteModelByDomain();
  85. return new ResultModel(data: res.TplName);
  86. }
  87. }
  88. }