vendor_meta.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. if err := v.Insert(); err != nil {
  62. common.ApiError(c, err)
  63. return
  64. }
  65. common.ApiSuccess(c, &v)
  66. }
  67. // UpdateVendorMeta 更新供应商
  68. func UpdateVendorMeta(c *gin.Context) {
  69. var v model.Vendor
  70. if err := c.ShouldBindJSON(&v); err != nil {
  71. common.ApiError(c, err)
  72. return
  73. }
  74. if v.Id == 0 {
  75. common.ApiErrorMsg(c, "缺少供应商 ID")
  76. return
  77. }
  78. // 检查名称冲突
  79. var dup int64
  80. _ = model.DB.Model(&model.Vendor{}).Where("name = ? AND id <> ?", v.Name, v.Id).Count(&dup).Error
  81. if dup > 0 {
  82. common.ApiErrorMsg(c, "供应商名称已存在")
  83. return
  84. }
  85. if err := v.Update(); err != nil {
  86. common.ApiError(c, err)
  87. return
  88. }
  89. common.ApiSuccess(c, &v)
  90. }
  91. // DeleteVendorMeta 删除供应商
  92. func DeleteVendorMeta(c *gin.Context) {
  93. idStr := c.Param("id")
  94. id, err := strconv.Atoi(idStr)
  95. if err != nil {
  96. common.ApiError(c, err)
  97. return
  98. }
  99. if err := model.DB.Delete(&model.Vendor{}, id).Error; err != nil {
  100. common.ApiError(c, err)
  101. return
  102. }
  103. common.ApiSuccess(c, nil)
  104. }