diff --git a/business/cs/weimob_order.go b/business/cs/weimob_order.go index 1f2afd8e6..7d0b9c13f 100644 --- a/business/cs/weimob_order.go +++ b/business/cs/weimob_order.go @@ -46,6 +46,7 @@ func onOrderMsg(msg *weimobapi.CallbackMsg) (response *weimobapi.CallbackRespons func changeStoreSkusByOrder(order *weimobapi.OrderDetail) { globals.SugarLogger.Debugf("changeStoreSkusByOrder order:%s", utils.Format4Output(order, true)) receiverMobile := order.DeliveryDetail.LogisticsDeliveryDetail.ReceiverMobile + ctx := jxcontext.NewWithUserName(nil, utils.LimitStringLen(utils.Int64ToStr(order.OrderNo), 32), nil, nil) if storeList, err := GetStoreList4Mobile(dao.GetDB(), []string{receiverMobile}); err == nil { if len(storeList) >= 1 { var skuBindInfos []*cms.StoreSkuBindInfo @@ -63,19 +64,41 @@ func changeStoreSkusByOrder(order *weimobapi.OrderDetail) { IsSale: 1, }) } else { - globals.SugarLogger.Infof("[运营],微商城订单:%s,商品:%s没有设置正确的SkuName编码或单价,当前商家编码:%s,市场价:%s", order.OrderNo, v.SkuNum, v.SkuCode, jxutils.IntPrice2StandardString(jxutils.StandardPrice2Int(unitPrice))) + globals.SugarLogger.Infof("[运营],微商城订单:%d,商品:%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) + var nameIDs []int + for _, v := range skuBindInfos { + nameIDs = append(nameIDs, v.NameID) + } + if skuNamesInfo, err := cms.GetSkuNames(ctx, "", false, map[string]interface{}{ + "nameIDs": nameIDs, + }, 0, 0); err == nil { + for _, skuName := range skuNamesInfo.SkuNames { + if skuName.Status != model.SkuStatusNormal { + cms.UpdateSkuName(ctx, skuName.ID, map[string]interface{}{ + "status": model.SkuStatusNormal, + }) + } + for _, sku := range skuName.Skus { + if sku.Status != model.SkuStatusNormal { + cms.UpdateSku(ctx, sku.ID, map[string]interface{}{ + "status": model.SkuStatusNormal, + }) + } + } + } + } + cms.UpdateStoreSkus(ctx, storeID, skuBindInfos, true, true) } else { - globals.SugarLogger.Debugf("changeStoreSkusByOrder storeID:%d is empty", storeID) + globals.SugarLogger.Debugf("changeStoreSkusByOrder orderID:%d, storeID:%d is empty", order.OrderNo, storeID) } } else { - globals.SugarLogger.Infof("[运营],微商城订单:%s,手机:%s找不到唯一一个京西门店%d", order.OrderNo, receiverMobile, len(storeList)) + globals.SugarLogger.Infof("[运营],微商城订单:%d,手机:%s找不到唯一一个京西门店%d", order.OrderNo, receiverMobile, len(storeList)) } } else { - globals.SugarLogger.Warnf("changeStoreSkusByOrder receiverMobile:%s failed with err:%v", receiverMobile, err) + globals.SugarLogger.Warnf("changeStoreSkusByOrder orderNo:%d, receiverMobile:%s failed with err:%v", order.OrderNo, receiverMobile, err) } } diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 6ad721615..580f80810 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -366,9 +366,9 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao. if skuBindInfo.Price == 0 { globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku门店价格为零(一般原因为没有门店价格信息),orderID:%s, StoreID:%d, SkuID:%d, sku:%v", opNumStr, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.JxSkuID, v) } - v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, v.SalePrice, storePayPercentage) } } + v.EarningPrice = jxutils.CaculateSkuEarningPrice(v.ShopPrice, v.SalePrice, storePayPercentage) if skuID := jxutils.GetSkuIDFromOrderSku(v); skuID > 0 { skuIDMap[skuID] = 1 diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index ec01c4443..7a007012c 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -30,18 +30,16 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * (excludeCourierVendorIDs == nil || excludeCourierVendorIDMap[storeCourier.VendorID] == 0) { if handler := partner.GetDeliveryPlatformFromVendorID(storeCourier.VendorID); handler != nil && handler.Use4CreateWaybill { courierVendorID := storeCourier.VendorID - if order.VendorID != model.VendorIDWSC || courierVendorID != model.VendorIDDada { // 达达作为微商城的自有配送,不参与配送竞争 - bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee) - if err = err2; err == nil { - globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill) - bills = append(bills, bill) - if createOnlyOne { - break - } - } else { - globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d failed with error:%v", order.VendorOrderID, userName, courierVendorID, err) - errList.AddErr(fmt.Errorf("平台:%s,%s", jxutils.GetVendorName(courierVendorID), err.Error())) + bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee) + if err = err2; err == nil { + globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill) + bills = append(bills, bill) + if createOnlyOne { + break } + } else { + globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d failed with error:%v", order.VendorOrderID, userName, courierVendorID, err) + errList.AddErr(fmt.Errorf("平台:%s,%s", jxutils.GetVendorName(courierVendorID), err.Error())) } } } @@ -119,12 +117,6 @@ func (c *BaseScheduler) GetStoreDeliveryType(order *model.GoodsOrder, storeMap * deliveryType = scheduler.StoreDeliveryTypeByPlatform // 缺省值 if storeMap != nil { deliveryType = int(storeMap.DeliveryType) - // 微盟订单,要确认有绑达达,才能是非自送的 - if order.VendorID == model.VendorIDWSC && deliveryType != scheduler.StoreDeliveryTypeByStore { - if courierMapList, _ := dao.GetOpenedStoreCouriersByStoreID(nil, jxStoreID, model.VendorIDDada); len(courierMapList) == 0 { - deliveryType = scheduler.StoreDeliveryTypeByStore - } - } } globals.SugarLogger.Debugf("GetStoreDeliveryType orderID:%s, deliveryType:%d", order.VendorOrderID, deliveryType) return deliveryType diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 7baa08ef5..a85b892e0 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -477,8 +477,7 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo partner.CurOrderManager.UpdateOrderStatusAndDeliveryFlag(order) } } else { - if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore || - model.IsSpecialOrderPlatformWaybill(bill) { + if savedOrderInfo.storeDeliveryType == scheduler.StoreDeliveryTypeByStore { if err := s.SelfDeliverDelivering(savedOrderInfo.order, bill.CourierMobile); err != nil { partner.CurOrderManager.OnOrderMsg(order, "自送出设置失败", err.Error()) } @@ -558,8 +557,6 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo } else { err2 = s.Swtich2SelfDelivered(order, "") } - } else if model.IsSpecialOrderPlatformWaybill(bill) { - err2 = s.SelfDeliverDelivered(savedOrderInfo.order, "") } if err2 != nil { partner.CurOrderManager.OnOrderMsg(order, "送达设置失败", err2.Error()) diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index 346ca1a4f..a37152192 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -15,10 +15,10 @@ import ( "git.rosy.net.cn/jx-callback/business/auth2/authprovider/mobile" "git.rosy.net.cn/jx-callback/business/authz/autils" "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/business/jxutils/msg" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -180,7 +180,7 @@ func SendMsg2Somebody(ctx *jxcontext.Context, mobileNum, verifyCode, msgType, ms for _, v := range receiveMsgUsersMap[msgType] { user, err2 := dao.GetUserByID(db, "name", v) if err2 == nil { - msg.SendUserMessage(dingdingapi.MsgTyeText, user, msgType, msgContent) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.GetID(), msgType, msgContent) } else if err == nil { err = err2 } diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index f2c46b0a4..c809fa291 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -268,7 +268,6 @@ func DeleteCategoryMap(ctx *jxcontext.Context, db *dao.DaoDB, categoryID int) (n return dao.DeleteEntityLogically(db, catMap, map[string]interface{}{ model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask, model.FieldMtwmSyncStatus: model.SyncFlagDeletedMask, - model.FieldWscSyncStatus: model.SyncFlagDeletedMask, }, ctx.GetUserName(), map[string]interface{}{ model.FieldCategoryID: categoryID, model.FieldDeletedAt: utils.DefaultTimeValue, @@ -651,7 +650,8 @@ func AddSkuName(ctx *jxcontext.Context, skuNameExt *model.SkuNameExt, userName s return outSkuNameExt, err } -func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interface{}, userName string) (num int64, err error) { +func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interface{}) (num int64, err error) { + userName := ctx.GetUserName() skuName := &model.SkuName{} skuName.ID = nameID db := dao.GetDB() @@ -693,22 +693,10 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf } if globals.EnableStoreWrite { if valid["img"] != nil { - // imgContent, imgMD5, err2 := jxutils.DownloadFileByURL(valid["img"].(string)) - // if err = err2; err != nil { - // return 0, err - // } - // valid["ImgHashCode"] = imgMD5 - // imgHintMap, err := UploadImg2Platforms(ctx, nil, valid["img"].(string), imgContent, "") - // if err != nil { - // return 0, err - // } - // // valid["ImgWeimob"] = imgHintMap[model.VendorIDWSC] - // valid["ImgEbai"] = imgHintMap[model.VendorIDEBAI] dataRes, err2 := datares.TryRegisterDataResource(ctx, skuName.Name, valid["img"].(string), model.ImgTypeMain, false) if err = err2; err != nil { return 0, err } - // valid["ImgHashCode"] = dataRes.HashCode valid["ImgEbai"] = dataRes.EbaiURL } if valid["img2"] != nil { @@ -865,7 +853,8 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string) return outSkuNameExt, err } -func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}, userName string) (num int64, err error) { +func UpdateSku(ctx *jxcontext.Context, skuID int, payload map[string]interface{}) (num int64, err error) { + userName := ctx.GetUserName() sku := &model.Sku{} sku.ID = skuID db := dao.GetDB() @@ -996,7 +985,6 @@ func DeleteStoreSku(ctx *jxcontext.Context, db *dao.DaoDB, nameID, skuID int) (n storeSkuBind := &model.StoreSkuBind{} _, err = dao.DeleteEntityLogically(db, storeSkuBind, map[string]interface{}{ model.FieldJdSyncStatus: model.SyncFlagDeletedMask, - model.FieldWscSyncStatus: model.SyncFlagDeletedMask, model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask, }, ctx.GetUserName(), map[string]interface{}{ model.FieldSkuID: v.ID, diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 6c4adf249..5d4928dd2 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -19,6 +19,7 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/msg" @@ -758,6 +759,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa } } else { dao.Commit(db) + notifyStoreOperatorChanged(store, valid["operatorPhone"]) } } } else { @@ -766,6 +768,21 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa return num, err } +func notifyStoreOperatorChanged(store *model.Store, newOperator2 interface{}) { + if store.OperatorPhone != "" && newOperator2 != nil { + db := dao.GetDB() + if user, err := dao.GetUserByID(db, "mobile", store.OperatorPhone); err == nil { + curUserName := "" + if newOperator := utils.Interface2String(newOperator2); newOperator != "" { + if curUser, err := dao.GetUserByID(db, "mobile", newOperator); err == nil { + curUserName = curUser.GetName() + } + } + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.GetID(), "门店运营变更", fmt.Sprintf("门店:%d-%s,原运营:%s,变更为:%s", store.ID, store.Name, user.GetName(), curUserName)) + } + } +} + func SetStoreStatus(ctx *jxcontext.Context, storeID, status int) (err error) { payload := map[string]interface{}{ "status": status, diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 3f91a1525..a5f9aac13 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -54,19 +54,19 @@ type StoreSkuExt struct { StoreSkuStatus int `json:"storeSkuStatus"` EbaiID string `orm:"column(ebai_id);index" json:"ebaiID"` - MtwmID string `orm:"column(mtwm_id)" json:"mtwmID"` // 这个也不是必须的,只是为了DAO取数据语句一致 - WscID string `orm:"column(wsc_id);index" json:"wscID"` // 表示微盟skuId - WscID2 string `orm:"column(wsc_id2);index" json:"wscID2"` // 表示微盟goodsId + MtwmID string `orm:"column(mtwm_id)" json:"mtwmID"` // 这个也不是必须的,只是为了DAO取数据语句一致 + // WscID string `orm:"column(wsc_id);index" json:"wscID"` // 表示微盟skuId + // WscID2 string `orm:"column(wsc_id2);index" json:"wscID2"` // 表示微盟goodsId JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` EbaiSyncStatus int8 `orm:"default(2)" json:"ebaiSyncStatus"` MtwmSyncStatus int8 `orm:"default(2)" json:"mtwmSyncStatus"` - WscSyncStatus int8 `orm:"default(2)" json:"wscSyncStatus"` + // WscSyncStatus int8 `orm:"default(2)" json:"wscSyncStatus"` JdPrice int `json:"jdPrice"` EbaiPrice int `json:"ebaiPrice"` MtwmPrice int `json:"mtwmPrice"` - WscPrice int `json:"wscPrice"` + // WscPrice int `json:"wscPrice"` AutoSaleAt time.Time `orm:"type(datetime);null" json:"autoSaleAt"` @@ -441,9 +441,9 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo t2.comment, t2.category_id sku_category_id, t2.status sku_status, t4.created_at bind_created_at, t4.updated_at bind_updated_at, t4.last_operator bind_last_operator, t4.deleted_at bind_deleted_at, t4.sub_store_id, t4.price bind_price, IF(t4.unit_price IS NOT NULL, t4.unit_price, t1.price) unit_price, t4.status store_sku_status, t4.auto_sale_at, - t4.ebai_id, t4.mtwm_id, t4.wsc_id, t4.wsc_id2, - t4.jd_sync_status, t4.ebai_sync_status, t4.mtwm_sync_status, t4.wsc_sync_status, - t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.wsc_price + t4.ebai_id, t4.mtwm_id, + t4.jd_sync_status, t4.ebai_sync_status, t4.mtwm_sync_status, + t4.jd_price, t4.ebai_price, t4.mtwm_price ` + sql var tmpList []*tGetStoresSkusInfo beginTime := time.Now() @@ -1022,7 +1022,6 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs model.FieldJdSyncStatus: model.SyncFlagDeletedMask, model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask, model.FieldMtwmSyncStatus: model.SyncFlagDeletedMask, - model.FieldWscSyncStatus: model.SyncFlagDeletedMask, }, userName, nil); err != nil { dao.Rollback(db) return nil, err @@ -1066,7 +1065,6 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs updateFieldMap[model.FieldJdSyncStatus] = 1 updateFieldMap[model.FieldEbaiSyncStatus] = 1 updateFieldMap[model.FieldMtwmSyncStatus] = 1 - updateFieldMap[model.FieldWscSyncStatus] = 1 updateFieldMap[model.FieldUpdatedAt] = 1 updateFieldMap[model.FieldLastOperator] = 1 @@ -1160,7 +1158,6 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind model.FieldJdSyncStatus: skuBind.JdSyncStatus | model.SyncFlagSaleMask, model.FieldEbaiSyncStatus: skuBind.EbaiSyncStatus | model.SyncFlagSaleMask, model.FieldMtwmSyncStatus: skuBind.MtwmSyncStatus | model.SyncFlagSaleMask, - model.FieldWscSyncStatus: skuBind.WscSyncStatus | model.SyncFlagSaleMask, } if utils.IsTimeZero(autoSaleTime) || skuBind.Status == model.SkuStatusNormal { kvs["AutoSaleAt"] = utils.DefaultTimeValue @@ -1272,7 +1269,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode t1.price = t1.price * ? / 100, t1.unit_price = t1.unit_price * ? / 100, t1.jd_sync_status = t1.jd_sync_status | ?, - t1.wsc_sync_status = t1.wsc_sync_status | ?, t1.mtwm_sync_status = t1.mtwm_sync_status | ?, t1.ebai_sync_status = t1.ebai_sync_status | ? WHERE t1.store_id = ? AND t1.deleted_at = ? @@ -1288,7 +1284,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode model.SyncFlagPriceMask, model.SyncFlagPriceMask, model.SyncFlagPriceMask, - model.SyncFlagPriceMask, toStoreID, utils.DefaultTimeValue, } @@ -1317,7 +1312,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode t1.last_operator = ?, t1.status = ?, t1.jd_sync_status = IF((t1.jd_sync_status & ?) <> 0, 0, ?), - t1.wsc_sync_status = IF((t1.wsc_sync_status & ?) <> 0, 0, ?), t1.mtwm_sync_status = IF((t1.mtwm_sync_status & ?) <> 0, 0, ?), t1.ebai_sync_status = IF((t1.ebai_sync_status & ?) <> 0, 0, ?) WHERE t1.store_id = ? AND t1.deleted_at = ? AND t0.id IS NULL @@ -1338,8 +1332,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode model.SyncFlagDeletedMask, model.SyncFlagNewMask, model.SyncFlagDeletedMask, - model.SyncFlagNewMask, - model.SyncFlagDeletedMask, toStoreID, utils.DefaultTimeValue, } @@ -1371,7 +1363,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode t1.unit_price = IF(t0.unit_price * ? / 100 > 0, t0.unit_price * ? / 100, 1), t1.status = IF(? = 0, t1.status, t0.status), t1.jd_sync_status = t1.jd_sync_status | ?, - t1.wsc_sync_status = t1.wsc_sync_status | ?, t1.mtwm_sync_status = t1.mtwm_sync_status | ?, t1.ebai_sync_status = t1.ebai_sync_status | ? WHERE t1.store_id = ? AND t1.deleted_at = ? AND t0.id IS NOT NULL @@ -1392,7 +1383,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode syncStatus, syncStatus, syncStatus, - syncStatus, toStoreID, utils.DefaultTimeValue, } @@ -1408,10 +1398,10 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode // 添加toStore中不存在,但fromStore存在的 sql = ` INSERT INTO store_sku_bind(created_at, updated_at, last_operator, deleted_at, store_id, sku_id, sub_store_id, price, unit_price, status, - jd_sync_status, wsc_sync_status, ebai_sync_status, mtwm_sync_status) + jd_sync_status, ebai_sync_status, mtwm_sync_status) SELECT ?, ?, ?, ?, ?, t1.sku_id, 0, IF(t1.price * ? / 100 > 0, t1.price * ? / 100, 1), IF(t1.unit_price * ? / 100 > 0, t1.unit_price * ? / 100, 1), - IF(? = 0, ?, t1.status), ?, ?, ?, ? + IF(? = 0, ?, t1.status), ?, ?, ? FROM store_sku_bind t1 JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? @@ -1430,7 +1420,6 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID, toStoreID int, copyMode model.SyncFlagNewMask, model.SyncFlagNewMask, model.SyncFlagNewMask, - model.SyncFlagNewMask, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue, @@ -1798,7 +1787,6 @@ func setStoreSkuBindStatus(skuBind *model.StoreSkuBind, status int8) { skuBind.JdSyncStatus |= status skuBind.EbaiSyncStatus |= status skuBind.MtwmSyncStatus |= status - skuBind.WscSyncStatus |= status } func checkStoreExisting(db *dao.DaoDB, storeID int) (err error) { diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index 2adf97a1a..27c38deba 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -702,3 +702,11 @@ func LoadUserCart(ctx *jxcontext.Context, userID string, storeIDs []int) (cartIt err = dao.GetRows(dao.GetDB(), &cartItems, sql, userID, storeIDs) return cartItems, err } + +func GetSelfInfo(ctx *jxcontext.Context) (user *model.User, err error) { + tokenInfo, err := auth2.GetTokenInfo(ctx.GetToken()) + if err == nil { + user, err = dao.GetUserByID(dao.GetDB(), "user_id", tokenInfo.GetID()) + } + return user, err +} diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index f9626cab8..7a20d959d 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -577,7 +577,7 @@ func DeleteWrongSpu(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) ( mapData := map[string]interface{}{ "name": skuNameList[step].Name, } - _, err = cms.UpdateSkuName(ctx, skuNameList[step].ID, mapData, ctx.GetUserName()) + _, err = cms.UpdateSkuName(ctx, skuNameList[step].ID, mapData) if err != nil { globals.SugarLogger.Debugf("DeleteWrongSpu failed nameid:%d, name:%s, with error:%v", skuNameList[step].ID, skuNameList[step].Name, err) } diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 7ae7f7bc0..8f20044d5 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -80,18 +80,12 @@ func getJxStoreIDFromOrder(order *model.GoodsOrder) (retVal int) { // 此函数得到的是order的销售门店京西ID,与GetJxStoreIDFromOrder的区别是order.StoreID的解释不同,参考其它相关资料 func GetSaleStoreIDFromOrder(order *model.GoodsOrder) (retVal int) { - if order.VendorID != model.VendorIDWSC { - return getJxStoreIDFromOrder(order) - } - return order.StoreID + return getJxStoreIDFromOrder(order) } // 此函数得到的是order的商品的展示门店京西ID,与GetJxStoreIDFromOrder的区别是order.StoreID的解释不同,参考其它相关资料 func GetShowStoreIDFromOrder(order *model.GoodsOrder) (retVal int) { - if order.VendorID != model.VendorIDWSC { - return getJxStoreIDFromOrder(order) - } - return order.JxStoreID + return getJxStoreIDFromOrder(order) } func GetSkuIDFromOrderSku(sku *model.OrderSku) (skuID int) { diff --git a/business/jxutils/msg/msg.go b/business/jxutils/msg/msg.go index 8265d5da2..ceff07d1a 100644 --- a/business/jxutils/msg/msg.go +++ b/business/jxutils/msg/msg.go @@ -14,8 +14,6 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) -const weixinTemplateID4StoreStatusChanged = "Fl0vOnBKTQqRFx3-shGKxdCnxMdQXNeODzgkuwd7oxw" - // todo msgType不依赖于钉钉 func SendUserMessage(msgType string, user *model.User, title, content string) (err error) { userID := user.GetID() diff --git a/business/model/dao/store.go b/business/model/dao/store.go index f6d45fc59..6f282ec78 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -124,67 +124,6 @@ func GetStoreDetailByVendorStoreID(db *DaoDB, vendorStoreID string, vendorID int return storeDetail, err } -func GetPossibleStoresByPlaceName(db *DaoDB, cityName, provinceName string) (storeList []*StoreDetail, err error) { - sqlList := []string{ - ` - SELECT t1.*, t5.vendor_store_id - FROM store t1 - JOIN place t2 ON t2.code = t1.city_code AND t2.name = ? - LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 - `, - ` - SELECT t1.*, t5.vendor_store_id - FROM store t1 - JOIN place t2 ON t2.code = t1.city_code - JOIN place t3 ON t3.code = t2.parent_code AND t3.name = ? - LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 - `, - ` - SELECT t1.*, t5.vendor_store_id - FROM store t1 - LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 - `, - } - sqlParamsList := [][]interface{}{ - []interface{}{ - cityName, - model.VendorIDWSC, - utils.DefaultTimeValue, - model.StoreStatusOpened, - utils.DefaultTimeValue, - model.StoreStatusDisabled, - }, - []interface{}{ - provinceName, - model.VendorIDWSC, - utils.DefaultTimeValue, - model.StoreStatusOpened, - utils.DefaultTimeValue, - model.StoreStatusDisabled, - }, - []interface{}{ - model.VendorIDWSC, - utils.DefaultTimeValue, - model.StoreStatusOpened, - utils.DefaultTimeValue, - model.StoreStatusDisabled, - }, - } - for k := range sqlList { - if err = GetRows(db, &storeList, sqlList[k], sqlParamsList[k]); err != nil { - return nil, err - } - if len(storeList) > 0 { - return storeList, nil - } - } - // 正常是不应该达到这里的 - return storeList, err -} - // 这个返回的地点信息是城市 func GetStoreDetail2(db *DaoDB, storeID int, vendorStoreID string, vendorID int) (storeDetail *StoreDetail2, err error) { sql := ` @@ -374,7 +313,6 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo CategoryID: categoryID, MtwmSyncStatus: model.SyncFlagNewMask, EbaiSyncStatus: model.SyncFlagNewMask, - WscSyncStatus: model.SyncFlagNewMask, } storeCat.DeletedAt = utils.DefaultTimeValue if err = GetEntity(db, storeCat, model.FieldStoreID, model.FieldCategoryID, model.FieldDeletedAt); err != nil && !IsNoRowsError(err) { @@ -383,15 +321,9 @@ func AddStoreCategoryMap(db *DaoDB, storeID, categoryID int, vendorID int, vendo if vendorID == model.VendorIDMTWM { storeCat.MtwmID = vendorCategoryID storeCat.MtwmSyncStatus = status - } else if vendorID == model.VendorIDEBAI || vendorID == model.VendorIDWSC { - intVendorCategoryID := utils.Str2Int64WithDefault(vendorCategoryID, 0) - if vendorID == model.VendorIDEBAI { - storeCat.EbaiID = intVendorCategoryID - storeCat.EbaiSyncStatus = status - } else { - storeCat.WscID = intVendorCategoryID - storeCat.WscSyncStatus = status - } + } else if vendorID == model.VendorIDEBAI { + storeCat.EbaiID = utils.Str2Int64WithDefault(vendorCategoryID, 0) + storeCat.EbaiSyncStatus = status } else { panic("unsupported vendor") } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 1b0b9be91..310e2ad7b 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -213,14 +213,10 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo if !isSingleStorePF { tableName = "t2" } - vendorSkuNameField := "0" - if vendorID == model.VendorIDWSC { - vendorSkuNameField = "t1.wsc_id2" - } fieldPrefix := ConvertDBFieldPrefix(model.VendorNames[vendorID]) sql := ` SELECT t1.id bind_id, t1.sku_id, t1.price, t1.unit_price, t1.status store_sku_status, %s.%s_id vendor_sku_id, - t1.%s_sync_status store_sku_sync_status, %s vendor_name_id, t1.store_id, t1.deleted_at bind_deleted_at, + t1.%s_sync_status store_sku_sync_status, t1.store_id, t1.deleted_at bind_deleted_at, t2.*, t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, IF(t11.%s <> '', t11.%s, t3.img) img, @@ -228,7 +224,7 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo t13.%s desc_img, t4.%s_category_id vendor_vendor_cat_id` fmtParams := []interface{}{ - tableName, fieldPrefix, fieldPrefix, vendorSkuNameField, + tableName, fieldPrefix, fieldPrefix, GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), GetDataResFieldName(vendorID), diff --git a/business/model/model.go b/business/model/model.go index ecdd9febe..d37c43b69 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -17,7 +17,7 @@ const ( // FieldElmSyncStatus = "ElmSyncStatus" FieldEbaiSyncStatus = "EbaiSyncStatus" FieldMtwmSyncStatus = "MtwmSyncStatus" - FieldWscSyncStatus = "WscSyncStatus" + // FieldWscSyncStatus = "WscSyncStatus" FieldVendorID = "VendorID" FieldStoreID = "StoreID" @@ -31,8 +31,8 @@ const ( // FieldElmID = "ElmID" FieldEbaiID = "EbaiID" FieldMtwmID = "MtwmID" - FieldWscID = "WscID" - FieldWscID2 = "WscID2" + // FieldWscID = "WscID" + // FieldWscID2 = "WscID2" FieldSkuID = "SkuID" FieldLevel = "Level" diff --git a/business/model/order.go b/business/model/order.go index 5ea267da4..cff7b15e2 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -263,12 +263,7 @@ type OrderComment struct { // 判断是否是购买平台自有物流 // 对于京东,饿百来说,就是其自有的物流,对于微商城来说,是达达 func IsWaybillPlatformOwn(bill *Waybill) bool { - return bill.OrderVendorID == bill.WaybillVendorID || IsSpecialOrderPlatformWaybill(bill) -} - -// 是否是特殊物流 -func IsSpecialOrderPlatformWaybill(bill *Waybill) bool { - return (bill.OrderVendorID == VendorIDWSC && bill.WaybillVendorID == VendorIDDada) + return bill.OrderVendorID == bill.WaybillVendorID } // 订单是否已经有了有效运单 diff --git a/business/model/store_sku.go b/business/model/store_sku.go index a1b7ce926..d27b76d4b 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -46,12 +46,12 @@ type StoreSkuCategoryMap struct { // ElmID int64 `orm:"column(elm_id);index"` EbaiID int64 `orm:"column(ebai_id);index"` MtwmID string `orm:"column(mtwm_id);index;size(16)"` // 美团外卖没有ID,保存名字 - WscID int64 `orm:"column(wsc_id);index"` + // WscID int64 `orm:"column(wsc_id);index"` // ElmSyncStatus int8 `orm:"default(2)"` EbaiSyncStatus int8 `orm:"default(2)"` MtwmSyncStatus int8 `orm:"default(2)"` - WscSyncStatus int8 `orm:"default(2)"` + // WscSyncStatus int8 `orm:"default(2)"` } func (*StoreSkuCategoryMap) TableUnique() [][]string { @@ -95,20 +95,20 @@ type StoreSkuBind struct { // ElmID int64 `orm:"column(elm_id);index"` EbaiID int64 `orm:"column(ebai_id);index"` - MtwmID int64 `orm:"column(mtwm_id)"` // 这个也不是必须的,只是为了DAO取数据语句一致 - WscID int64 `orm:"column(wsc_id);index"` // 表示微盟skuId - WscID2 int64 `orm:"column(wsc_id2);index"` // 表示微盟goodsId + MtwmID int64 `orm:"column(mtwm_id)"` // 这个也不是必须的,只是为了DAO取数据语句一致 + // WscID int64 `orm:"column(wsc_id);index"` // 表示微盟skuId + // WscID2 int64 `orm:"column(wsc_id2);index"` // 表示微盟goodsId // ElmSyncStatus int8 `orm:"default(2)"` JdSyncStatus int8 `orm:"default(2)"` EbaiSyncStatus int8 `orm:"default(2)"` MtwmSyncStatus int8 `orm:"default(2)"` - WscSyncStatus int8 `orm:"default(2)"` + // WscSyncStatus int8 `orm:"default(2)"` JdPrice int `json:"jdPrice"` EbaiPrice int `json:"ebaiPrice"` MtwmPrice int `json:"mtwmPrice"` - WscPrice int `json:"wscPrice"` + // WscPrice int `json:"wscPrice"` AutoSaleAt time.Time `orm:"type(datetime);null" json:"autoSaleAt"` } diff --git a/business/partner/purchase/jx/jx_test.go b/business/partner/purchase/jx/jx_test.go index d56875ecf..8ba8e260f 100644 --- a/business/partner/purchase/jx/jx_test.go +++ b/business/partner/purchase/jx/jx_test.go @@ -33,7 +33,7 @@ func TestBuildNewJxOrder(t *testing.T) { msg := &CallbackMsg{ AppKey: appKey, MsgType: MsgTypeOrder, - SubMsgType: SubMsgTypeOrderNew, + SubMsgType: utils.Int2Str(model.OrderStatusNew), ThingID: order.VendorOrderID, Data: utils.Format4Output(order2, true), } diff --git a/business/partner/purchase/weimob/wsc/order.go b/business/partner/purchase/weimob/wsc/order.go index 86b315f09..57416ab9e 100644 --- a/business/partner/purchase/weimob/wsc/order.go +++ b/business/partner/purchase/weimob/wsc/order.go @@ -2,7 +2,6 @@ package wsc import ( "errors" - "sort" "time" "git.rosy.net.cn/baseapi/platformapi/weimobapi" @@ -263,75 +262,7 @@ func (p *PurchaseHandler) postFakeMsg(orderNo int64, fakeStatus string) { } func (p *PurchaseHandler) arrangeSaleStore(order *model.GoodsOrder, cityName, provinceName string) { - globals.SugarLogger.Debugf("arrangeSaleStore orderID:%s cityName:%s, provinceName:%s", order.VendorOrderID, cityName, provinceName) - const ( - maxTryStoreWhenArrange = 5 - ) - db := dao.GetDB() - var selectedStore *model.Store - if true { - if storeDetail, err := dao.GetStoreDetailByVendorStoreID(db, order.VendorStoreID, model.VendorIDWSC); err == nil { - selectedStore = &storeDetail.Store - } - } else { - storeList, err := dao.GetPossibleStoresByPlaceName(db, cityName, provinceName) - if err != nil { - globals.SugarLogger.Errorf("arrangeSaleStore failed with error:%v", err) - } - globals.SugarLogger.Debugf("arrangeSaleStore possible stores orderID:%s", order.VendorOrderID) - for _, store := range storeList { - globals.SugarLogger.Debugf("orderID:%s %s:%d", order.VendorOrderID, store.Name, store.ID) - } - if len(storeList) > 0 { - distanceList := make(utils.SortList, 0) - userLng := jxutils.IntCoordinate2Standard(order.ConsigneeLng) - userLat := jxutils.IntCoordinate2Standard(order.ConsigneeLat) - for k, store := range storeList { - // 展示门店自身不参与派单 - if store.VendorStoreID != order.VendorStoreID { - sortItem := &utils.SortItem{ - CompareValue: int64(jxutils.EarthDistance(userLng, userLat, jxutils.IntCoordinate2Standard(store.Lng), jxutils.IntCoordinate2Standard(store.Lat)) * 1000), - Index: k, - } - distanceList = append(distanceList, sortItem) - } - } - sort.Sort(distanceList) - globals.SugarLogger.Debugf("arrangeSaleStore distance list orderID:%s", order.VendorOrderID) - for _, dist := range distanceList { - globals.SugarLogger.Debugf("orderID:%s %s:%d, distance:%d", order.VendorOrderID, storeList[dist.Index].Name, storeList[dist.Index].ID, dist.CompareValue) - } - if len(distanceList) > maxTryStoreWhenArrange { - distanceList = distanceList[:maxTryStoreWhenArrange] - } - for _, v := range distanceList { - selectedStore = &storeList[v.Index].Store - if selectedStore.DeliveryRangeType == model.DeliveryRangeTypeRadius { - distance := v.CompareValue - if distance < utils.Str2Int64(selectedStore.DeliveryRange) { - break - } else { - globals.SugarLogger.Debugf("arrangeSaleStore orderID:%s distance:%d, deliveryRange:%d", order.VendorOrderID, distance, utils.Str2Int64(selectedStore.DeliveryRange)) - } - } else { - points := jxutils.CoordinateStr2Points(selectedStore.DeliveryRange) - if utils.IsPointInPolygon(userLng, userLat, points) { - break - } else { - globals.SugarLogger.Debugf("arrangeSaleStore orderID:%s userLng:%f, userLat:%f, deliveryRange:%s", order.VendorOrderID, userLng, userLat, selectedStore.DeliveryRange) - } - } - selectedStore = nil - } - } - } - if selectedStore != nil { - order.StoreID = selectedStore.ID - order.StoreName = selectedStore.Name - globals.SugarLogger.Debugf("arrangeSaleStore orderID:%s arranged to store:%d", order.VendorOrderID, selectedStore.ID) - } else { - globals.SugarLogger.Errorf("arrangeSaleStore orderID:%s 找不到门店", order.VendorOrderID) - } + } func (p *PurchaseHandler) setStoreOrderSeq(order *model.GoodsOrder) { diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index 11e26496c..9e7f07bc1 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -152,7 +152,7 @@ func (c *SkuController) SyncCategory() { // @Param isBySku query bool false "是否将sku拆开,缺省为false" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult -// @router /GetSkuNames [get] +// @router /GetSkuNames [get,post] func (c *SkuController) GetSkuNames() { c.callGetSkuNames(func(params *tSkuGetSkuNamesParams) (retVal interface{}, errCode string, err error) { retVal, err = cms.GetSkuNames(params.Ctx, params.Keyword, params.IsBySku, params.MapData, params.Offset, params.PageSize) @@ -191,7 +191,7 @@ func (c *SkuController) UpdateSkuName() { // dummySkuName := &model.SkuName{} payload := make(map[string]interface{}) if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { - retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload, params.Ctx.GetUserName()) + retVal, err = cms.UpdateSkuName(params.Ctx, params.NameID, payload) } return retVal, "", err }) @@ -241,7 +241,7 @@ func (c *SkuController) UpdateSku() { c.callUpdateSku(func(params *tSkuUpdateSkuParams) (retVal interface{}, errCode string, err error) { payload := make(map[string]interface{}) if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { - retVal, err = cms.UpdateSku(params.Ctx, params.SkuID, payload, params.Ctx.GetUserName()) + retVal, err = cms.UpdateSku(params.Ctx, params.SkuID, payload) } return retVal, "", err }) diff --git a/controllers/cms_user2.go b/controllers/cms_user2.go index e0b3a6d7f..71698ec13 100644 --- a/controllers/cms_user2.go +++ b/controllers/cms_user2.go @@ -361,3 +361,16 @@ func (c *User2Controller) SaveMyCart() { return retVal, "", err }) } + +// @Title 得到用户自己的信息 +// @Description 得到用户自己的信息 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetSelfInfo [get] +func (c *User2Controller) GetSelfInfo() { + c.callGetSelfInfo(func(params *tUser2GetSelfInfoParams) (retVal interface{}, errCode string, err error) { + retVal, err = cms.GetSelfInfo(params.Ctx) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index a4d2a9e54..2b19b608e 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1093,7 +1093,7 @@ func init() { beego.ControllerComments{ Method: "GetSkuNames", Router: `/GetSkuNames`, - AllowHTTPMethods: []string{"get"}, + AllowHTTPMethods: []string{"get","post"}, MethodParams: param.Make(), Filters: nil, Params: nil}) @@ -1899,6 +1899,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"], + beego.ControllerComments{ + Method: "GetSelfInfo", + Router: `/GetSelfInfo`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:User2Controller"], beego.ControllerComments{ Method: "GetStoreRoleList",