variety.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. package supply_analysis
  2. import (
  3. "github.com/beego/beego/v2/client/orm"
  4. "time"
  5. )
  6. // Variety variety 品种表
  7. type Variety struct {
  8. VarietyId int `orm:"column(variety_id);pk"`
  9. VarietyName string `description:"品种名称"`
  10. LastUpdateSysUserId int `description:"最后更新人id"`
  11. LastUpdateSysUserRealName string `description:"最后更新人名称"`
  12. SysUserId int `description:"创建人id"`
  13. SysUserRealName string `description:"创建人姓名"`
  14. ModifyTime time.Time `description:"修改时间"`
  15. CreateTime time.Time `description:"创建时间"`
  16. }
  17. // GetVarietyById 根据品种id获取品种详情
  18. func GetVarietyById(id int) (item *Variety, err error) {
  19. o := orm.NewOrm()
  20. sql := `SELECT * FROM variety WHERE variety_id = ?`
  21. err = o.Raw(sql, id).QueryRow(&item)
  22. return
  23. }
  24. // GetVarietyByName 根据品种名称获取品种详情
  25. func GetVarietyByName(name string) (item *Variety, err error) {
  26. o := orm.NewOrm()
  27. sql := `SELECT * FROM variety WHERE variety_name = ?`
  28. err = o.Raw(sql, name).QueryRow(&item)
  29. return
  30. }
  31. // AddVariety 添加品种
  32. func AddVariety(item *Variety) (lastId int64, err error) {
  33. o := orm.NewOrm()
  34. lastId, err = o.Insert(item)
  35. return
  36. }
  37. // CreateVariety 添加品种
  38. func CreateVariety(item *Variety, adminIdList []int) (err error) {
  39. to, err := orm.NewOrm().Begin()
  40. if err != nil {
  41. return
  42. }
  43. defer func() {
  44. if err != nil {
  45. _ = to.Rollback()
  46. } else {
  47. _ = to.Commit()
  48. }
  49. }()
  50. lastId, err := to.Insert(item)
  51. if err != nil {
  52. return
  53. }
  54. item.VarietyId = int(lastId)
  55. varietyAdminPermissionList := make([]*VarietyAdminPermission, 0)
  56. for _, adminId := range adminIdList {
  57. varietyAdminPermissionList = append(varietyAdminPermissionList, &VarietyAdminPermission{
  58. //Id: 0,
  59. VarietyId: item.VarietyId,
  60. SysUserId: adminId,
  61. CreateTime: time.Now(),
  62. })
  63. }
  64. if len(varietyAdminPermissionList) > 0 {
  65. _, err = to.InsertMulti(len(varietyAdminPermissionList), varietyAdminPermissionList)
  66. }
  67. return
  68. }
  69. // EditVariety 编辑品种
  70. func EditVariety(item *Variety, adminIdList []int) (err error) {
  71. to, err := orm.NewOrm().Begin()
  72. if err != nil {
  73. return
  74. }
  75. defer func() {
  76. if err != nil {
  77. _ = to.Rollback()
  78. } else {
  79. _ = to.Commit()
  80. }
  81. }()
  82. _, err = to.Update(item, "VarietyName", "LastUpdateSysUserId", "LastUpdateSysUserRealName", "ModifyTime")
  83. if err != nil {
  84. return
  85. }
  86. // 删除历史的权限配置
  87. sql := `DELETE FROM variety_admin_permission where variety_id = ? `
  88. _, err = to.Raw(sql, item.VarietyId).Exec()
  89. if err != nil {
  90. return
  91. }
  92. // 添加新的权限配置
  93. varietyAdminPermissionList := make([]*VarietyAdminPermission, 0)
  94. for _, adminId := range adminIdList {
  95. varietyAdminPermissionList = append(varietyAdminPermissionList, &VarietyAdminPermission{
  96. //Id: 0,
  97. VarietyId: item.VarietyId,
  98. SysUserId: adminId,
  99. CreateTime: time.Now(),
  100. })
  101. }
  102. if len(varietyAdminPermissionList) > 0 {
  103. _, err = to.InsertMulti(len(varietyAdminPermissionList), varietyAdminPermissionList)
  104. }
  105. return
  106. }
  107. // VarietyItem 列表页返回的数据结构
  108. type VarietyItem struct {
  109. VarietyId int `orm:"column(variety_id);pk"`
  110. VarietyName string `description:"品种名称"`
  111. LastUpdateSysUserId int `description:"最后更新人id"`
  112. LastUpdateSysUserRealName string `description:"最后更新人名称"`
  113. PermissionUserId string `description:"有操作权限的用户id" json:"-"`
  114. ModifyTime string `description:"修改时间"`
  115. CreateTime string `description:"创建时间"`
  116. Button VarietyButton `description:"操作按钮权限"`
  117. }
  118. type VarietyButton struct {
  119. Edit bool `description:"操作权限"`
  120. Delete bool `description:"删除权限"`
  121. Analyse bool `description:"分析权限"`
  122. }
  123. // GetListBySuperAdminPage 不区分是否有分析权限的获取分页数据
  124. func (item Variety) GetListBySuperAdminPage(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*VarietyItem, err error) {
  125. o := orm.NewOrm()
  126. baseSql := ` FROM ( SELECT a.*, GROUP_CONCAT(DISTINCT b.sys_user_id ORDER BY b.sys_user_id ASC SEPARATOR ',') AS permission_user_id FROM variety a
  127. LEFT JOIN variety_admin_permission b on a.variety_id=b.variety_id
  128. LEFT JOIN variety_edb_info c on a.variety_id=c.variety_id WHERE 1=1 `
  129. if condition != "" {
  130. baseSql += condition
  131. }
  132. baseSql += ` GROUP BY a.variety_id ) d `
  133. // 数据总数
  134. totalSql := `SELECT COUNT(1) total ` + baseSql
  135. err = o.Raw(totalSql, pars).QueryRow(&total)
  136. if err != nil {
  137. return
  138. }
  139. // 列表页数据
  140. listSql := `SELECT * ` + baseSql + ` ORDER BY modify_time DESC,variety_id DESC LIMIT ?,?`
  141. _, err = o.Raw(listSql, pars, startSize, pageSize).QueryRows(&items)
  142. return
  143. }
  144. // GetListByPage 获取分页数据
  145. func (item Variety) GetListByPage(condition string, pars []interface{}, startSize, pageSize int) (total int, items []*VarietyItem, err error) {
  146. o := orm.NewOrm()
  147. baseSql := ` FROM ( SELECT a.*, GROUP_CONCAT(DISTINCT b.sys_user_id ORDER BY b.sys_user_id ASC SEPARATOR ',') AS permission_user_id FROM variety a
  148. JOIN variety_admin_permission b on a.variety_id=b.variety_id
  149. JOIN variety_edb_info c on a.variety_id=c.variety_id WHERE 1=1 `
  150. if condition != "" {
  151. baseSql += condition
  152. }
  153. baseSql += ` GROUP BY a.variety_id ) d `
  154. // 数据总数
  155. totalSql := `SELECT COUNT(1) total ` + baseSql
  156. err = o.Raw(totalSql, pars).QueryRow(&total)
  157. if err != nil {
  158. return
  159. }
  160. // 列表页数据
  161. listSql := `SELECT * ` + baseSql + ` ORDER BY modify_time DESC,variety_id DESC LIMIT ?,?`
  162. _, err = o.Raw(listSql, pars, startSize, pageSize).QueryRows(&items)
  163. return
  164. }
  165. // Update 更基础信息
  166. func (variety *Variety) Update(cols []string) (err error) {
  167. o := orm.NewOrm()
  168. _, err = o.Update(variety, cols...)
  169. return
  170. }
  171. // GetVarietyMaxSort 获取图表分类下最大的排序数
  172. func GetVarietyMaxSort(parentId int) (sort int, err error) {
  173. o := orm.NewOrm()
  174. sql := `SELECT Max(sort) AS sort FROM future_good_chart_classify WHERE parent_id=? AND is_delete=0 `
  175. err = o.Raw(sql, parentId).QueryRow(&sort)
  176. return
  177. }
  178. type VarietyView struct {
  179. VarietyId int `orm:"column(future_good_chart_classify_id);pk"`
  180. VarietyName string `description:"分类名称"`
  181. ParentId int `description:"父级id"`
  182. }
  183. func GetVarietyViewById(classifyId int) (item *VarietyView, err error) {
  184. o := orm.NewOrm()
  185. sql := `SELECT * FROM future_good_chart_classify WHERE future_good_chart_classify_id=? AND is_delete=0 `
  186. err = o.Raw(sql, classifyId).QueryRow(&item)
  187. return
  188. }