1
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user