订单发货

This commit is contained in:
范俊成 2023-09-26 15:51:48 +08:00
parent 957fcc4df0
commit 1397d7098a
3 changed files with 100 additions and 41 deletions

View File

@ -78,6 +78,12 @@ func DeliverGoods(c *gin.Context) {
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return return
} }
if m.DeliverShopperCode != "" && !models.CheckCode(m.DeliverShopperCode) {
app.Error(c, http.StatusBadRequest, errors.New("deliver_shopper_code err"), "店员码错误")
return
}
// 更新卡的状态 // 更新卡的状态
if len(m.GameCardSerialNumbers) == 0 { if len(m.GameCardSerialNumbers) == 0 {
logger.Errorf("err:") logger.Errorf("err:")

View File

@ -41,37 +41,41 @@ const (
type Order struct { type Order struct {
Model Model
Uid uint64 `json:"uid" gorm:"index"` Uid uint64 `json:"uid" gorm:"index"`
GameCardId uint64 `json:"game_card_id" gorm:"index"` // 游戏id GameCardId uint64 `json:"game_card_id" gorm:"index"` // 游戏id
GameCardGoodsId uint64 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id GameCardGoodsId uint64 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id
GameCardSerialNumber string `json:"game_card_serial_number" gorm:"index"` // 游戏卡编号 GameCardSerialNumber string `json:"game_card_serial_number" gorm:"index"` // 游戏卡编号
StoreId uint64 `json:"store_id" gorm:"index"` // 门店id StoreId uint64 `json:"store_id" gorm:"index"` // 门店id
UserAddressId uint64 `json:"user_address_id"` // 地址id UserAddressId uint64 `json:"user_address_id"` // 地址id
DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递 DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递
Count uint32 `json:"count"` // 数量 Count uint32 `json:"count"` // 数量
PickupCode string `json:"pickup_code"` // 取货码 PickupCode string `json:"pickup_code"` // 取货码
CardStatus uint8 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消 CardStatus uint8 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消
DeliveryTime time.Time `json:"delivery_time"` // 发货时间 DeliveryTime time.Time `json:"delivery_time"` // 发货时间
ReceiptTime time.Time `json:"receipt_time"` // 收货时间 签收时间 ReceiptTime time.Time `json:"receipt_time"` // 收货时间 签收时间
PayTime time.Time `json:"pay_time"` // 支付时间 PayTime time.Time `json:"pay_time"` // 支付时间
PayStatus uint8 `json:"pay_status"` // 支付状态 1-未支付 2-已支付 PayStatus uint8 `json:"pay_status"` // 支付状态 1-未支付 2-已支付
OrderSn string `json:"order_sn" gorm:"type:varchar(255);not null;COMMENT:'订单编号'"` // 订单编号 OrderSn string `json:"order_sn" gorm:"type:varchar(255);not null;COMMENT:'订单编号'"` // 订单编号
PayPrice uint32 `json:"pay_price"` // 实际付款金额(包含运费) PayPrice uint32 `json:"pay_price"` // 实际付款金额(包含运费)
Postage uint32 `json:"postage"` // 邮费 Postage uint32 `json:"postage"` // 邮费
ExpressCompany string `json:"express_company"` // 物流公司 ExpressCompany string `json:"express_company"` // 物流公司
ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号 ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号
ExpressNo string `json:"express_no"` // 物流单号 ExpressNo string `json:"express_no"` // 物流单号
ExpressDuration uint64 `json:"express_duration"` // 物流时长 ExpressDuration uint64 `json:"express_duration"` // 物流时长
RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id
RevertTime time.Time `json:"revert_time"` // 归还时间 RevertTime time.Time `json:"revert_time"` // 归还时间
RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司 RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司
RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号 RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号
RevertExpressNo string `json:"revert_express_no"` // 归还物流单号 RevertExpressNo string `json:"revert_express_no"` // 归还物流单号
RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长 RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长
CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id
CooperativeName string `json:"cooperative_name"` // 合作商名称 CooperativeName string `json:"cooperative_name"` // 合作商名称
GameCardSerialNumbers []string `json:"game_card_serial_numbers" gorm:"-"` //收货店员码
OrderCards []OrderCard `json:"order_cards" gorm:"-"`
GameCardSerialNumbers []string `json:"game_card_serial_numbers" gorm:"-"`
OrderCards []OrderCard `json:"order_cards" gorm:"-"`
DeliverShopperCode string `json:"deliver_shopper_code" gorm:"-"` //发货店员码
RevertShopperCode string `json:"revert_shopper_code" gorm:"-"`
} }
func (*Order) TableName() string { func (*Order) TableName() string {
@ -112,6 +116,11 @@ type OrderCard struct {
GameCoverImg string `json:"cover_img" gorm:"-"` // 封面 GameCoverImg string `json:"cover_img" gorm:"-"` // 封面
Order *Order `json:"order" gorm:"-"` // 订单 Order *Order `json:"order" gorm:"-"` // 订单
RevertStore *Store `json:"revert_store" gorm:"-"` // 归还门店 RevertStore *Store `json:"revert_store" gorm:"-"` // 归还门店
DeliverShopperCode string `json:"deliver_shopper_code"` //发货店员码
RevertShopperCode string `json:"revert_shopper_code"` //收货识别码
DeliverShopper *ShopperPromotionCode `json:"deliver_shopper" gorm:"foreignKey:deliver_shopper_code;references:code"` //发货店员
RevertShopper *ShopperPromotionCode `json:"revert_shopper" gorm:"foreignKey:revert_shopper_code;references:code"` //收货店员
} }
func (*OrderCard) TableName() string { func (*OrderCard) TableName() string {
@ -350,7 +359,14 @@ func (m *Order) Info() (map[string]interface{}, error) {
} }
var orderCards []OrderCard var orderCards []OrderCard
err = orm.Eloquent.Table("order_card").Where("order_id=?", m.ID).Find(&orderCards).Error err = orm.Eloquent.Table("order_card").
Preload("DeliverShopper").
Preload("DeliverShopper.User").
Preload("RevertShopper").
Preload("RevertShopper.User").
Where("order_id=?", m.ID).
Find(&orderCards).
Error
if err != nil { if err != nil {
logger.Error("err:", err) logger.Error("err:", err)
return ret, err return ret, err
@ -671,12 +687,13 @@ func (m *Order) Deliver() (error, string) {
//}).Error //}).Error
err = begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{ err = begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{
"store_id": m.StoreId, "store_id": m.StoreId,
"delivery_time": time.Now(), "delivery_time": time.Now(),
"game_card_goods_id": gameCardGoods.ID, "game_card_goods_id": gameCardGoods.ID,
"serial_number": gameCardGoods.SerialNumber, "serial_number": gameCardGoods.SerialNumber,
"card_status": 2, "card_status": 2,
"receipt_time": receiptTime, "receipt_time": receiptTime,
"deliver_shopper_code": m.DeliverShopperCode,
}).Error }).Error
if err != nil { if err != nil {
begin.Rollback() begin.Rollback()
@ -936,9 +953,10 @@ func (m *Order) Revert() error {
eg.Go(func() error { eg.Go(func() error {
err := begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{ err := begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{
//"store_id": m.StoreId, //"store_id": m.StoreId,
"card_status": OrderCardStatusCompleted, "card_status": OrderCardStatusCompleted,
"revert_store_id": m.RevertStoreId, "revert_store_id": m.RevertStoreId,
"revert_time": time.Now(), "revert_time": time.Now(),
"revert_shopper_code": m.RevertShopperCode,
}).Error }).Error
if err != nil { if err != nil {
logger.Errorf("err:", err) logger.Errorf("err:", err)

View File

@ -0,0 +1,35 @@
package models
import (
orm "go-admin/common/global"
"go-admin/logger"
)
type ShopperPromotionCode struct {
Model
Uid uint32 `json:"uid"`
State int8 `json:"state"`
Code string `json:"code"`
StoreId uint32 `json:"store_id"`
User *UserInfo `json:"user" gorm:"foreignKey:uid;references:uid"`
}
func (s ShopperPromotionCode) TableName() string {
return "shopper_promotion_code"
}
func CheckCode(code string) bool {
var c int64
err := orm.Eloquent.
Table("shopper_promotion_code").
Where("code = ?", code).
Count(&c).
Error
if err != nil {
logger.Error("check code err", err)
return false
}
return c > 0
}