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

97 lines
3.6 KiB
Go

package models
import (
"fmt"
"go-admin/app/admin/models/common"
orm "go-admin/common/global"
"go-admin/logger"
"gorm.io/gorm"
)
type Supplier struct {
Model
Number string `json:"number" gorm:"index"` // 编号
Name string `json:"name"` // 供应商名称
Province string `json:"province"` // 省
City string `json:"city"` // 市
Area string `json:"area"` // 区
Address string `json:"address"` // 详细地址
Contact string `json:"contact"` // 联系人
Tel string `json:"tel"` // 手机号
Landline string `json:"landline"` // 座机电话
Email string `json:"email"` // 电子邮件
CompanyWebsite string `json:"company_website"` // 公司网址
PaymentCycle uint32 `json:"payment_cycle"` // 付款周期/天
TaxNumber string `json:"tax_number"` // 税号
CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id
AccountHolder string `json:"account_holder"` // 开户人
OpeningBank string `json:"opening_bank"` // 开户银行
BankAccount string `json:"bank_account"` // 银行账号
BankData string `gorm:"type:json" json:"bank_data,omitempty"` // 开户银行信息
BankList []SupplierBankInfo `json:"bank_list" gorm:"-" ` // 开户银行信息列表
}
// SupplierBankInfo 开户银行信息列表
type SupplierBankInfo struct {
AccountHolder string `json:"account_holder"` // 开户人
OpeningBank string `json:"opening_bank"` // 开户银行
BankAccount string `json:"bank_account"` // 银行账号
}
func (s *Supplier) TableName() string {
return "erp_supplier"
}
func (s *Supplier) BeforeCreate(tx *gorm.DB) error {
if s.Number == "" {
var count int64
err := tx.Table(s.TableName()).
Unscoped().
Scopes(common.ScopeBusiness(s.CooperativeBusinessId)).
Count(&count).Error
if err != nil {
logger.Error("get supplier count failed", logger.Field("err", err), logger.Field("s", s))
return err
}
s.Number = fmt.Sprintf("%03d", count+1)
}
return nil
}
type GetSupplierRequest struct {
Name string //供应商名称
Number string //供应商编号
CooperativeBusinessId uint32 //合作商id
}
func GetSupplier(req GetSupplierRequest) ([]*Supplier, error) {
var list []*Supplier
m := orm.Eloquent.Model(Supplier{})
if req.Name != "" {
m = m.Where("name = ?", req.Name)
}
if req.Number != "" {
m = m.Where("number = ?", req.Number)
}
m = m.Scopes(common.ScopeBusiness(req.CooperativeBusinessId))
err := m.Order("created_at desc").Find(&list).Error
if err != nil {
logger.Error("get supplier list err", logger.Field("err", err), logger.Field("req", req))
return nil, err
}
// 反序列化 BankData
for i, v := range list {
if list[i].BankData != "" {
list[i].BankList = DeserializeBankData(v.BankData)
list[i].BankData = ""
}
}
return list, nil
}