package cs import ( "git.rosy.net.cn/baseapi/platformapi/weimobapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) const ( minCSOrderPayment = 0 // 供货订单的最小金额 maxUnitPrice = 3000 // 为防止误填单价,限制单价最高 ) func OnCallbackMsg(msg *weimobapi.CallbackMsg) (response *weimobapi.CallbackResponse) { orderID := utils.Int64ToStr(msg.OrderNo) jxutils.CallMsgHandler(func() { response = onOrderMsg(msg) }, jxutils.ComposeUniversalOrderID(orderID, model.VendorIDWSC)) return response } func onOrderMsg(msg *weimobapi.CallbackMsg) (response *weimobapi.CallbackResponse) { globals.SugarLogger.Debugf("onOrderMsg:%s", utils.Format4Output(msg, true)) if msg.Event == weimobapi.MsgEventOrderStatusChange { if orderDetail, err := api.WeimobAPI.QueryOrderDetail2(msg.OrderNo, false); err == nil { if orderDetail.OrderStatus == weimobapi.OrderStatusFinished && orderDetail.PaymentAmount >= minCSOrderPayment { changeStoreSkusByOrder(orderDetail) } } else { response = weimobapi.Err2CallbackResponse(err, "") } } return response } func changeStoreSkusByOrder(order *weimobapi.OrderDetail) { receiverMobile := order.DeliveryDetail.LogisticsDeliveryDetail.ReceiverMobile storeList, err := dao.GetStoreList(dao.GetDB(), nil, []string{receiverMobile}, "") if err != nil { if len(storeList) == 1 { var skuBindInfos []*cms.StoreSkuBindInfo storeID := storeList[0].ID globals.SugarLogger.Debugf("changeStoreSkusByOrder storeID:%d", storeID) for _, v := range order.ItemList { nameID := int(utils.Str2Int64WithDefault(v.SkuCode, 0)) unitPrice := v.OriginalPrice if nameID > 0 && (unitPrice > 0 && unitPrice < maxUnitPrice) { skuBindInfos = append(skuBindInfos, &cms.StoreSkuBindInfo{ StoreID: storeID, NameID: nameID, UnitPrice: int(jxutils.StandardPrice2Int(unitPrice)), IsFocus: 1, IsSale: 1, }) } else { globals.SugarLogger.Infof("[运营],微商城订单:%s,商品:%s没有设置正确的SkuName编码或单价,当前商家编码:%s,市场价:%s", order.OrderNo, v.SkuNum, v.SkuCode, jxutils.IntPrice2StandardString(jxutils.StandardPrice2Int(unitPrice))) } } if len(skuBindInfos) > 0 { cms.UpdateStoreSkus(jxcontext.NewWithUserName(nil, utils.LimitStringLen(utils.Int64ToStr(order.OrderNo), 32), nil, nil), storeID, skuBindInfos, true, true) } } else { globals.SugarLogger.Infof("[运营],微商城订单:%s,手机:%s找不到唯一一个京西门店%d", order.OrderNo, receiverMobile, len(storeList)) } } }