From 1397d7098a7f5c8698cd2669cf12f33f349794f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E4=BF=8A=E6=88=90?= Date: Tue, 26 Sep 2023 15:51:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=91=E8=B4=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/apis/ordermanage/order.go | 6 ++ app/admin/models/order.go | 100 ++++++++++++--------- app/admin/models/shopper_promotion_code.go | 35 ++++++++ 3 files changed, 100 insertions(+), 41 deletions(-) create mode 100644 app/admin/models/shopper_promotion_code.go diff --git a/app/admin/apis/ordermanage/order.go b/app/admin/apis/ordermanage/order.go index 3dd8680..376e37d 100644 --- a/app/admin/apis/ordermanage/order.go +++ b/app/admin/apis/ordermanage/order.go @@ -78,6 +78,12 @@ func DeliverGoods(c *gin.Context) { app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误") 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 { logger.Errorf("err:") diff --git a/app/admin/models/order.go b/app/admin/models/order.go index 953d406..2a4dba3 100644 --- a/app/admin/models/order.go +++ b/app/admin/models/order.go @@ -41,37 +41,41 @@ const ( type Order struct { Model - Uid uint64 `json:"uid" gorm:"index"` - GameCardId uint64 `json:"game_card_id" gorm:"index"` // 游戏id - GameCardGoodsId uint64 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id - GameCardSerialNumber string `json:"game_card_serial_number" gorm:"index"` // 游戏卡编号 - StoreId uint64 `json:"store_id" gorm:"index"` // 门店id - UserAddressId uint64 `json:"user_address_id"` // 地址id - DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递 - Count uint32 `json:"count"` // 数量 - PickupCode string `json:"pickup_code"` // 取货码 - CardStatus uint8 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消 - DeliveryTime time.Time `json:"delivery_time"` // 发货时间 - ReceiptTime time.Time `json:"receipt_time"` // 收货时间 签收时间 - PayTime time.Time `json:"pay_time"` // 支付时间 - PayStatus uint8 `json:"pay_status"` // 支付状态 1-未支付 2-已支付 - OrderSn string `json:"order_sn" gorm:"type:varchar(255);not null;COMMENT:'订单编号'"` // 订单编号 - PayPrice uint32 `json:"pay_price"` // 实际付款金额(包含运费) - Postage uint32 `json:"postage"` // 邮费 - ExpressCompany string `json:"express_company"` // 物流公司 - ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号 - ExpressNo string `json:"express_no"` // 物流单号 - ExpressDuration uint64 `json:"express_duration"` // 物流时长 - RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id - RevertTime time.Time `json:"revert_time"` // 归还时间 - RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司 - RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号 - RevertExpressNo string `json:"revert_express_no"` // 归还物流单号 - RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长 - CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id - CooperativeName string `json:"cooperative_name"` // 合作商名称 - GameCardSerialNumbers []string `json:"game_card_serial_numbers" gorm:"-"` - OrderCards []OrderCard `json:"order_cards" gorm:"-"` + Uid uint64 `json:"uid" gorm:"index"` + GameCardId uint64 `json:"game_card_id" gorm:"index"` // 游戏id + GameCardGoodsId uint64 `json:"game_card_goods_id" gorm:"index"` // 游戏卡id + GameCardSerialNumber string `json:"game_card_serial_number" gorm:"index"` // 游戏卡编号 + StoreId uint64 `json:"store_id" gorm:"index"` // 门店id + UserAddressId uint64 `json:"user_address_id"` // 地址id + DeliveryType uint8 `json:"delivery_type"` // 取货类型 1-门店自取 2-快递 + Count uint32 `json:"count"` // 数量 + PickupCode string `json:"pickup_code"` // 取货码 + CardStatus uint8 `json:"card_status"` // 1-待取货中 2-游玩中 3-归还中 4-已完成 5-已取消 + DeliveryTime time.Time `json:"delivery_time"` // 发货时间 + ReceiptTime time.Time `json:"receipt_time"` // 收货时间 签收时间 + PayTime time.Time `json:"pay_time"` // 支付时间 + PayStatus uint8 `json:"pay_status"` // 支付状态 1-未支付 2-已支付 + OrderSn string `json:"order_sn" gorm:"type:varchar(255);not null;COMMENT:'订单编号'"` // 订单编号 + PayPrice uint32 `json:"pay_price"` // 实际付款金额(包含运费) + Postage uint32 `json:"postage"` // 邮费 + ExpressCompany string `json:"express_company"` // 物流公司 + ExpressCompanyNo string `json:"express_company_no"` // 物流公司编号 + ExpressNo string `json:"express_no"` // 物流单号 + ExpressDuration uint64 `json:"express_duration"` // 物流时长 + RevertStoreId uint64 `json:"revert_store_id"` // 归还门店id + RevertTime time.Time `json:"revert_time"` // 归还时间 + RevertExpressCompany string `json:"revert_express_company"` // 归还物流公司 + RevertExpressCompanyNo string `json:"revert_express_company_no"` // 归还物流公司编号 + RevertExpressNo string `json:"revert_express_no"` // 归还物流单号 + RevertExpressDuration uint64 `json:"revert_express_duration"` // 归还物流时长 + CooperativeBusinessId uint32 `json:"cooperative_business_id"` // 合作商id + CooperativeName string `json:"cooperative_name"` // 合作商名称 + //收货店员码 + + 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 { @@ -112,6 +116,11 @@ type OrderCard struct { GameCoverImg string `json:"cover_img" gorm:"-"` // 封面 Order *Order `json:"order" 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 { @@ -350,7 +359,14 @@ func (m *Order) Info() (map[string]interface{}, error) { } 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 { logger.Error("err:", err) return ret, err @@ -671,12 +687,13 @@ func (m *Order) Deliver() (error, string) { //}).Error err = begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{ - "store_id": m.StoreId, - "delivery_time": time.Now(), - "game_card_goods_id": gameCardGoods.ID, - "serial_number": gameCardGoods.SerialNumber, - "card_status": 2, - "receipt_time": receiptTime, + "store_id": m.StoreId, + "delivery_time": time.Now(), + "game_card_goods_id": gameCardGoods.ID, + "serial_number": gameCardGoods.SerialNumber, + "card_status": 2, + "receipt_time": receiptTime, + "deliver_shopper_code": m.DeliverShopperCode, }).Error if err != nil { begin.Rollback() @@ -936,9 +953,10 @@ func (m *Order) Revert() error { eg.Go(func() error { err := begin.Table("order_card").Where("id=?", orderCard.ID).Updates(&map[string]interface{}{ //"store_id": m.StoreId, - "card_status": OrderCardStatusCompleted, - "revert_store_id": m.RevertStoreId, - "revert_time": time.Now(), + "card_status": OrderCardStatusCompleted, + "revert_store_id": m.RevertStoreId, + "revert_time": time.Now(), + "revert_shopper_code": m.RevertShopperCode, }).Error if err != nil { logger.Errorf("err:", err) diff --git a/app/admin/models/shopper_promotion_code.go b/app/admin/models/shopper_promotion_code.go new file mode 100644 index 0000000..0742792 --- /dev/null +++ b/app/admin/models/shopper_promotion_code.go @@ -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 +}