capabilities.go 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package model
  2. import (
  3. "project_management/app/e"
  4. "project_management/global"
  5. "project_management/unity"
  6. "project_management/utils"
  7. "strings"
  8. )
  9. type Capabilities struct {
  10. utils.BaseModel
  11. CapName string `gorm:"type:varchar(255);index:idx_name,unique" json:"cap_name"` // 应用名
  12. CpaType string `gorm:"type:varchar(50);" json:"cap_type"` // 应用类型
  13. Image string `gorm:"type:varchar(255);" json:"image"` // 应用图片
  14. CapId string `gorm:"type:varchar(50);unique" json:"cap_id"` // 应用id
  15. CapDescription string `gorm:"type:varchar(255);" json:"cap_description"` // 应用描述
  16. State int `gorm:"type:int;" json:"state"` // 状态 1启用 2禁用
  17. CapUrl string `gorm:"type:varchar(255);" json:"cap_url"` // 应用地址
  18. Price float64 `gorm:"type:decimal(10,5);" json:"price"` //价格
  19. Count int64 `gorm:"type:int;" json:"count"` // 使用数量
  20. IsAdd int `gorm:"type:int;" json:"is_add"` // 是否添加 1已添加
  21. }
  22. type CapabilitiesApply struct {
  23. utils.BaseModel
  24. CapId string `gorm:"type:varchar(50);" json:"cap_id"` // 功能id
  25. AppId string `gorm:"type:varchar(50);" json:"app_id"` // 应用id
  26. }
  27. type CapabilitiesDto struct {
  28. Capabilities
  29. Count int64 `json:"count"` // 使用数量
  30. }
  31. func (c Capabilities) TableName() string {
  32. return "capabilities"
  33. }
  34. // AddCapabilities 添加应用
  35. func (c Capabilities) AddCapabilities(capabilities Capabilities) e.Rescode {
  36. //TODO implement me
  37. capabilities.State = 1
  38. tx := global.DBLink.Table(c.TableName()).Create(&capabilities)
  39. if tx.Error != nil {
  40. if strings.Contains(tx.Error.Error(), "Duplicate entry") {
  41. return e.TheParametersAreRepeated
  42. }
  43. return e.INSERTFAIL
  44. }
  45. if tx.RowsAffected > 0 {
  46. return e.SUCCESS
  47. }
  48. return e.INSERTFAIL
  49. }
  50. // GetCapabilitiesList 获取应用列表
  51. func (c Capabilities) GetCapabilitiesList(params unity.CapQueryPageParams, capabilities Capabilities, queryCond interface{}) (result []Capabilities, total int64, err error) {
  52. //TODO implement me
  53. query := global.DBLink.Table(capabilities.TableName())
  54. if params.Query != "%%" {
  55. query = query.Where(queryCond, params.Query)
  56. }
  57. if params.State != "" {
  58. query = query.Where("state=?", params.State)
  59. }
  60. if err = query.Where("state=?", 1).Count(&total).Error; err != nil {
  61. return nil, 0, err
  62. }
  63. offset := (params.Page - 1) * params.Size
  64. if err = query.Where("state=?", 1).Offset(offset).Limit(params.Size).Order(params.Desc).Find(&result).Error; err != nil {
  65. return nil, 0, err
  66. }
  67. tablename := "appcap_" + params.AppId
  68. var appcap []ApplyCap
  69. tx := global.DBLink.Table(tablename).Select("cap_id").Find(&appcap)
  70. if tx.Error != nil {
  71. if strings.Contains(tx.Error.Error(), "Error 1146 (42S02)") {
  72. return result, total, nil
  73. }
  74. return nil, 0, tx.Error
  75. }
  76. capIdsMap := make(map[string]bool) // 假设cap_id类型为uint
  77. for _, app := range appcap {
  78. capIdsMap[app.CapId] = true
  79. }
  80. for i, _ := range result {
  81. if _, exists := capIdsMap[result[i].CapId]; exists {
  82. result[i].IsAdd = 1
  83. }
  84. }
  85. return result, total, nil
  86. }
  87. // AdminGetCapabilitiesList 管理员获取应用列表
  88. func (c Capabilities) AdminGetCapabilitiesList(params unity.QueryPageParams, capabilities Capabilities, queryCond interface{}) (result []CapabilitiesDto, total int64, err error) {
  89. //TODO implement me
  90. query := global.DBLink.Table(capabilities.TableName())
  91. if params.Query != "%%" {
  92. query = query.Where(queryCond, params.Query)
  93. }
  94. if params.State != "" {
  95. query = query.Where("state=?", params.State)
  96. }
  97. if err = query.Count(&total).Error; err != nil {
  98. return nil, 0, err
  99. }
  100. offset := (params.Page - 1) * params.Size
  101. if err = query.Offset(offset).Limit(params.Size).Order(params.Desc).Find(&result).Error; err != nil {
  102. return nil, 0, err
  103. }
  104. return result, total, nil
  105. }
  106. // GetCapabilitiesById 根据id获取应用信息
  107. func (c Capabilities) GetCapabilitiesById(id string) (Capabilities, e.Rescode) {
  108. //TODO implement me
  109. tx := global.DBLink.Table(c.TableName()).Select("cap_name", "image", "cap_id", "cap_description", "state", "cap_url", "price").Where("cap_id = ?", id).First(&c)
  110. if tx.Error != nil {
  111. return c, e.FINDFAIL
  112. }
  113. if tx.RowsAffected > 0 {
  114. return c, e.SUCCESS
  115. }
  116. return c, e.FINDFAIL
  117. }
  118. // UpdateCapabilities 更新应用信息
  119. func (c Capabilities) UpdateCapabilities(capabilities Capabilities) e.Rescode {
  120. //TODO implement me
  121. tx := global.DBLink.Table(c.TableName()).Where("cap_id = ?", capabilities.CapId).Updates(&capabilities)
  122. if tx.Error != nil {
  123. return e.UPDATEFAIL
  124. }
  125. if tx.RowsAffected > 0 {
  126. return e.SUCCESS
  127. }
  128. return e.UPDATEFAIL
  129. }
  130. func (c Capabilities) DeleteCapabilities(capid string) e.Rescode {
  131. //TODO implement me
  132. tx := global.DBLink.Table(c.TableName()).Where("cap_id = ?", capid).Delete(&Capabilities{})
  133. if tx.Error != nil {
  134. return e.DELETEFAIL
  135. }
  136. if tx.RowsAffected > 0 {
  137. return e.SUCCESS
  138. }
  139. return e.DELETEFAIL
  140. }
  141. // CapIdISRepeat 检查CapId是否重复
  142. func CapIdISRepeat(id string) bool {
  143. tx := global.DBLink.Where("cap_id = ?", id).First(&Capabilities{})
  144. if tx.RowsAffected > 0 {
  145. return true
  146. }
  147. return false
  148. }