field.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package model_service
  2. import (
  3. "fmt"
  4. "gfast/app/model/admin/model_fields"
  5. "gfast/app/model/admin/model_info"
  6. "github.com/gogf/gf/errors/gerror"
  7. "github.com/gogf/gf/frame/g"
  8. "github.com/gogf/gf/text/gstr"
  9. "github.com/gogf/gf/util/gconv"
  10. )
  11. // 添加
  12. func AddFieldsSave(req *model_fields.AddReq) error {
  13. return model_fields.AddSave(req)
  14. }
  15. // 删除
  16. func DeleteFieldsByIds(Ids []int) error {
  17. return model_fields.DeleteByIds(Ids)
  18. }
  19. //修改
  20. func EditFieldsSave(editReq *model_fields.EditReq) error {
  21. return model_fields.EditSave(editReq)
  22. }
  23. // 根据ID查询
  24. func GetFieldsByID(id int64) (*model_fields.Entity, error) {
  25. return model_fields.GetByID(id)
  26. }
  27. // 分页查询
  28. func SelectFieldsAll(req *model_fields.SelectPageReq) (list []*model_fields.FieldInfo, err error) {
  29. var fieldEntities []*model_fields.Entity
  30. fieldEntities, err = model_fields.SelectListAll(req)
  31. if err != nil {
  32. return
  33. }
  34. //获取模型信息
  35. var modelInfo *model_info.Entity
  36. modelInfo, err = model_info.GetByID(req.ModelId)
  37. if err != nil {
  38. return
  39. }
  40. if modelInfo == nil || fieldEntities == nil {
  41. return
  42. }
  43. list = make([]*model_fields.FieldInfo, len(fieldEntities))
  44. for key, field := range fieldEntities {
  45. fInfo := new(model_fields.FieldInfo)
  46. fInfo.ModelId = field.ModelId
  47. fInfo.FieldId = field.FieldId
  48. fInfo.FieldName = field.FieldName
  49. fInfo.FieldTitle = field.FieldTitle
  50. fInfo.FieldType = field.FieldType
  51. fInfo.FieldRules = field.FieldRules
  52. if gstr.ContainsI(modelInfo.SearchList, field.FieldName) {
  53. //列表查询
  54. fInfo.SearchList = "1"
  55. }
  56. if gstr.ContainsI(modelInfo.ModelSort, field.FieldName) {
  57. //列表排序
  58. fInfo.ModelSort = "1"
  59. }
  60. if gstr.ContainsI(modelInfo.ModelList, field.FieldName) {
  61. //列表显示
  62. fInfo.ModelList = "1"
  63. }
  64. if gstr.ContainsI(modelInfo.ModelEdit, field.FieldName) {
  65. //可编辑
  66. fInfo.ModelEdit = "1"
  67. }
  68. if gstr.ContainsI(modelInfo.ModelIndexes, field.FieldName) {
  69. //索引字段
  70. fInfo.ModelIndexes = "1"
  71. }
  72. if modelInfo.ModelPk == field.FieldName {
  73. //主键
  74. fInfo.ModelPk = "1"
  75. }
  76. list[key] = fInfo
  77. }
  78. return
  79. }
  80. //设置字段属性
  81. func SetFieldsAttr(req *model_fields.SetFieldsAttrReq) error {
  82. infoReq := new(model_info.FieldsAttrReq)
  83. infoReq.ModelId = req.ModelId
  84. tx, err := g.DB().Begin()
  85. if err != nil {
  86. g.Log().Error(err)
  87. return gerror.New("开启事务处理失败")
  88. }
  89. for key, field := range req.FieldsList {
  90. field.FieldSort = gconv.Int64(key)
  91. if field.FieldId == req.PkId {
  92. infoReq.ModelPk = field.FieldName
  93. }
  94. if field.ModelEdit == "1" {
  95. //可编辑字段
  96. infoReq.ModelEdit += fmt.Sprintf(",%s", field.FieldName)
  97. }
  98. if field.ModelIndexes == "1" {
  99. //索引字段
  100. infoReq.ModelIndexes += fmt.Sprintf(",%s", field.FieldName)
  101. }
  102. if field.ModelList == "1" {
  103. //列表显示字段
  104. infoReq.ModelList += fmt.Sprintf(",%s", field.FieldName)
  105. }
  106. if field.ModelSort == "1" {
  107. //列表排序字段
  108. infoReq.ModelSort += fmt.Sprintf(",%s", field.FieldName)
  109. }
  110. if field.SearchList == "1" {
  111. //列表查询字段
  112. infoReq.SearchList += fmt.Sprintf(",%s", field.FieldName)
  113. }
  114. //修改字段排序
  115. entity := new(model_fields.Entity)
  116. err = tx.Table(model_fields.Table).Struct(entity, g.Map{"field_id": field.FieldId})
  117. if err != nil || entity == nil {
  118. g.Log().Error(err)
  119. tx.Rollback()
  120. return gerror.New("设置字段排序失败")
  121. }
  122. entity.FieldSort = field.FieldSort
  123. _, err = entity.Save()
  124. if err != nil {
  125. g.Log().Error(err)
  126. tx.Rollback()
  127. return gerror.New("保存字段排序失败")
  128. }
  129. }
  130. infoReq.ModelEdit = gstr.TrimLeftStr(infoReq.ModelEdit, ",")
  131. infoReq.ModelIndexes = gstr.TrimLeftStr(infoReq.ModelIndexes, ",")
  132. infoReq.ModelList = gstr.TrimLeftStr(infoReq.ModelList, ",")
  133. infoReq.ModelSort = gstr.TrimLeftStr(infoReq.ModelSort, ",")
  134. infoReq.SearchList = gstr.TrimLeftStr(infoReq.SearchList, ",")
  135. modelInfo := new(model_info.Entity)
  136. err = tx.Table(model_info.Table).Struct(modelInfo, g.Map{"model_id": req.ModelId})
  137. if err != nil || modelInfo == nil {
  138. g.Log().Error(err)
  139. tx.Rollback()
  140. return gerror.New("获取模型信息失败")
  141. }
  142. modelInfo.ModelPk = infoReq.ModelPk
  143. modelInfo.ModelEdit = infoReq.ModelEdit
  144. modelInfo.ModelIndexes = infoReq.ModelIndexes
  145. modelInfo.ModelList = infoReq.ModelList
  146. modelInfo.ModelSort = infoReq.ModelSort
  147. modelInfo.SearchList = infoReq.SearchList
  148. _, err = modelInfo.Save()
  149. if err != nil {
  150. g.Log().Error(err)
  151. tx.Rollback()
  152. return gerror.New("设置模型字段属性失败")
  153. }
  154. tx.Commit()
  155. return nil
  156. }