package tiktok_store

import (
	"strings"
	"time"

	"git.rosy.net.cn/baseapi/utils"
	"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
	"git.rosy.net.cn/jx-callback/business/model"
)

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
}

// RefreshComment 拉去用户评论
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
	//}
	//endDateStr := time.Now().Add(-24 * time.Hour).Format("20060102")
	//startDateStr := time.Now().Add(-RefreshCommentTime).Format("20060102")
	//storeIDs, _ := dao.GetOrderStoreIDs(dao.GetDB(), fromTime, toTime, model.VendorIDMTWM)
	//task := tasksch.NewParallelTask("mtwm RefreshComment", nil, jxcontext.AdminCtx,
	//	func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
	//		storeID := batchItemList[0].(int)
	//		storeDetail, _ := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDMTWM, "")
	//		commentList, err2 := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).CommentQuery(storeDetail.VendorStoreID, startDateStr, endDateStr, 0, 0, mtwmapi.CommentReplyStatusNotReplied)
	//		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:  storeDetail.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:        storeDetail.ID,
	//				}
	//				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
	//	}, storeIDs)
	//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
}

// ReplyOrderComment 订单评价恢复
func (c *PurchaseHandler) ReplyOrderComment(ctx *jxcontext.Context, vendorOrgCode string, orderComment *model.OrderComment, replyComment string) (err error) {
	//if globals.EnableMtwmStoreWrite {
	//	err = getAPI(vendorOrgCode, orderComment.StoreID, orderComment.VendorStoreID).CommentAddReply(orderComment.VendorStoreID, utils.Str2Int64(orderComment.UserCommentID), replyComment)
	//}
	return err
}
