service.go.tpl 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. {{- $db := "" }}
  2. {{- if eq .BusinessDB "" }}
  3. {{- $db = "global.GVA_DB" }}
  4. {{- else}}
  5. {{- $db = printf "global.MustGetGlobalDBByDBName(\"%s\")" .BusinessDB }}
  6. {{- end}}
  7. {{- if .IsAdd}}
  8. // Get{{.StructName}}InfoList 新增搜索语句
  9. {{ GenerateSearchConditions .Fields }}
  10. // Get{{.StructName}}InfoList 新增排序语句 请自行在搜索语句中添加orderMap内容
  11. {{- range .Fields}}
  12. {{- if .Sort}}
  13. orderMap["{{.ColumnName}}"] = true
  14. {{- end}}
  15. {{- end}}
  16. {{- if .HasDataSource }}
  17. // Get{{.StructName}}DataSource()方法新增关联语句
  18. {{range $key, $value := .DataSourceMap}}
  19. {{$key}} := make([]map[string]any, 0)
  20. {{$db}}.Table("{{$value.Table}}"){{- if $value.HasDeletedAt}}.Where("deleted_at IS NULL"){{ end }}.Select("{{$value.Label}} as label,{{$value.Value}} as value").Scan(&{{$key}})
  21. res["{{$key}}"] = {{$key}}
  22. {{- end }}
  23. {{- end }}
  24. {{- else}}
  25. package service
  26. import (
  27. {{- if not .OnlyTemplate }}
  28. "context"
  29. "{{.Module}}/global"
  30. "{{.Module}}/plugin/{{.Package}}/model"
  31. {{- if not .IsTree }}
  32. "{{.Module}}/plugin/{{.Package}}/model/request"
  33. {{- else }}
  34. "errors"
  35. {{- end }}
  36. {{- if .AutoCreateResource }}
  37. "gorm.io/gorm"
  38. {{- end}}
  39. {{- if .IsTree }}
  40. "{{.Module}}/utils"
  41. {{- end }}
  42. {{- end }}
  43. )
  44. var {{.StructName}} = new({{.Abbreviation}})
  45. type {{.Abbreviation}} struct {}
  46. {{- $db := "" }}
  47. {{- if eq .BusinessDB "" }}
  48. {{- $db = "global.GVA_DB" }}
  49. {{- else}}
  50. {{- $db = printf "global.MustGetGlobalDBByDBName(\"%s\")" .BusinessDB }}
  51. {{- end}}
  52. {{- if not .OnlyTemplate }}
  53. // Create{{.StructName}} 创建{{.Description}}记录
  54. // Author [yourname](https://github.com/yourname)
  55. func (s *{{.Abbreviation}}) Create{{.StructName}}(ctx context.Context, {{.Abbreviation}} *model.{{.StructName}}) (err error) {
  56. err = {{$db}}.Create({{.Abbreviation}}).Error
  57. return err
  58. }
  59. // Delete{{.StructName}} 删除{{.Description}}记录
  60. // Author [yourname](https://github.com/yourname)
  61. func (s *{{.Abbreviation}}) Delete{{.StructName}}(ctx context.Context, {{.PrimaryField.FieldJson}} string{{- if .AutoCreateResource -}},userID uint{{- end -}}) (err error) {
  62. {{- if .IsTree }}
  63. var count int64
  64. err = {{$db}}.Find(&model.{{.StructName}}{},"parent_id = ?",{{.PrimaryField.FieldJson}}).Count(&count).Error
  65. if count > 0 {
  66. return errors.New("此节点存在子节点不允许删除")
  67. }
  68. if err != nil {
  69. return err
  70. }
  71. {{- end }}
  72. {{- if .AutoCreateResource }}
  73. err = {{$db}}.Transaction(func(tx *gorm.DB) error {
  74. if err := tx.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).Update("deleted_by", userID).Error; err != nil {
  75. return err
  76. }
  77. if err = tx.Delete(&model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error; err != nil {
  78. return err
  79. }
  80. return nil
  81. })
  82. {{- else }}
  83. err = {{$db}}.Delete(&model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} = ?",{{.PrimaryField.FieldJson}}).Error
  84. {{- end }}
  85. return err
  86. }
  87. // Delete{{.StructName}}ByIds 批量删除{{.Description}}记录
  88. // Author [yourname](https://github.com/yourname)
  89. func (s *{{.Abbreviation}}) Delete{{.StructName}}ByIds(ctx context.Context, {{.PrimaryField.FieldJson}}s []string {{- if .AutoCreateResource }},deleted_by uint{{- end}}) (err error) {
  90. {{- if .AutoCreateResource }}
  91. err = {{$db}}.Transaction(func(tx *gorm.DB) error {
  92. if err := tx.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Update("deleted_by", deleted_by).Error; err != nil {
  93. return err
  94. }
  95. if err := tx.Where("{{.PrimaryField.ColumnName}} in ?", {{.PrimaryField.FieldJson}}s).Delete(&model.{{.StructName}}{}).Error; err != nil {
  96. return err
  97. }
  98. return nil
  99. })
  100. {{- else}}
  101. err = {{$db}}.Delete(&[]model.{{.StructName}}{},"{{.PrimaryField.ColumnName}} in ?",{{.PrimaryField.FieldJson}}s).Error
  102. {{- end}}
  103. return err
  104. }
  105. // Update{{.StructName}} 更新{{.Description}}记录
  106. // Author [yourname](https://github.com/yourname)
  107. func (s *{{.Abbreviation}}) Update{{.StructName}}(ctx context.Context, {{.Abbreviation}} model.{{.StructName}}) (err error) {
  108. err = {{$db}}.Model(&model.{{.StructName}}{}).Where("{{.PrimaryField.ColumnName}} = ?",{{.Abbreviation}}.{{.PrimaryField.FieldName}}).Updates(&{{.Abbreviation}}).Error
  109. return err
  110. }
  111. // Get{{.StructName}} 根据{{.PrimaryField.FieldJson}}获取{{.Description}}记录
  112. // Author [yourname](https://github.com/yourname)
  113. func (s *{{.Abbreviation}}) Get{{.StructName}}(ctx context.Context, {{.PrimaryField.FieldJson}} string) ({{.Abbreviation}} model.{{.StructName}}, err error) {
  114. err = {{$db}}.Where("{{.PrimaryField.ColumnName}} = ?", {{.PrimaryField.FieldJson}}).First(&{{.Abbreviation}}).Error
  115. return
  116. }
  117. {{- if .IsTree }}
  118. // Get{{.StructName}}InfoList 分页获取{{.Description}}记录,Tree模式下不添加分页和搜索
  119. // Author [yourname](https://github.com/yourname)
  120. func (s *{{.Abbreviation}}) Get{{.StructName}}InfoList(ctx context.Context) (list []*model.{{.StructName}},err error) {
  121. // 创建db
  122. db := {{$db}}.Model(&model.{{.StructName}}{})
  123. var {{.Abbreviation}}s []*model.{{.StructName}}
  124. err = db.Find(&{{.Abbreviation}}s).Error
  125. return utils.BuildTree({{.Abbreviation}}s), err
  126. }
  127. {{- else }}
  128. // Get{{.StructName}}InfoList 分页获取{{.Description}}记录
  129. // Author [yourname](https://github.com/yourname)
  130. func (s *{{.Abbreviation}}) Get{{.StructName}}InfoList(ctx context.Context, info request.{{.StructName}}Search) (list []model.{{.StructName}}, total int64, err error) {
  131. limit := info.PageSize
  132. offset := info.PageSize * (info.Page - 1)
  133. // 创建db
  134. db := {{$db}}.Model(&model.{{.StructName}}{})
  135. var {{.Abbreviation}}s []model.{{.StructName}}
  136. // 如果有条件搜索 下方会自动创建搜索语句
  137. {{- if .GvaModel }}
  138. if len(info.CreatedAtRange) == 2 {
  139. db = db.Where("created_at BETWEEN ? AND ?", info.CreatedAtRange[0], info.CreatedAtRange[1])
  140. }
  141. {{- end }}
  142. {{ GenerateSearchConditions .Fields }}
  143. err = db.Count(&total).Error
  144. if err!=nil {
  145. return
  146. }
  147. {{- if .NeedSort}}
  148. var OrderStr string
  149. orderMap := make(map[string]bool)
  150. {{- if .GvaModel }}
  151. orderMap["id"] = true
  152. orderMap["created_at"] = true
  153. {{- end }}
  154. {{- range .Fields}}
  155. {{- if .Sort}}
  156. orderMap["{{.ColumnName}}"] = true
  157. {{- end}}
  158. {{- end}}
  159. if orderMap[info.Sort] {
  160. OrderStr = info.Sort
  161. if info.Order == "descending" {
  162. OrderStr = OrderStr + " desc"
  163. }
  164. db = db.Order(OrderStr)
  165. }
  166. {{- end}}
  167. if limit != 0 {
  168. db = db.Limit(limit).Offset(offset)
  169. }
  170. err = db.Find(&{{.Abbreviation}}s).Error
  171. return {{.Abbreviation}}s, total, err
  172. }
  173. {{- end }}
  174. {{- if .HasDataSource }}
  175. func (s *{{.Abbreviation}})Get{{.StructName}}DataSource(ctx context.Context) (res map[string][]map[string]any, err error) {
  176. res = make(map[string][]map[string]any)
  177. {{range $key, $value := .DataSourceMap}}
  178. {{$key}} := make([]map[string]any, 0)
  179. {{$db}}.Table("{{$value.Table}}"){{- if $value.HasDeletedAt}}.Where("deleted_at IS NULL"){{ end }}.Select("{{$value.Label}} as label,{{$value.Value}} as value").Scan(&{{$key}})
  180. res["{{$key}}"] = {{$key}}
  181. {{- end }}
  182. return
  183. }
  184. {{- end }}
  185. {{- end }}
  186. func (s *{{.Abbreviation}})Get{{.StructName}}Public(ctx context.Context) {
  187. }
  188. {{- end }}