mh_goadmin_server/app/admin/models/supplier.go

83 lines
2.6 KiB
Go
Raw Normal View History

2023-10-13 09:20:44 +00:00
package models
import (
"fmt"
2023-10-17 07:33:05 +00:00
"go-admin/app/admin/models/common"
2023-10-13 09:20:44 +00:00
orm "go-admin/common/global"
"go-admin/logger"
"gorm.io/gorm"
)
type Supplier struct {
Model
2023-10-16 08:46:20 +00:00
Number string `json:"number" gorm:"index"` //编号
Name string `json:"name"` //供应商名称
Contact string `json:"contact"` //联系人
Tel string `json:"tel"` //手机号
Province string `json:"province"` //省
City string `json:"city"` //市
Area string `json:"area"` //区
Address string `json:"address"` //详细地址
AccountHolder string `json:"account_holder"` //开户人
OpeningBank string `json:"opening_bank"` //开户银行
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"` //网站
CooperativeBusinessId uint32 `json:"cooperative_business_id"` //合作商id
2023-10-13 09:20:44 +00:00
}
func (s *Supplier) TableName() string {
return "erp_supplier"
}
func (s *Supplier) BeforeCreate(tx *gorm.DB) error {
if s.Number == "" {
2023-10-17 07:33:05 +00:00
var count int64
err := tx.Table(s.TableName()).
Unscoped().
Scopes(common.ScopeCooperativeBusiness(s.CooperativeBusinessId)).
Count(&count).Error
2023-10-13 09:20:44 +00:00
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("get supplier count failed", logger.Field("err", err), logger.Field("s", s))
2023-10-13 09:20:44 +00:00
return err
}
2023-10-17 07:33:05 +00:00
s.Number = fmt.Sprintf("%03d", count)
2023-10-13 09:20:44 +00:00
}
return nil
}
type GetSupplierRequest struct {
2023-10-16 08:46:20 +00:00
Name string //供应商名称
Number string //供应商编号
CooperativeBusinessId uint32 //合作商id
2023-10-13 09:20:44 +00:00
}
func GetSupplier(req GetSupplierRequest) ([]*Supplier, error) {
var list []*Supplier
m := orm.Eloquent.Model(Supplier{})
if req.Name != "" {
m = m.Where("name = ?", req.Number)
}
if req.Number != "" {
m = m.Where("number = ?", req.Number)
}
2023-10-17 07:33:05 +00:00
m = m.Scopes(common.ScopeCooperativeBusiness(req.CooperativeBusinessId))
2023-10-16 08:46:20 +00:00
2023-10-13 09:20:44 +00:00
err := m.
Order("created_at desc").
Find(&list).
Error
if err != nil {
2023-10-14 08:19:04 +00:00
logger.Error("get supplier list err", logger.Field("err", err), logger.Field("req", req))
2023-10-13 09:20:44 +00:00
return nil, err
}
return list, nil
}