model_fields.go 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. // ============================================================================
  2. // This is auto-generated by gf cli tool only once. Fill this file as you wish.
  3. // ============================================================================
  4. package model_fields
  5. import (
  6. "github.com/gogf/gf/database/gdb"
  7. "github.com/gogf/gf/errors/gerror"
  8. "github.com/gogf/gf/frame/g"
  9. "github.com/gogf/gf/os/gtime"
  10. "github.com/gogf/gf/text/gstr"
  11. "github.com/gogf/gf/util/gconv"
  12. )
  13. // AddReq 用于存储新增请求的请求参数
  14. type AddReq struct {
  15. ModelId uint `p:"modelId" `
  16. FieldName string `p:"fieldName" v:"required#字段名称不能为空"`
  17. FieldTitle string `p:"fieldTitle" `
  18. FieldType string `p:"fieldType" `
  19. FieldLength string `p:"fieldLength" `
  20. FieldDefault string `p:"fieldDefault" `
  21. FieldData string `p:"fieldData" `
  22. FieldDesc string `p:"fieldDesc" `
  23. FieldRules []string `p:"fieldRules" `
  24. CreateBy uint64
  25. FieldWidth string `p:"fieldWidth"`
  26. fieldAlign string `p:"fieldAlign"`
  27. }
  28. // EditReq 用于存储修改请求参数
  29. type EditReq struct {
  30. FieldId int64 `p:"fieldId" v:"required#主键ID不能为空"`
  31. ModelId uint `p:"modelId" `
  32. FieldName string `p:"fieldName" v:"required#字段名称不能为空"`
  33. FieldTitle string `p:"fieldTitle" `
  34. FieldType string `p:"fieldType" `
  35. FieldLength string `p:"fieldLength" `
  36. FieldDefault string `p:"fieldDefault" `
  37. FieldData string `p:"fieldData" `
  38. FieldDesc string `p:"fieldDesc" `
  39. FieldRules []string `p:"fieldRules" `
  40. UpdateBy uint64
  41. FieldWidth string `p:"fieldWidth"`
  42. fieldAlign string `p:"fieldAlign"`
  43. }
  44. type RemoveReq struct {
  45. Ids []int `p:"ids"` //删除id
  46. }
  47. type FieldInfo struct {
  48. FieldId uint64 `p:"field_id,primary" json:"field_id"` // 模型字段ID
  49. ModelId uint `p:"model_id" json:"model_id"` // 模型ID
  50. FieldName string `p:"field_name" json:"field_name"` // 字段名称
  51. FieldTitle string `p:"field_title" json:"field_title"` // 字段标题
  52. FieldType string `p:"field_type" json:"field_type"` // 字段类型
  53. FieldLength string `p:"field_length" json:"field_length"` // 字段长度
  54. FieldDefault string `p:"field_default" json:"field_default"` // 字段默认值
  55. FieldData string `p:"field_data" json:"field_data"` // 字段数据
  56. FieldDesc string `p:"field_desc" json:"field_desc"` // 字段描述
  57. FieldRules string `p:"field_rules" json:"field_rules"` // 字段规则
  58. FieldSort int64 `p:"field_sort" json:"field_sort"` // 字段排序
  59. CreateBy uint64 `p:"create_by" json:"create_by"` // 创建人
  60. UpdateBy uint64 `p:"update_by" json:"update_by"` // 修改人
  61. CreateTime uint64 `p:"create_time" json:"create_time"` // 创建时间
  62. UpdateTime uint64 `p:"update_time" json:"update_time"` // 修改时间
  63. ModelEdit string `p:"model_edit" json:"model_edit"`
  64. ModelIndexes string `p:"model_indexes" json:"model_indexes"`
  65. ModelList string `p:"model_list" json:"model_list"`
  66. ModelOrder string `p:"model_order" json:"model_order"`
  67. ModelPk string `p:"model_pk" json:"model_pk"`
  68. ModelSort string `p:"model_sort" json:"model_sort"`
  69. SearchList string `p:"search_list" json:"search_list"`
  70. }
  71. type SetFieldsAttrReq struct {
  72. ModelId int `p:"modelId" json:"model_id"`
  73. PkId uint64 `p:"pkId" json:"pk_id"`
  74. FieldsList []FieldInfo
  75. }
  76. // SelectPageReq 用于存储分页查询的请求参数
  77. type SelectPageReq struct {
  78. ModelId int64 `p:"modelId"` //模型ID
  79. BeginTime string `p:"beginTime"` //开始时间
  80. EndTime string `p:"endTime"` //结束时间
  81. PageNum int64 `p:"pageNum"` //当前页码
  82. PageSize int `p:"pageSize"` //每页数
  83. }
  84. // 根据ID查询记录
  85. func GetByID(id int64) (*Entity, error) {
  86. entity, err := Model.FindOne(id)
  87. if err != nil {
  88. g.Log().Error(err)
  89. err = gerror.New("根据ID查询记录出错")
  90. }
  91. if entity == nil {
  92. err = gerror.New("没有查询到对应模型的字段")
  93. }
  94. return entity, nil
  95. }
  96. // AddSave 添加
  97. func AddSave(req *AddReq) error {
  98. if err := Exists(req.FieldName, req.ModelId, 0); err != nil {
  99. return err
  100. }
  101. entity := new(Entity)
  102. entity.ModelId = req.ModelId
  103. entity.FieldName = req.FieldName
  104. entity.FieldTitle = req.FieldTitle
  105. entity.FieldType = req.FieldType
  106. entity.FieldLength = req.FieldLength
  107. entity.FieldDefault = req.FieldDefault
  108. entity.FieldData = req.FieldData
  109. entity.FieldDesc = req.FieldDesc
  110. entity.FieldRules = gstr.Join(req.FieldRules, ",")
  111. entity.CreateBy = req.CreateBy
  112. entity.FieldSort = 1000
  113. entity.FieldWidth = req.FieldWidth
  114. entity.FieldAlign = req.fieldAlign
  115. time := gconv.Uint64(gtime.Timestamp())
  116. entity.CreateTime = time
  117. entity.UpdateTime = time
  118. result, err := entity.Insert()
  119. if err != nil {
  120. return err
  121. }
  122. _, err = result.LastInsertId()
  123. if err != nil {
  124. return err
  125. }
  126. return nil
  127. }
  128. //判断字段是否存在
  129. func Exists(name string, modelId, fieldsId uint) error {
  130. model := Model.Where(Columns.FieldName, name).And(Columns.ModelId, modelId)
  131. if fieldsId != 0 {
  132. model = model.And(Columns.FieldId, fieldsId)
  133. }
  134. entity, err := model.FindOne()
  135. if err != nil {
  136. g.Log().Error(err)
  137. return gerror.New("判断数据重复时出错")
  138. }
  139. if entity != nil {
  140. return gerror.New("已存在相同名称的字段")
  141. }
  142. return nil
  143. }
  144. // 删除
  145. func DeleteByIds(Ids []int) error {
  146. _, err := Model.Delete("field_id in(?)", Ids)
  147. if err != nil {
  148. g.Log().Error(err)
  149. return gerror.New("删除失败")
  150. }
  151. return nil
  152. }
  153. // 根据ID来修改信息
  154. func EditSave(req *EditReq) error {
  155. // 先根据ID来查询要修改的记录
  156. entity, err := GetByID(req.FieldId)
  157. if err != nil {
  158. return err
  159. }
  160. // 修改实体
  161. entity.ModelId = req.ModelId
  162. entity.FieldName = req.FieldName
  163. entity.FieldTitle = req.FieldTitle
  164. entity.FieldType = req.FieldType
  165. entity.FieldLength = req.FieldLength
  166. entity.FieldDefault = req.FieldDefault
  167. entity.FieldData = req.FieldData
  168. entity.FieldDesc = req.FieldDesc
  169. entity.FieldRules = gstr.Join(req.FieldRules, ",")
  170. entity.UpdateBy = req.UpdateBy
  171. entity.UpdateTime = gconv.Uint64(gtime.Timestamp())
  172. entity.FieldWidth = req.FieldWidth
  173. entity.FieldAlign = req.fieldAlign
  174. _, err = entity.Update()
  175. if err != nil {
  176. g.Log().Error(err)
  177. return gerror.New("修改失败")
  178. }
  179. return nil
  180. }
  181. // 获取所有数据
  182. func SelectListAll(req *SelectPageReq) (list []*Entity, err error) {
  183. model := Model
  184. if req != nil {
  185. if req.ModelId != 0 {
  186. model = model.Where(Columns.ModelId, req.ModelId)
  187. }
  188. }
  189. // 查询
  190. list, err = model.Order("field_sort asc,field_id asc").All()
  191. if err != nil {
  192. g.Log().Error(err)
  193. err = gerror.New("查询失败")
  194. return
  195. }
  196. return
  197. }
  198. //通过模型ID删除对应模型字段
  199. func DeleteByModelIds(modelIds []int, tx *gdb.TX) error {
  200. _, err := Model.TX(tx).Delete(Columns.ModelId+" in(?)", modelIds)
  201. if err != nil {
  202. g.Log().Error(err)
  203. return gerror.New("删除字段信息失败")
  204. }
  205. return nil
  206. }