110 lines
3.6 KiB
Go
110 lines
3.6 KiB
Go
package mtwmapi
|
||
|
||
import (
|
||
"math"
|
||
"strings"
|
||
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
)
|
||
|
||
const (
|
||
CommentReplyStatusAll = -1 //全部
|
||
CommentReplyStatusNotReplied = 0 // 未回复
|
||
CommentReplyStatusReplied = 1 // 已回复
|
||
|
||
MaxCommentQueryPageSize = 20
|
||
)
|
||
|
||
type OrderComment struct {
|
||
AddComment string `json:"add_comment"`
|
||
AddCommentTime string `json:"add_comment_time"`
|
||
CommentContent string `json:"comment_content"`
|
||
CommentID int64 `json:"comment_id"`
|
||
CommentLables string `json:"comment_lables"`
|
||
CommentLableList []string `json:"comment_lable_list"`
|
||
CommentPictures string `json:"comment_pictures"`
|
||
CommentTime string `json:"comment_time"`
|
||
CriticFoodList string `json:"critic_food_list"`
|
||
DeliveryCommentScore int `json:"delivery_comment_score"`
|
||
FoodCommentScore int `json:"food_comment_score"`
|
||
OrderCommentScore int `json:"order_comment_score"`
|
||
PackingScore int `json:"packing_score"`
|
||
PraiseFoodList string `json:"praise_food_list"`
|
||
ReplyStatus int `json:"reply_status"`
|
||
Result string `json:"result"`
|
||
ShipTime int `json:"ship_time"`
|
||
CommentOrderDetail []CommentOrderDetailList `json:"comment_order_detail"`
|
||
PraiseRetailList []RetailList `json:"praise_retail_list"` // 点赞商品列表
|
||
CriticRetailList []RetailList `json:"critic_retail_list"` // 点踩商品列表
|
||
}
|
||
|
||
type RetailList struct {
|
||
AppSpCode string `json:"app_sp_code"` // app方商品ID
|
||
SkuId string `json:"sku_id"`
|
||
Name string `json:"name"`
|
||
}
|
||
type CommentOrderDetailList struct {
|
||
FoodName string `json:"food_name"`
|
||
Count int `json:"count"`
|
||
}
|
||
|
||
// 根据门店id批量查询评价信息(新版)
|
||
// http://developer.waimai.meituan.com/home/docDetail/191
|
||
func (a *API) CommentQuery(poiCode string, startDateStr, endDateStr string, offset, limit int, replyStatus int) (commentList []*OrderComment, err error) {
|
||
params := map[string]interface{}{
|
||
KeyAppPoiCode: poiCode,
|
||
"start_time": startDateStr,
|
||
"end_time": endDateStr,
|
||
"pageoffset": offset,
|
||
"pagesize": limit,
|
||
"replyStatus": replyStatus,
|
||
}
|
||
if limit <= 0 {
|
||
limit = math.MaxInt32
|
||
}
|
||
originalOffset := offset
|
||
originalLimit := limit
|
||
for {
|
||
if limit <= 0 {
|
||
break
|
||
}
|
||
if limit > MaxCommentQueryPageSize {
|
||
limit = MaxCommentQueryPageSize
|
||
}
|
||
params["pageoffset"] = offset
|
||
params["pagesize"] = limit
|
||
result, err := a.AccessAPI("comment/query", true, params)
|
||
if err != nil {
|
||
break
|
||
}
|
||
var batchCommentList []*OrderComment
|
||
err = utils.Map2StructByJson(result, &batchCommentList, false)
|
||
if err != nil {
|
||
break
|
||
}
|
||
for _, comment := range batchCommentList {
|
||
if comment.CommentLables != "" {
|
||
comment.CommentLableList = strings.Split(comment.CommentLables, ",")
|
||
}
|
||
}
|
||
commentList = append(commentList, batchCommentList...)
|
||
if len(batchCommentList) < limit {
|
||
break
|
||
}
|
||
offset += limit
|
||
limit = originalLimit + originalOffset - offset
|
||
}
|
||
return commentList, nil
|
||
}
|
||
|
||
// 根据评价id添加商家回复
|
||
// http://developer.waimai.meituan.com/home/docDetail/194
|
||
func (a *API) CommentAddReply(poiCode string, commentID int64, reply string) (err error) {
|
||
_, err = a.AccessAPI("poi/comment/add_reply", false, map[string]interface{}{
|
||
KeyAppPoiCode: poiCode,
|
||
"comment_id": commentID,
|
||
"reply": reply,
|
||
})
|
||
return err
|
||
}
|