From 902ce6e1509d5f642ccd7aeaec07358a66b18669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E5=AE=97=E6=A5=A0?= Date: Wed, 19 Feb 2025 14:19:18 +0800 Subject: [PATCH] 1 --- business/jxcallback/orderman/order.go | 58 +++++++++++++------ business/jxcallback/orderman/order_comment.go | 34 +++-------- business/jxstore/cms/store.go | 27 +++++++-- business/jxstore/cms/store_sku.go | 1 + 4 files changed, 70 insertions(+), 50 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index f4a9159ee..8c5e44d97 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/baseapi/platformapi/tao_vegetable" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm" "math" "strconv" @@ -456,7 +457,7 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao // 宠物会出现美团多门店对应京西一个门店的库存数,即同一老板开多家店,单只有一个库存门店, // 所以不同门店同一品牌,最终商品库存只扣除门店ID最小的商品库存(最早创建门店,主店) // 最好商品由主店创建,复制到分店,分店本地同步状态不在打开 - err = ModifyOrderSkusStock(db, order, false) + err = ModifyPetOrderSkusStock(db, order, false) } } if err == nil { @@ -520,38 +521,57 @@ func ModifyPetOrderSkusStock(db *dao.DaoDB, order *model.GoodsOrder, isAdd bool) globals.SugarLogger.Errorf("根据品牌获取门店信息异常,未获取到门店列表[storeID:%d,brandID:%d]", store.ID, store.BrandID) return nil } + storeIdList := make([]int, 0, len(storeList)) + for _, v := range storeList { + storeIdList = append(storeIdList, v.ID) + } skus := order.Skus + skuIDList := make([]int, 0, len(skus)) for _, sku := range skus { - storeSkus, _ := dao.GetStoresSkusInfo(db, []int{storeList[0].ID}, []int{sku.SkuID}) + storeSkus, _ := dao.GetStoresSkusInfo(db, storeIdList, []int{sku.SkuID}) if len(storeSkus) == 0 { continue } storeSku, stock := storeSkus[0], 0 - if storeSku.Stock == 0 { - continue + for _, ss := range storeSkus { + if ss.StoreID == storeList[0].ID { + storeSku = ss + stock = ss.Stock + break + } } if isAdd { stock = storeSku.Stock + sku.Count } else { stock = storeSku.Stock - sku.Count - //如果是进货的订单,进货方门店对应商品要加上这么多库存 - if order.OrderType == model.OrderTypeSupplyGoods { - storeSkus2, _ := dao.GetStoresSkusInfo(db, []int{order.FromStoreID}, []int{sku.SkuID}) - if len(storeSkus2) > 0 { - storeSku3 := storeSkus2[0] - storeSku3.Stock = storeSku3.Stock + sku.Count - db.Db.Update(storeSku3, "Stock") - } - } - realStock := checkPriceDefendOrderByStock(db, jxutils.GetSaleStoreIDFromOrder(order), sku.SkuID, stock, storeSku.JxPrice) - if realStock != -1 { - stock = realStock - } } - storeSku.Stock = stock - db.Db.Update(storeSku, "Stock") + //if isAdd { + // stock = storeSku.Stock + sku.Count + //} else { + // stock = storeSku.Stock - sku.Count + // //如果是进货的订单,进货方门店对应商品要加上这么多库存 + // //if order.OrderType == model.OrderTypeSupplyGoods { + // // storeSkus2, _ := dao.GetStoresSkusInfo(db, []int{order.FromStoreID}, []int{sku.SkuID}) + // // if len(storeSkus2) > 0 { + // // storeSku3 := storeSkus2[0] + // // storeSku3.Stock = storeSku3.Stock + sku.Count + // // db.Db.Update(storeSku3, "Stock") + // // } + // //} + // //realStock := checkPriceDefendOrderByStock(db, jxutils.GetSaleStoreIDFromOrder(order), sku.SkuID, stock, storeSku.JxPrice) + // //if realStock != -1 { + // // stock = realStock + // //} + //} + if stock <= model.NO { + stock = 0 + } + skuIDList = append(skuIDList, sku.SkuID) + dao.ExecuteSQL(db, `UPDATE thing_map SET sync_status = 1 WHERE vendor_thing_id = ?`, sku.SkuID) } + _, err = cms.CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, nil, storeIdList, false, skuIDList, nil, model.SyncFlagStoreSkuModifiedMask, true, true) + _, err = cms.SyncSkus(jxcontext.AdminCtx, nil, nil, []string{"309558"}, nil, skuIDList, true) return err } diff --git a/business/jxcallback/orderman/order_comment.go b/business/jxcallback/orderman/order_comment.go index 2217a35de..264f25675 100644 --- a/business/jxcallback/orderman/order_comment.go +++ b/business/jxcallback/orderman/order_comment.go @@ -2,6 +2,7 @@ package orderman import ( "encoding/json" + "git.rosy.net.cn/jx-callback/business/jxstore/cms" "math/rand" "time" @@ -16,23 +17,6 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) -const ( - COMMENT_NOT_RESOLVED = 0 //未解决的差评状态 - COMMENT_RESOLVED = 1 //已解决的差评状态 - - JX_BAD_COMMENTS_MAX_LEVEL = 2 // 差评最大分 - JX_MIDDLE_COMMENTS_MAX_LEVEL = 4 // 中评最大分 - - COMMENTS_SCORE_ONE_ORTWO_BEGIN_DELAY_TIME = 1 * 60 //评论回复一星或二星回复延迟开始时间区间 - COMMENTS_SCORE_ONE_ORTWO_END_DELAY_TIME = 3 * 60 //评论回复一星或二星回复延迟结束时间区间 - COMMENTS_SCORE_THREE_BEGIN_DELAY_TIME = 2 * 60 //评论回复三星回复延迟开始时间区间 - COMMENTS_SCORE_THREE_END_DELAY_TIME = 4 * 60 //评论回复三星回复延迟结束时间区间 - COMMENTS_SCORE_FOUR_ORFIVE_BEGIN_DELAY_TIME = 2 * 60 //评论回复四星或五星回复延迟开始时间区间 - COMMENTS_SCORE_FOUR_ORFIVE_END_DELAY_TIME = 5 * 60 //评论回复四星或五星回复延迟结束时间区间 - - MAX_REAPLY_TIME = 18 * time.Hour -) - type tReplyConfig struct { DelayGapBegin int `json:"delayGapBegin"` DelayGapEnd int `json:"delayGapEnd"` @@ -84,13 +68,13 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( isNewComment = true if orderComment.IsReplied == 0 && time.Now().Sub(orderComment.CommentCreatedAt) < time.Duration(orderComment.ModifyDuration)*time.Hour { if storeDetail, err2 := dao.GetStoreDetail(db, orderComment.StoreID, orderComment.VendorID, ""); err2 == nil { - if storeDetail.AutoReplyType == model.AutoReplyAll || orderComment.Score > JX_BAD_COMMENTS_MAX_LEVEL && storeDetail.AutoReplyType == model.AutoReplyGoodComment { + if storeDetail.AutoReplyType == model.AutoReplyAll || orderComment.Score > cms.JX_BAD_COMMENTS_MAX_LEVEL && storeDetail.AutoReplyType == model.AutoReplyGoodComment { c.replyOrderComment(storeDetail.VendorOrgCode, orderComment) } } } } - if isNewComment /*&& orderComment.Score <= JX_BAD_COMMENTS_MAX_LEVEL*/ || !isNewComment && orderComment.Score > JX_BAD_COMMENTS_MAX_LEVEL { // 如果是直接非差评,或补评仍然是差评,忽略 + if isNewComment /*&& orderComment.Score <= JX_BAD_COMMENTS_MAX_LEVEL*/ || !isNewComment && orderComment.Score > cms.JX_BAD_COMMENTS_MAX_LEVEL { // 如果是直接非差评,或补评仍然是差评,忽略 if isNewComment { comment2.Createtime = utils.Time2Str(orderComment.CommentCreatedAt) comment2.Score = int(orderComment.Score) @@ -98,7 +82,7 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( comment2.Vendertags = orderComment.TagList comment2.Msg = orderComment.OriginalMsg - comment2.Status = COMMENT_NOT_RESOLVED + comment2.Status = cms.COMMENT_NOT_RESOLVED comment2.OrderFlag = utils.Int2Str(orderComment.VendorID) comment2.Maxmodifytime = int(orderComment.ModifyDuration) comment2.VendorOrderId = orderComment.VendorOrderID2 @@ -132,10 +116,10 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( comment2.Jxstoreid = utils.Int2Str(orderComment.StoreID) } comment2.Userphone = orderComment.ConsigneeMobile - if comment2.Jxstoreid != "" && orderComment.Score <= JX_MIDDLE_COMMENTS_MAX_LEVEL && time.Now().Sub(orderComment.CommentCreatedAt) < MAX_REAPLY_TIME && order != nil { + if comment2.Jxstoreid != "" && orderComment.Score <= cms.JX_MIDDLE_COMMENTS_MAX_LEVEL && time.Now().Sub(orderComment.CommentCreatedAt) < cms.MAX_REAPLY_TIME && order != nil { comment2.LastPushTime = utils.Time2Str(time.Now()) comment2.PushNo = 1 - weixinmsg.PushJDBadCommentToWeiXin(comment2, orderComment.Score <= JX_BAD_COMMENTS_MAX_LEVEL, order) + weixinmsg.PushJDBadCommentToWeiXin(comment2, orderComment.Score <= cms.JX_BAD_COMMENTS_MAX_LEVEL, order) } } else { // 修改评价,高于JX_BAD_COMMENTS_MAX_LEVEL //if orderComment.CommentCreatedAt.Sub(str2Time(comment2.Createtime)) == 0 || @@ -147,9 +131,9 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( comment2.UpdatedScore = int(orderComment.Score) comment2.UpdatedScorecontent = orderComment.Content comment2.UpdatedVendertags = orderComment.TagList - comment2.Status = COMMENT_RESOLVED + comment2.Status = cms.COMMENT_RESOLVED comment2.VendorOrderId = orderComment.VendorOrderID2 - if comment2.Jxstoreid != "" && orderComment.Score <= JX_MIDDLE_COMMENTS_MAX_LEVEL && time.Now().Sub(orderComment.CommentCreatedAt) < MAX_REAPLY_TIME { + if comment2.Jxstoreid != "" && orderComment.Score <= cms.JX_MIDDLE_COMMENTS_MAX_LEVEL && time.Now().Sub(orderComment.CommentCreatedAt) < cms.MAX_REAPLY_TIME { comment2.LastPushTime = utils.Time2Str(time.Now()) comment2.PushNo++ @@ -165,7 +149,7 @@ func (c *OrderManager) OnOrderComments(orderCommentList []*model.OrderComment) ( } else { order, _ = partner.CurOrderManager.LoadOrder(orderComment.VendorOrderID, orderComment.VendorID) } - weixinmsg.PushJDBadCommentToWeiXin(&comment3, orderComment.Score <= JX_BAD_COMMENTS_MAX_LEVEL, order) + weixinmsg.PushJDBadCommentToWeiXin(&comment3, orderComment.Score <= cms.JX_BAD_COMMENTS_MAX_LEVEL, order) } //} } diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 4f8402c8b..b8f7523c8 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -43,13 +43,11 @@ import ( "github.com/360EntSecGroup-Skylar/excelize" "git.rosy.net.cn/baseapi" - "git.rosy.net.cn/jx-callback/business/authz/autils" - "git.rosy.net.cn/jx-callback/business/jxcallback/orderman" - "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" + "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/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/excel" @@ -72,6 +70,23 @@ const ( GET_FIXED_COMMENTS_TYPE = 2 //获取已解决评论的标志 ) +const ( + COMMENT_NOT_RESOLVED = 0 //未解决的差评状态 + COMMENT_RESOLVED = 1 //已解决的差评状态 + + JX_BAD_COMMENTS_MAX_LEVEL = 2 // 差评最大分 + JX_MIDDLE_COMMENTS_MAX_LEVEL = 4 // 中评最大分 + + COMMENTS_SCORE_ONE_ORTWO_BEGIN_DELAY_TIME = 1 * 60 //评论回复一星或二星回复延迟开始时间区间 + COMMENTS_SCORE_ONE_ORTWO_END_DELAY_TIME = 3 * 60 //评论回复一星或二星回复延迟结束时间区间 + COMMENTS_SCORE_THREE_BEGIN_DELAY_TIME = 2 * 60 //评论回复三星回复延迟开始时间区间 + COMMENTS_SCORE_THREE_END_DELAY_TIME = 4 * 60 //评论回复三星回复延迟结束时间区间 + COMMENTS_SCORE_FOUR_ORFIVE_BEGIN_DELAY_TIME = 2 * 60 //评论回复四星或五星回复延迟开始时间区间 + COMMENTS_SCORE_FOUR_ORFIVE_END_DELAY_TIME = 5 * 60 //评论回复四星或五星回复延迟结束时间区间 + + MAX_REAPLY_TIME = 18 * time.Hour +) + type StoreExt struct { model.Store @@ -2027,7 +2042,7 @@ func TmpGetJxBadCommentsNo(ctx *jxcontext.Context, storeID int) (count int, err SELECT COUNT(*) ct FROM jx_bad_comments WHERE status = ? AND jxstoreid = ? AND score <= ? - `, orderman.COMMENT_NOT_RESOLVED, utils.Int2Str(storeID), orderman.JX_BAD_COMMENTS_MAX_LEVEL); err == nil { + `, COMMENT_NOT_RESOLVED, utils.Int2Str(storeID), JX_BAD_COMMENTS_MAX_LEVEL); err == nil { count = ctInfo.Ct } return count, err @@ -2091,9 +2106,9 @@ func TmpGetJxBadCommentsByStoreId(ctx *jxcontext.Context, keyword string, storeI sql += " AND t1.status = ?" if commentType == GET_BAD_COMMENTS_TYPE { sql += " AND t1.score <= ?" - sqlParams = append(sqlParams, orderman.COMMENT_NOT_RESOLVED, orderman.JX_BAD_COMMENTS_MAX_LEVEL) + sqlParams = append(sqlParams, COMMENT_NOT_RESOLVED, JX_BAD_COMMENTS_MAX_LEVEL) } else { - sqlParams = append(sqlParams, orderman.COMMENT_RESOLVED) + sqlParams = append(sqlParams, COMMENT_RESOLVED) } } if !utils.IsTimeZero(fromTime) { diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ee0253a9b..c0eaab76a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1770,6 +1770,7 @@ func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, sku if num == 0 || !isAsync || hint == "" { hint = utils.Int64ToStr(num) } + AddEventDetail(db, ctx, model.OperateUpdate, model.VendorIDUnknown, model.ThingTypeSku, storeIDs[0], "", "商品操作记录:"+utils.Format4Output(skuBindInfos, false)) } } return hint, err