fusenapi/model/gmodel/fs_cloud_pick_up_logic.go
2023-06-29 18:04:59 +08:00

52 lines
1.5 KiB
Go

package gmodel
import (
"context"
"fusenapi/constants"
"time"
"gorm.io/gorm"
)
// TODO: 使用model的属性做你想做的
func (p *FsCloudPickUpModel) SavePickUpWithTransaction(ctx context.Context, pickUpData *FsCloudPickUp, stockList []FsUserStock, pickUpDetailAddList []FsCloudPickUpDetail) error {
return p.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
//保存总提单信息
if err := tx.Model(&FsCloudPickUp{}).Create(&pickUpData).Error; err != nil {
return err
}
//更新云仓库存
for _, v := range stockList {
if err := tx.Model(&FsUserStock{}).Where("`id` = ?", v.Id).Updates(&v).Error; err != nil {
return err
}
}
//添加提单详情
for _, v := range pickUpDetailAddList {
v.PickId = &pickUpData.Id //外面没赋值在这需要赋值
if err := tx.Model(&FsCloudPickUpDetail{}).Create(&v).Error; err != nil {
return err
}
}
return nil
})
}
func (p *FsCloudPickUpModel) GetCloudPickUpByIDAndUserID(ctx context.Context, userId int64, RelationID int64, cs *FsContactService) (cloudOrder *FsCloudPickUp, err error) {
err = p.db.WithContext(ctx).Model(cloudOrder).Transaction(func(tx *gorm.DB) error {
err = tx.Model(cloudOrder).Select("id").Limit(1).Where("`user_id` = ? and `id` = ?", userId, RelationID).Take(&cloudOrder).Error
if err != nil {
return err
}
ctime := time.Now().Unix()
cs.Ctime = &ctime
if constants.ConcactService(*cs.Type) == constants.TYPE_DEFAULT {
*cs.RelationId = 0
}
return tx.Model(cs).Create(cs).Error
})
return cloudOrder, err
}