api_repo.go 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. package repositories
  2. import (
  3. "fmt"
  4. "time"
  5. "xorm.io/xorm"
  6. "xps/datamodels"
  7. "xps/viewmodels"
  8. )
  9. type ApiRepo struct {
  10. engine *xorm.Engine
  11. }
  12. func NewApiRepo(engine *xorm.Engine) *ApiRepo {
  13. return &ApiRepo{
  14. engine: engine,
  15. }
  16. }
  17. func (d *ApiRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
  18. limit := m["limit"].(int)
  19. page := m["page"].(int)
  20. sqlSelect := ` SELECT A.*,
  21. B.module_title,
  22. C.biz_title,
  23. D.object_title,
  24. D.object_code,
  25. D.object_type,
  26. E.oam_title,
  27. E.oam_type,
  28. E.oam_code,
  29. E.sql_type,
  30. E.sql_statement,
  31. E.sql_count,
  32. E.oam_desc `
  33. sqlFrom := ` FROM api AS A
  34. LEFT JOIN api_module AS B ON (A.module_id = B.module_id)
  35. LEFT JOIN biz AS C ON (A.biz_id = C.biz_id)
  36. LEFT JOIN biz_object AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id)
  37. LEFT JOIN biz_object_oam AS E ON (A.biz_id = E.biz_id AND A.object_id = E.object_id AND A.oam_id = E.oam_id)`
  38. sqlWhere := ` WHERE A.deleted_flag = 0 `
  39. if keywords, ok := m["keywords"]; ok {
  40. sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  41. }
  42. sqlCount := ` SELECT COUNT(*) `
  43. total, err1 := d.engine.SQL(sqlCount + sqlFrom + sqlWhere).Count(new(viewmodels.ApiInfo))
  44. if err1 != nil {
  45. return nil, err1
  46. }
  47. sqlOrderBy := " ORDER BY A.module_id, A.api_id ASC "
  48. pageStart := (page - 1) * limit
  49. sqlLimit := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
  50. datalist := make([]viewmodels.ApiInfo, 0)
  51. err2 := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy + sqlLimit).Find(&datalist)
  52. if err2 != nil {
  53. return nil, err2
  54. }
  55. pageResult := &viewmodels.PageResult{}
  56. pageResult.Data = datalist
  57. pageResult.Total = total
  58. pageResult.PageSize = limit
  59. pageResult.Page = page
  60. return pageResult, nil
  61. }
  62. func (d *ApiRepo) GetList(m map[string]interface{}) ([]viewmodels.ApiInfo, error) {
  63. moduleId := m["moduleId"].(int64)
  64. sqlSelect := ` SELECT A.*,
  65. B.module_title,
  66. C.biz_title,
  67. D.object_title,
  68. D.object_code,
  69. D.object_type,
  70. E.oam_title,
  71. E.oam_type,
  72. E.oam_code,
  73. E.sql_type,
  74. E.sql_statement,
  75. E.sql_count,
  76. E.oam_desc `
  77. sqlFrom := ` FROM api AS A
  78. LEFT JOIN api_module AS B ON (A.module_id = B.module_id)
  79. LEFT JOIN biz AS C ON (A.biz_id = C.biz_id)
  80. LEFT JOIN biz_object AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id)
  81. LEFT JOIN biz_object_oam AS E ON (A.biz_id = E.biz_id AND A.object_id = E.object_id AND A.oam_id = E.oam_id)`
  82. sqlWhere := ` WHERE A.deleted_flag = 0 `
  83. sqlWhere += fmt.Sprintf(" AND A.module_id = %d", moduleId)
  84. if keywords, ok := m["keywords"]; ok {
  85. sqlWhere += ` AND A.api_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
  86. }
  87. sqlOrderBy := " ORDER BY A.module_id, A.api_id ASC "
  88. datalist := make([]viewmodels.ApiInfo, 0)
  89. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  90. if err != nil {
  91. return nil, err
  92. } else {
  93. return datalist, nil
  94. }
  95. }
  96. func (d *ApiRepo) GetAll() ([]viewmodels.ApiInfo, error) {
  97. sqlSelect := ` SELECT A.*,
  98. B.module_title,
  99. C.biz_title,
  100. D.object_title,
  101. D.object_code,
  102. D.object_type,
  103. E.oam_title,
  104. E.oam_type,
  105. E.oam_code,
  106. E.sql_type,
  107. E.sql_statement,
  108. E.sql_count,
  109. E.oam_desc `
  110. sqlFrom := ` FROM api AS A
  111. LEFT JOIN api_module AS B ON (A.module_id = B.module_id)
  112. LEFT JOIN biz AS C ON (A.biz_id = C.biz_id)
  113. LEFT JOIN biz_object AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id)
  114. LEFT JOIN biz_object_oam AS E ON (A.biz_id = E.biz_id AND A.object_id = E.object_id AND A.oam_id = E.oam_id)`
  115. sqlWhere := ` WHERE A.deleted_flag = 0 `
  116. sqlOrderBy := " ORDER BY A.module_id, A.api_id ASC "
  117. datalist := make([]viewmodels.ApiInfo, 0)
  118. err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
  119. if err != nil {
  120. return nil, err
  121. } else {
  122. return datalist, nil
  123. }
  124. }
  125. func (d *ApiRepo) GetById(moduleId, apiId int64) (*viewmodels.ApiInfo, error) {
  126. sqlSelect := ` SELECT A.*,
  127. B.module_title,
  128. C.biz_title,
  129. D.object_title,
  130. D.object_code,
  131. D.object_type,
  132. E.oam_title,
  133. E.oam_type,
  134. E.oam_code,
  135. E.sql_type,
  136. E.sql_statement,
  137. E.sql_count,
  138. E.oam_desc `
  139. sqlFrom := ` FROM api AS A
  140. LEFT JOIN api_module AS B ON (A.module_id = B.module_id)
  141. LEFT JOIN biz AS C ON (A.biz_id = C.biz_id)
  142. LEFT JOIN biz_object AS D ON (A.biz_id = D.biz_id AND A.object_id = D.object_id)
  143. LEFT JOIN biz_object_oam AS E ON (A.biz_id = E.biz_id AND A.object_id = E.object_id AND A.oam_id = E.oam_id)`
  144. sqlWhere := ` WHERE A.deleted_flag = 0 `
  145. sqlWhere += fmt.Sprintf(" AND A.module_id = %d", moduleId)
  146. sqlWhere += fmt.Sprintf(" AND A.api_id = %d", apiId)
  147. data := &viewmodels.ApiInfo{}
  148. has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Get(data)
  149. if !has || err != nil {
  150. return nil, err
  151. } else {
  152. return data, nil
  153. }
  154. }
  155. func (d *ApiRepo) GetByCode(apiCode string) (*viewmodels.ApiInfo, error) {
  156. data := &viewmodels.ApiInfo{}
  157. ok, err := d.engine.
  158. Where("api_code = ?", apiCode).
  159. Get(data)
  160. if !ok && err == nil {
  161. return nil, err
  162. } else {
  163. return data, nil
  164. }
  165. }
  166. func (d *ApiRepo) Create(data *datamodels.Api) error {
  167. data.CreatedAt = time.Now()
  168. _, err := d.engine.Insert(data)
  169. return err
  170. }
  171. func (d *ApiRepo) Update(data *datamodels.Api) error {
  172. moduleId := data.ModuleId
  173. apiId := data.ApiId
  174. data.UpdatedAt = time.Now()
  175. _, err := d.engine.
  176. Where("module_id = ?", moduleId).
  177. Where("api_id = ?", apiId).
  178. Update(data)
  179. return err
  180. }
  181. func (d *ApiRepo) Delete(m map[string]interface{}) error {
  182. moduleId := m["moduleId"].(int64)
  183. apiId := m["apiId"].(int64)
  184. deletedBy := m["deletedBy"].(int64)
  185. data := &datamodels.Api{}
  186. data.DeletedFlag = 1
  187. data.DeletedBy = deletedBy
  188. data.DeletedAt = time.Now()
  189. _, err := d.engine.
  190. Where("module_id = ?", moduleId).
  191. Where("api_id = ?", apiId).
  192. Update(data)
  193. return err
  194. }