field.go 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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. fInfo.FieldDefault = field.FieldDefault
  53. if gstr.ContainsI(modelInfo.SearchList, field.FieldName) {
  54. //列表查询
  55. fInfo.SearchList = "1"
  56. }
  57. if gstr.ContainsI(modelInfo.ModelSort, field.FieldName) {
  58. //列表排序
  59. fInfo.ModelSort = "1"
  60. }
  61. if gstr.ContainsI(modelInfo.ModelList, field.FieldName) {
  62. //列表显示
  63. fInfo.ModelList = "1"
  64. }
  65. if gstr.ContainsI(modelInfo.ModelEdit, field.FieldName) {
  66. //可编辑
  67. fInfo.ModelEdit = "1"
  68. }
  69. if gstr.ContainsI(modelInfo.ModelIndexes, field.FieldName) {
  70. //索引字段
  71. fInfo.ModelIndexes = "1"
  72. }
  73. if modelInfo.ModelPk == field.FieldName {
  74. //主键
  75. fInfo.ModelPk = "1"
  76. }
  77. list[key] = fInfo
  78. }
  79. return
  80. }
  81. //设置字段属性
  82. func SetFieldsAttr(req *model_fields.SetFieldsAttrReq) error {
  83. infoReq := new(model_info.FieldsAttrReq)
  84. infoReq.ModelId = req.ModelId
  85. tx, err := g.DB().Begin()
  86. if err != nil {
  87. g.Log().Error(err)
  88. return gerror.New("开启事务处理失败")
  89. }
  90. for key, field := range req.FieldsList {
  91. field.FieldSort = gconv.Int64(key)
  92. if field.FieldId == req.PkId {
  93. infoReq.ModelPk = field.FieldName
  94. }
  95. if field.ModelEdit == "1" {
  96. //可编辑字段
  97. infoReq.ModelEdit += fmt.Sprintf(",%s", field.FieldName)
  98. }
  99. if field.ModelIndexes == "1" {
  100. //索引字段
  101. infoReq.ModelIndexes += fmt.Sprintf(",%s", field.FieldName)
  102. }
  103. if field.ModelList == "1" {
  104. //列表显示字段
  105. infoReq.ModelList += fmt.Sprintf(",%s", field.FieldName)
  106. }
  107. if field.ModelSort == "1" {
  108. //列表排序字段
  109. infoReq.ModelSort += fmt.Sprintf(",%s", field.FieldName)
  110. }
  111. if field.SearchList == "1" {
  112. //列表查询字段
  113. infoReq.SearchList += fmt.Sprintf(",%s", field.FieldName)
  114. }
  115. //修改字段排序
  116. entity := new(model_fields.Entity)
  117. err = tx.Table(model_fields.Table).Struct(entity, g.Map{"field_id": field.FieldId})
  118. if err != nil || entity == nil {
  119. g.Log().Error(err)
  120. tx.Rollback()
  121. return gerror.New("设置字段排序失败")
  122. }
  123. entity.FieldSort = field.FieldSort
  124. _, err = entity.Save()
  125. if err != nil {
  126. g.Log().Error(err)
  127. tx.Rollback()
  128. return gerror.New("保存字段排序失败")
  129. }
  130. }
  131. infoReq.ModelEdit = gstr.TrimLeftStr(infoReq.ModelEdit, ",")
  132. infoReq.ModelIndexes = gstr.TrimLeftStr(infoReq.ModelIndexes, ",")
  133. infoReq.ModelList = gstr.TrimLeftStr(infoReq.ModelList, ",")
  134. infoReq.ModelSort = gstr.TrimLeftStr(infoReq.ModelSort, ",")
  135. infoReq.SearchList = gstr.TrimLeftStr(infoReq.SearchList, ",")
  136. modelInfo := new(model_info.Entity)
  137. err = tx.Table(model_info.Table).Struct(modelInfo, g.Map{"model_id": req.ModelId})
  138. if err != nil || modelInfo == nil {
  139. g.Log().Error(err)
  140. tx.Rollback()
  141. return gerror.New("获取模型信息失败")
  142. }
  143. modelInfo.ModelPk = infoReq.ModelPk
  144. modelInfo.ModelEdit = infoReq.ModelEdit
  145. modelInfo.ModelIndexes = infoReq.ModelIndexes
  146. modelInfo.ModelList = infoReq.ModelList
  147. modelInfo.ModelSort = infoReq.ModelSort
  148. modelInfo.SearchList = infoReq.SearchList
  149. _, err = modelInfo.Save()
  150. if err != nil {
  151. g.Log().Error(err)
  152. tx.Rollback()
  153. return gerror.New("设置模型字段属性失败")
  154. }
  155. tx.Commit()
  156. return nil
  157. }