|
|
|
@ -431,6 +431,69 @@ func ShaMaOrderSubmit(tx *gorm.DB, ip string, data map[uint][]order_preview.Good
|
|
|
|
|
return resp, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func SupplyOrderSubmit(tx *gorm.DB, ip string, data map[uint][]order_preview.GoodsDetail, vendor uint, previewOrderAddr order_preview.Addr, fData map[uint]decimal.Decimal, channelOrderID string) (jcook.OrderSubmitResp, error) {
|
|
|
|
|
client := jcook.GetClient()
|
|
|
|
|
t := make([]jcook.LogisticsInfo, 0)
|
|
|
|
|
orderFee := decimal.Zero
|
|
|
|
|
for _, j := range data[vendor] {
|
|
|
|
|
var sku goods.Sku
|
|
|
|
|
if err := tx.First(&sku, "id = ?", j.SkuID).Error; err != nil {
|
|
|
|
|
return jcook.OrderSubmitResp{}, err
|
|
|
|
|
}
|
|
|
|
|
cid, _ := strconv.Atoi(sku.ThirdPartySkuId)
|
|
|
|
|
t = append(t, jcook.LogisticsInfo{
|
|
|
|
|
SkuID: uint(cid),
|
|
|
|
|
Quantity: j.Quantity,
|
|
|
|
|
SkuPrice: sku.PurchasePrice,
|
|
|
|
|
})
|
|
|
|
|
amount := sku.PurchasePrice.Mul(decimal.NewFromInt(int64(j.Quantity)))
|
|
|
|
|
orderFee = orderFee.Add(amount)
|
|
|
|
|
}
|
|
|
|
|
addr := previewOrderAddr.Province + previewOrderAddr.City + previewOrderAddr.District + previewOrderAddr.Address
|
|
|
|
|
req1 := jcook.OrderSubmitReq{
|
|
|
|
|
Address: addr,
|
|
|
|
|
SkuList: t,
|
|
|
|
|
OrderFee: orderFee,
|
|
|
|
|
Receiver: jcook.OrderReceiver{
|
|
|
|
|
Name: previewOrderAddr.ReceiverName,
|
|
|
|
|
Mobile: previewOrderAddr.Mobile,
|
|
|
|
|
},
|
|
|
|
|
FreightFee: fData[vendor],
|
|
|
|
|
UserIp: ip,
|
|
|
|
|
ChannelOrderID: channelOrderID,
|
|
|
|
|
}
|
|
|
|
|
var resp jcook.OrderSubmitResp
|
|
|
|
|
if err := client.Exec(req1, &resp); err != nil {
|
|
|
|
|
if err.Error() == "商品价格不匹配" {
|
|
|
|
|
go func() {
|
|
|
|
|
rq := jcook.SkuPriceReq{}
|
|
|
|
|
for _, info := range t {
|
|
|
|
|
rq.SkuIDSet = append(rq.SkuIDSet, info.SkuID)
|
|
|
|
|
}
|
|
|
|
|
var res []jcook.SkuPriceResp
|
|
|
|
|
if err := client.Exec(rq, &res); err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if len(res) == 0 {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
for _, t := range res {
|
|
|
|
|
var sku goods2.RecookGoodsSkuModel
|
|
|
|
|
if err := mysql.Db.Table(sku.TableName()).Where("third_party_sku_id = ? and third_party_type=3", t.SkuID).Updates(map[string]interface{}{
|
|
|
|
|
"purchase_price": t.SupplyPrice,
|
|
|
|
|
}).Error; err != nil {
|
|
|
|
|
log.Println(err.Error())
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
return jcook.OrderSubmitResp{}, errors.New("价格变动,请重新下单")
|
|
|
|
|
}
|
|
|
|
|
return jcook.OrderSubmitResp{}, err
|
|
|
|
|
}
|
|
|
|
|
return resp, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func GetVirtualID() uint {
|
|
|
|
|
id, _ := snow.GetOrderWorker().NextID()
|
|
|
|
|
return uint(id)
|
|
|
|
|