model_fields.go 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  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. FieldWidth string `p:"field_width" json:"field_width"` //字段列表宽度
  64. FieldAlign string `p:"field_align" json:"field_align"` //字段对齐方式
  65. ModelEdit string `p:"model_edit" json:"model_edit"`
  66. ModelIndexes string `p:"model_indexes" json:"model_indexes"`
  67. ModelList string `p:"model_list" json:"model_list"`
  68. ModelOrder string `p:"model_order" json:"model_order"`
  69. ModelPk string `p:"model_pk" json:"model_pk"`
  70. ModelSort string `p:"model_sort" json:"model_sort"`
  71. SearchList string `p:"search_list" json:"search_list"`
  72. }
  73. type SetFieldsAttrReq struct {
  74. ModelId int `p:"modelId" json:"model_id"`
  75. PkId uint64 `p:"pkId" json:"pk_id"`
  76. FieldsList []FieldInfo
  77. }
  78. // SelectPageReq 用于存储分页查询的请求参数
  79. type SelectPageReq struct {
  80. ModelId int64 `p:"modelId"` //模型ID
  81. BeginTime string `p:"beginTime"` //开始时间
  82. EndTime string `p:"endTime"` //结束时间
  83. PageNum int64 `p:"pageNum"` //当前页码
  84. PageSize int `p:"pageSize"` //每页数
  85. }
  86. // 根据ID查询记录
  87. func GetByID(id int64) (*Entity, error) {
  88. entity, err := Model.FindOne(id)
  89. if err != nil {
  90. g.Log().Error(err)
  91. err = gerror.New("根据ID查询记录出错")
  92. }
  93. if entity == nil {
  94. err = gerror.New("没有查询到对应模型的字段")
  95. }
  96. return entity, nil
  97. }
  98. // AddSave 添加
  99. func AddSave(req *AddReq) error {
  100. if err := Exists(req.FieldName, req.ModelId, 0); err != nil {
  101. return err
  102. }
  103. entity := new(Entity)
  104. entity.ModelId = req.ModelId
  105. entity.FieldName = req.FieldName
  106. entity.FieldTitle = req.FieldTitle
  107. entity.FieldType = req.FieldType
  108. entity.FieldLength = req.FieldLength
  109. entity.FieldDefault = req.FieldDefault
  110. entity.FieldData = req.FieldData
  111. entity.FieldDesc = req.FieldDesc
  112. entity.FieldRules = gstr.Join(req.FieldRules, ",")
  113. entity.CreateBy = req.CreateBy
  114. entity.FieldSort = 1000
  115. entity.FieldWidth = req.FieldWidth
  116. entity.FieldAlign = req.FieldAlign
  117. time := gconv.Uint64(gtime.Timestamp())
  118. entity.CreateTime = time
  119. entity.UpdateTime = time
  120. result, err := entity.Insert()
  121. if err != nil {
  122. return err
  123. }
  124. _, err = result.LastInsertId()
  125. if err != nil {
  126. return err
  127. }
  128. return nil
  129. }
  130. //判断字段是否存在
  131. func Exists(name string, modelId, fieldsId uint) error {
  132. model := Model.Where(Columns.FieldName, name).And(Columns.ModelId, modelId)
  133. if fieldsId != 0 {
  134. model = model.And(Columns.FieldId, fieldsId)
  135. }
  136. entity, err := model.FindOne()
  137. if err != nil {
  138. g.Log().Error(err)
  139. return gerror.New("判断数据重复时出错")
  140. }
  141. if entity != nil {
  142. return gerror.New("已存在相同名称的字段")
  143. }
  144. return nil
  145. }
  146. // 删除
  147. func DeleteByIds(Ids []int) error {
  148. _, err := Model.Delete("field_id in(?)", Ids)
  149. if err != nil {
  150. g.Log().Error(err)
  151. return gerror.New("删除失败")
  152. }
  153. return nil
  154. }
  155. // 根据ID来修改信息
  156. func EditSave(req *EditReq) error {
  157. // 先根据ID来查询要修改的记录
  158. entity, err := GetByID(req.FieldId)
  159. if err != nil {
  160. return err
  161. }
  162. // 修改实体
  163. entity.ModelId = req.ModelId
  164. entity.FieldName = req.FieldName
  165. entity.FieldTitle = req.FieldTitle
  166. entity.FieldType = req.FieldType
  167. entity.FieldLength = req.FieldLength
  168. entity.FieldDefault = req.FieldDefault
  169. entity.FieldData = req.FieldData
  170. entity.FieldDesc = req.FieldDesc
  171. entity.FieldRules = gstr.Join(req.FieldRules, ",")
  172. entity.UpdateBy = req.UpdateBy
  173. entity.UpdateTime = gconv.Uint64(gtime.Timestamp())
  174. entity.FieldWidth = req.FieldWidth
  175. entity.FieldAlign = req.FieldAlign
  176. _, err = Model.Save(entity)
  177. if err != nil {
  178. g.Log().Error(err)
  179. return gerror.New("修改失败")
  180. }
  181. return nil
  182. }
  183. // 获取所有数据
  184. func SelectListAll(req *SelectPageReq) (list []*Entity, err error) {
  185. model := Model
  186. if req != nil {
  187. if req.ModelId != 0 {
  188. model = model.Where(Columns.ModelId, req.ModelId)
  189. }
  190. }
  191. // 查询
  192. list, err = model.Order("field_sort asc,field_id asc").All()
  193. if err != nil {
  194. g.Log().Error(err)
  195. err = gerror.New("查询失败")
  196. return
  197. }
  198. return
  199. }
  200. //通过模型ID删除对应模型字段
  201. func DeleteByModelIds(modelIds []int, tx *gdb.TX) error {
  202. _, err := Model.TX(tx).Delete(Columns.ModelId+" in(?)", modelIds)
  203. if err != nil {
  204. g.Log().Error(err)
  205. return gerror.New("删除字段信息失败")
  206. }
  207. return nil
  208. }