112 lines
3.3 KiB
Go
112 lines
3.3 KiB
Go
package ebaiapi
|
||
|
||
import (
|
||
"time"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
)
|
||
|
||
const (
|
||
ReplyStatusAll = -1
|
||
ReplyStatusNotReplied = 0
|
||
ReplyStatusReplied = 1
|
||
)
|
||
|
||
type GoodsComment struct {
|
||
CommentID int64 `json:"comment_id"`
|
||
Name string `json:"name"`
|
||
Rating int `json:"rating"`
|
||
RatingContent string `json:"rating_content"`
|
||
}
|
||
|
||
type OrderComment struct {
|
||
CommentID int64 `json:"comment_id"`
|
||
PackageRating int `json:"package_rating"`
|
||
QualityRating int `json:"quality_rating"`
|
||
RatingAt int64 `json:"rating_at"`
|
||
RatingContent string `json:"rating_content"`
|
||
ReplyAt int64 `json:"reply_at"`
|
||
ReplyContent string `json:"reply_content"`
|
||
ServiceRating int `json:"service_rating"`
|
||
}
|
||
|
||
type ShopOrderComment struct {
|
||
AnonymousRating string `json:"anonymous_rating"`
|
||
CanEditReply string `json:"can_edit_reply"`
|
||
CanReply string `json:"can_reply"`
|
||
DishRateList []*GoodsComment `json:"dish_rate_list"`
|
||
OrderID int64 `json:"order_id"`
|
||
OrderRateList []*OrderComment `json:"order_rate_list"`
|
||
}
|
||
|
||
// 不要使用此接口,用OrderCommetGet
|
||
func (a *API) OrderRatesGet(shopID string, baiduShopID int64, startTime, endTime time.Time, replyStatus int) (commentList []map[string]interface{}, err error) {
|
||
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
||
if !utils.IsTimeZero(startTime) {
|
||
params["startTime"] = startTime.Unix()
|
||
}
|
||
if !utils.IsTimeZero(endTime) {
|
||
params["endTime"] = endTime.Unix()
|
||
}
|
||
if replyStatus != ReplyStatusAll {
|
||
params["replyStatus"] = replyStatus
|
||
}
|
||
pageNo := 1
|
||
for {
|
||
params["page"] = pageNo
|
||
result, err := a.AccessAPI("ugc.orderrates.get", params)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
data := result.Data.(map[string]interface{})
|
||
commentList = append(commentList, utils.Slice2MapSlice(data["comment_list"].([]interface{}))...)
|
||
total := int(utils.MustInterface2Int64(data["total"]))
|
||
if len(commentList) >= total {
|
||
break
|
||
}
|
||
}
|
||
return commentList, err
|
||
}
|
||
|
||
func (a *API) OrderRatesReply(shopID string, baiduShopID int64, commentID, content string) (err error) {
|
||
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
||
params["comment_id"] = commentID
|
||
params["content"] = content
|
||
_, err = a.AccessAPI("ugc.reply", params)
|
||
return err
|
||
}
|
||
|
||
// 此函数在用户匿名评价时,order_id为0,还是只有扒网页
|
||
func (a *API) OrderCommetGet(shopID string, baiduShopID int64, startTime, endTime time.Time, replyStatus int) (commentList []*ShopOrderComment, err error) {
|
||
params := a.genShopIDParams(shopID, baiduShopID, 0)
|
||
if !utils.IsTimeZero(startTime) {
|
||
params["startTime"] = startTime.Unix()
|
||
}
|
||
if !utils.IsTimeZero(endTime) {
|
||
params["endTime"] = endTime.Unix()
|
||
}
|
||
if replyStatus != ReplyStatusAll {
|
||
params["replyStatus"] = replyStatus
|
||
}
|
||
pageNo := 1
|
||
for {
|
||
params["page"] = pageNo
|
||
result, err := a.AccessAPI("ugc.ordercomment.get", params)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
data := result.Data.(map[string]interface{})
|
||
var pageCommentList []*ShopOrderComment
|
||
if err = utils.Map2StructByJson(data["comment_list"], &pageCommentList, false); err == nil {
|
||
commentList = append(commentList, pageCommentList...)
|
||
} else {
|
||
break
|
||
}
|
||
total := int(utils.MustInterface2Int64(data["total"]))
|
||
if len(commentList) >= total {
|
||
break
|
||
}
|
||
}
|
||
return commentList, err
|
||
}
|