field.go 4.6 KB

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