package mtwm import ( "strings" "time" "git.rosy.net.cn/baseapi/platformapi/mtwmapi" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/baseapi/utils" "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" ) const ( RefreshCommentTime = 7 * 24 * time.Hour // 此值必须大于24小时 RefreshCommentTimeInterval = 60 * time.Minute BAD_COMMENTS_MAX_MODIFY_TIME = 24 * 6 // 小时 ) func (c *PurchaseHandler) StartRefreshComment() { utils.AfterFuncWithRecover(5*time.Second, func() { c.refreshCommentOnce() }) } func (c *PurchaseHandler) refreshCommentOnce() { c.RefreshComment(time.Now().Add(-RefreshCommentTime), time.Now()) utils.AfterFuncWithRecover(RefreshCommentTimeInterval, func() { c.refreshCommentOnce() }) } func formalizeTagList(mtwmTagList string) (outTagList string) { if mtwmTagList != "" { outTagList = string(utils.Format4Output(strings.Split(mtwmTagList, ","), true)) } return outTagList } func (c *PurchaseHandler) RefreshComment(fromTime, toTime time.Time) (err error) { storeMapList, err2 := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDMTWM}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "", "") if err = err2; err != nil { return err } task := tasksch.NewParallelTask("mtwm RefreshComment", nil, jxcontext.AdminCtx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeMap := batchItemList[0].(*model.StoreMap) endDateStr := time.Now().Add(-24 * time.Hour).Format("20060102") startDateStr := time.Now().Add(-RefreshCommentTime).Format("20060102") commentList, err2 := getAPI(storeMap.VendorOrgCode, storeMap.StoreID, storeMap.VendorStoreID).CommentQuery(storeMap.VendorStoreID, startDateStr, endDateStr, 0, 0, mtwmapi.CommentReplyStatusAll) var orderCommentList []*model.OrderComment if err = err2; err != nil { return nil, err } for _, mtwmComment := range commentList { createdTime, err := utils.TryStr2Time(mtwmComment.CommentTime) if err == nil { orderComment := &model.OrderComment{ VendorOrderID: utils.Int64ToStr(mtwmComment.CommentID), // 美团评价不能得到订单号,以评价ID代替 VendorID: model.VendorIDMTWM, UserCommentID: utils.Int64ToStr(mtwmComment.CommentID), VendorStoreID: storeMap.VendorStoreID, TagList: formalizeTagList(mtwmComment.CommentLables), Score: int8(mtwmComment.FoodCommentScore), ModifyDuration: BAD_COMMENTS_MAX_MODIFY_TIME, OriginalMsg: string(utils.MustMarshal(mtwmComment)), IsReplied: int8(mtwmComment.ReplyStatus), StoreID: storeMap.StoreID, } if orderComment.IsReplied == 0 { orderComment.Content = mtwmComment.CommentContent orderComment.CommentCreatedAt = createdTime } else { orderComment.Content = mtwmComment.AddComment if updatedTime, err := utils.TryStr2Time(mtwmComment.CommentTime); err == nil { orderComment.CommentCreatedAt = updatedTime } } orderCommentList = append(orderCommentList, orderComment) } } return orderCommentList, nil }, storeMapList) task.Run() resultList, err2 := task.GetResult(0) if err = err2; err != nil { return err } var orderCommentList []*model.OrderComment for _, result := range resultList { orderComment := result.(*model.OrderComment) orderCommentList = append(orderCommentList, orderComment) } if len(orderCommentList) > 0 { err = partner.CurOrderManager.OnOrderComments(orderCommentList) } return err } func (c *PurchaseHandler) ReplyOrderComment(ctx *jxcontext.Context, vendorOrgCode string, orderComment *model.OrderComment, replyComment string) (err error) { globals.SugarLogger.Debugf("mtwm ReplyOrderComment, orderComment:%s, replyComment:%s", utils.Format4Output(orderComment, true), replyComment) if globals.EnableMtwmStoreWrite { err = getAPI(vendorOrgCode, orderComment.StoreID, orderComment.VendorStoreID).CommentAddReply(orderComment.VendorStoreID, utils.Str2Int64(orderComment.UserCommentID), replyComment) } return err }