vendor_meta.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package controller
  2. import (
  3. "strconv"
  4. "one-api/common"
  5. "one-api/model"
  6. "github.com/gin-gonic/gin"
  7. )
  8. // GetAllVendors 获取供应商列表(分页)
  9. func GetAllVendors(c *gin.Context) {
  10. pageInfo := common.GetPageQuery(c)
  11. vendors, err := model.GetAllVendors(pageInfo.GetStartIdx(), pageInfo.GetPageSize())
  12. if err != nil {
  13. common.ApiError(c, err)
  14. return
  15. }
  16. var total int64
  17. model.DB.Model(&model.Vendor{}).Count(&total)
  18. pageInfo.SetTotal(int(total))
  19. pageInfo.SetItems(vendors)
  20. common.ApiSuccess(c, pageInfo)
  21. }
  22. // SearchVendors 搜索供应商
  23. func SearchVendors(c *gin.Context) {
  24. keyword := c.Query("keyword")
  25. pageInfo := common.GetPageQuery(c)
  26. vendors, total, err := model.SearchVendors(keyword, pageInfo.GetStartIdx(), pageInfo.GetPageSize())
  27. if err != nil {
  28. common.ApiError(c, err)
  29. return
  30. }
  31. pageInfo.SetTotal(int(total))
  32. pageInfo.SetItems(vendors)
  33. common.ApiSuccess(c, pageInfo)
  34. }
  35. // GetVendorMeta 根据 ID 获取供应商
  36. func GetVendorMeta(c *gin.Context) {
  37. idStr := c.Param("id")
  38. id, err := strconv.Atoi(idStr)
  39. if err != nil {
  40. common.ApiError(c, err)
  41. return
  42. }
  43. v, err := model.GetVendorByID(id)
  44. if err != nil {
  45. common.ApiError(c, err)
  46. return
  47. }
  48. common.ApiSuccess(c, v)
  49. }
  50. // CreateVendorMeta 新建供应商
  51. func CreateVendorMeta(c *gin.Context) {
  52. var v model.Vendor
  53. if err := c.ShouldBindJSON(&v); err != nil {
  54. common.ApiError(c, err)
  55. return
  56. }
  57. if v.Name == "" {
  58. common.ApiErrorMsg(c, "供应商名称不能为空")
  59. return
  60. }
  61. // 创建前先检查名称
  62. if dup, err := model.IsVendorNameDuplicated(0, v.Name); err != nil {
  63. common.ApiError(c, err)
  64. return
  65. } else if dup {
  66. common.ApiErrorMsg(c, "供应商名称已存在")
  67. return
  68. }
  69. if err := v.Insert(); err != nil {
  70. common.ApiError(c, err)
  71. return
  72. }
  73. common.ApiSuccess(c, &v)
  74. }
  75. // UpdateVendorMeta 更新供应商
  76. func UpdateVendorMeta(c *gin.Context) {
  77. var v model.Vendor
  78. if err := c.ShouldBindJSON(&v); err != nil {
  79. common.ApiError(c, err)
  80. return
  81. }
  82. if v.Id == 0 {
  83. common.ApiErrorMsg(c, "缺少供应商 ID")
  84. return
  85. }
  86. // 名称冲突检查
  87. if dup, err := model.IsVendorNameDuplicated(v.Id, v.Name); err != nil {
  88. common.ApiError(c, err)
  89. return
  90. } else if dup {
  91. common.ApiErrorMsg(c, "供应商名称已存在")
  92. return
  93. }
  94. if err := v.Update(); err != nil {
  95. common.ApiError(c, err)
  96. return
  97. }
  98. common.ApiSuccess(c, &v)
  99. }
  100. // DeleteVendorMeta 删除供应商
  101. func DeleteVendorMeta(c *gin.Context) {
  102. idStr := c.Param("id")
  103. id, err := strconv.Atoi(idStr)
  104. if err != nil {
  105. common.ApiError(c, err)
  106. return
  107. }
  108. if err := model.DB.Delete(&model.Vendor{}, id).Error; err != nil {
  109. common.ApiError(c, err)
  110. return
  111. }
  112. common.ApiSuccess(c, nil)
  113. }