mh_goadmin_server/app/admin/apis/basic/supplier.go
chenlin f754f9ccd2 开发v1.4.1需求:
(1)优化采购需求接口,增加入参区分店员和采购视角;
(2)优化供应商接口,开户行改成列表;
2024-06-14 15:15:39 +08:00

240 lines
7.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package basic
import (
"encoding/json"
"errors"
"fmt"
"github.com/gin-gonic/gin"
"go-admin/app/admin/middleware"
"go-admin/app/admin/models"
orm "go-admin/common/global"
"go-admin/logger"
"go-admin/tools"
"go-admin/tools/app"
"net/http"
)
type SupplierCreateRequest struct {
Name string `json:"name" validate:"required"` // 供应商名称
Contact string `json:"contact"` // 联系人
Tel string `json:"tel"` // 手机号
Address string `json:"address"` // 地址
OpeningBank string `json:"opening_bank"` // 开户行
AccountHolder string `json:"account_holder"` // 开户人
BankAccount string `json:"bank_account"` // 银行卡号
PaymentCycle uint32 `json:"payment_cycle" ` // 支付周期
TaxNumber string `json:"tax_number"` // 税点
Landline string `json:"landline"` // 固话
Email string `json:"email"` // 邮箱
CompanyWebsite string `json:"company_website"` // 网站
Province string `json:"province"` // 省份
City string `json:"city"` // 城市
Area string `json:"area"` // 地区
BankList []models.SupplierBankInfo `json:"bank_list" validate:"required"` // 开户银行信息列表
}
// SupplierCreate 添加供应商
// @Summary 创建供应商
// @Tags 供应商管理V1.4.1
// @Produce json
// @Accept json
// @Param request body SupplierCreateRequest true "供应商模型"
// @Success 200 {object} models.Supplier
// @Router /api/v1/supplier/create [post]
func SupplierCreate(c *gin.Context) {
req := new(SupplierCreateRequest)
if err := c.ShouldBindJSON(&req); err != nil {
fmt.Println(err.Error())
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
err := tools.Validate(req)
if err != nil {
app.Error(c, http.StatusBadRequest, err, err.Error())
return
}
supplier := &models.Supplier{
Name: req.Name,
Contact: req.Contact,
Tel: req.Tel,
Address: req.Address,
OpeningBank: req.OpeningBank,
BankAccount: req.BankAccount,
PaymentCycle: req.PaymentCycle,
TaxNumber: req.TaxNumber,
Landline: req.Landline,
Email: req.Email,
CompanyWebsite: req.CompanyWebsite,
Province: req.Province,
City: req.City,
Area: req.Area,
CooperativeBusinessId: middleware.GetCooperativeBusinessId(c),
AccountHolder: req.AccountHolder,
}
if len(req.BankList) != 0 {
// 将 BankList 转换为 JSON 字符串
bankDataJSON, err := json.Marshal(req.BankList)
if err != nil {
tools.HasError(err, "数据解析失败", 500)
}
supplier.BankData = string(bankDataJSON)
} else {
supplier.BankData = ""
}
err = orm.Eloquent.Create(supplier).Error
if err != nil {
logger.Error("[SupplierCreate]:create supplier err", logger.Field("err", err))
app.Error(c, http.StatusInternalServerError, err, "操作失败")
return
}
app.OK(c, supplier, "创建成功")
return
}
type SupplierUpdateRequest struct {
SupplierCreateRequest
Id uint32 `json:"id" validate:"required"`
}
// SupplierUpdate 更新供应商
// @Summary 更新供应商
// @Tags 供应商管理V1.4.1
// @Produce json
// @Accept json
// @Param request body SupplierUpdateRequest true "供应商模型"
// @Success 200 {object} app.Response
// @Router /api/v1/supplier/update [post]
func SupplierUpdate(c *gin.Context) {
req := new(SupplierUpdateRequest)
if err := c.ShouldBindJSON(&req); err != nil {
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
supplier := &models.Supplier{
Name: req.Name,
Contact: req.Contact,
Tel: req.Tel,
Address: req.Address,
OpeningBank: req.OpeningBank,
BankAccount: req.BankAccount,
PaymentCycle: req.PaymentCycle,
TaxNumber: req.TaxNumber,
Landline: req.Landline,
Email: req.Email,
CompanyWebsite: req.CompanyWebsite,
Province: req.Province,
City: req.City,
Area: req.Area,
AccountHolder: req.AccountHolder,
}
if len(req.BankList) != 0 {
// 将 BankList 转换为 JSON 字符串
bankDataJSON, err := json.Marshal(req.BankList)
if err != nil {
tools.HasError(err, "数据解析失败", 500)
}
supplier.BankData = string(bankDataJSON)
} else {
supplier.BankData = ""
}
err := orm.Eloquent.Where("id", req.Id).Updates(supplier).Error
if err != nil {
logger.Error("update supplier err :", logger.Field("err", err), logger.Field("s", supplier))
app.Error(c, http.StatusInternalServerError, err, "更新失败")
return
}
app.OK(c, nil, "更新成功")
return
}
type SupplierListRequest struct {
Number string `json:"number"` //供应商编号
Name string `json:"name"` //供应商名称
}
// SupplierList 供应商列表
// @Summary 供应商列表
// @Tags 供应商管理V1.4.1
// @Produce json
// @Accept json
// @Param request body SupplierListRequest true "供应商查询模型"
// @Success 200 {array} models.Supplier
// @Router /api/v1/supplier/list [post]
func SupplierList(c *gin.Context) {
req := new(SupplierListRequest)
if err := c.ShouldBindJSON(&req); err != nil {
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
list, err := models.GetSupplier(models.GetSupplierRequest{
Name: req.Name,
Number: req.Number,
CooperativeBusinessId: middleware.GetCooperativeBusinessId(c),
})
if err != nil {
app.Error(c, http.StatusInternalServerError, err, "获取列表失败")
return
}
app.OK(c, list, "")
return
}
// SupplierDetail 供应商详情
// @Summary 供应商详情
// @Tags 供应商管理V1.4.1
// @Produce json
// @Param id path int true "供应商id"
// @Success 200 {object} models.Supplier
// @Router /api/v1/supplier/detail/{id} [get]
func SupplierDetail(c *gin.Context) {
id := c.Param("id")
var supplier models.Supplier
err := orm.Eloquent.Table("erp_supplier").Where("id=?", id).Find(&supplier).Error
if err != nil {
logger.Error("get supplier detail failed", logger.Field("err", err), logger.Field("id", id))
app.Error(c, http.StatusInternalServerError, err, "供应商不存在")
return
}
if supplier.BankData != "" {
supplier.BankList = models.DeserializeBankData(supplier.BankData)
supplier.BankData = ""
}
app.OK(c, supplier, "ok")
return
}
// SupplierDel 删除供应商
// @Summary 删除供应商
// @Tags 供应商管理V1.4.1
// @Produce json
// @Param id path int true "供应商id"
// @Success 200 {object} app.Response
// @Router /api/v1/supplier/delete/{id} [delete]
func SupplierDel(c *gin.Context) {
id := c.Param("id")
err := orm.
Eloquent.Table("erp_supplier").
Delete(&models.Supplier{}, id).Error
if err != nil {
logger.Error("get supplier detail failed", logger.Field("err", err), logger.Field("id", id))
app.Error(c, http.StatusInternalServerError, err, "删除失败")
return
}
app.OK(c, nil, "删除成功")
return
}