diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index eb7f014d7..b592168e8 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -81,20 +81,24 @@ func GetWeixinOpenIDsFromStoreID(storeID int) (retVal []string) { func SendMsgToStore(storeID int, templateID, downloadURL string, data interface{}) (err error) { if globals.ReallySendWeixinMsg { - openIDs := GetWeixinOpenIDsFromStoreID(storeID) - successCount := 0 - for _, openID := range openIDs { - if err2 := api.WeixinAPI.MessageTemplateSend(openID, templateID, downloadURL, nil, data); err2 == nil { - successCount++ - } else { - err = err2 + if storeID == 0 { // 测试,只发给我 + api.WeixinAPI.MessageTemplateSend("oYN_ust9hXKEvEv0X6Mq6nlAWs_E", templateID, downloadURL, nil, data) + } else { + openIDs := GetWeixinOpenIDsFromStoreID(storeID) + successCount := 0 + for _, openID := range openIDs { + if err2 := api.WeixinAPI.MessageTemplateSend(openID, templateID, downloadURL, nil, data); err2 == nil { + successCount++ + } else { + err = err2 + } + } + if successCount > 0 { + err = nil // 只要成功一个都当成成功 + } + if err != nil { + globals.SugarLogger.Debugf("SendMsgToStore all failed storeID:%d, templateID:%s, error:%v", storeID, templateID, err) } - } - if successCount > 0 { - err = nil // 只要成功一个都当成成功 - } - if err != nil { - globals.SugarLogger.Debugf("SendMsgToStore all failed storeID:%d, templateID:%s, error:%v", storeID, templateID, err) } } return err @@ -205,6 +209,38 @@ func NotifyWaybillStatus(bill *model.Waybill, order *model.GoodsOrder) error { return nil } +func PushJDBadCommentToWeiXin(comment *model.JxBadComments) (err error) { + globals.SugarLogger.Debugf("PushJDBadCommentToWeiXin orderID:%s", comment.OrderId) + + sb := new(strings.Builder) + sb.WriteString("你收到了京东到家客户(") + sb.WriteString(comment.Userphone) + sb.WriteString(")的一条") + sb.WriteString(utils.Int2Str(comment.Score)) + sb.WriteString("星差评,请商家在1小时内及时联系客户处理!") + + data := map[string]interface{}{ + "first": map[string]interface{}{ + "value": sb.String(), + "color": WX_HIGHLEVEL_TEMPLATE_COLOR, + }, + "keyword1": map[string]interface{}{ + "value": comment.Createtime, + "color": WX_TEMPLATE_VENDERCOLOR_BAD_COMMENTS, + }, + "keyword2": map[string]interface{}{ + "value": comment.OrderId, + "color": WX_TEMPLATE_VENDERCOLOR_BAD_COMMENTS, + }, + "remark": map[string]interface{}{ + "value": genJdCommentRemark(comment), + "color": WX_TEMPLATE_VENDERCOLOR_BAD_COMMENTS, + }, + } + storeID := int(utils.Str2Int64(comment.Jxstoreid)) + return SendMsgToStore(0, WX_BAD_COMMENT_PUSH_TEMPLATE_ID, fmt.Sprintf("%s%d", WX_TO_SHOW_COMMENTS_DETAIL_URL, storeID), data) +} + func FormatDeliveryTime(order *model.GoodsOrder) string { var tmpTime time.Time if order.ExpectedDeliveredTime == utils.DefaultTimeValue { @@ -217,3 +253,12 @@ func FormatDeliveryTime(order *model.GoodsOrder) string { leftMinutes := left % 60 return fmt.Sprintf("请于%s前送达(剩余时间%d小时%d分钟)", utils.Time2Str(tmpTime), leftHours, leftMinutes) } + +func genJdCommentRemark(comment *model.JxBadComments) string { + sb := new(strings.Builder) + sb.WriteString("差评标签:") + sb.WriteString(comment.Vendertags) + sb.WriteString(" 差评内容:") + sb.WriteString(comment.Scorecontent) + return sb.String() +} diff --git a/business/partner/purchase/jd/order_legacy_comment.go b/business/partner/purchase/jd/order_legacy_comment.go index 58dcf6e15..4b37ace59 100644 --- a/business/partner/purchase/jd/order_legacy_comment.go +++ b/business/partner/purchase/jd/order_legacy_comment.go @@ -7,6 +7,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/weixinmsg" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/business/partner" @@ -86,12 +87,8 @@ func (c *PurchaseHandler) onOrderComment(msg *jdapi.CallbackOrderMsg) (err error isNewComment = true err = c.replyOrderComment(intOrderID, utils.Int64ToStr(utils.MustInterface2Int64(result["storeId"])), score) } - if !(score > JX_BAD_COMMENTS_MAX_LEVEL && isNewComment) { // 如果是直接非差评,忽略 + if score <= JX_BAD_COMMENTS_MAX_LEVEL || !isNewComment { // 如果是直接非差评,忽略 comment.Createtime = utils.Timestamp2Str(utils.MustInterface2Int64(result["createTime"].(map[string]interface{})["time"]) / 1000) - comment.OrderFlag = "0" - comment.LastPushTime = utils.Time2Str(time.Now()) - comment.PushNo = 1 - comment.Maxmodifytime = JDDJ_BAD_COMMENTS_MAX_MODIFY_TIME if isNewComment || score <= JX_BAD_COMMENTS_MAX_LEVEL { comment.Msg = string(utils.MustMarshal(result)) comment.Score = score @@ -99,6 +96,11 @@ func (c *PurchaseHandler) onOrderComment(msg *jdapi.CallbackOrderMsg) (err error comment.Vendertags = string(utils.MustMarshal(result["venderTags"])) comment.Status = COMMENT_NOT_RESOLVED if isNewComment { + comment.OrderFlag = "0" + comment.LastPushTime = utils.Time2Str(time.Now()) + comment.PushNo = 1 + comment.Maxmodifytime = JDDJ_BAD_COMMENTS_MAX_MODIFY_TIME + order, err2 := partner.CurOrderManager.LoadOrder(msg.BillID, model.VendorIDJD) if err = err2; err == nil { comment.Jxstoreid = utils.Int2Str(jxutils.GetJxStoreIDFromOrder(order)) @@ -112,6 +114,11 @@ func (c *PurchaseHandler) onOrderComment(msg *jdapi.CallbackOrderMsg) (err error comment.UpdatedVendertags = string(utils.MustMarshal(result["venderTags"])) comment.Status = COMMENT_RESOLVED } + if score <= JX_BAD_COMMENTS_MAX_LEVEL { + if globals.ReallyCallPlatformAPI { + weixinmsg.PushJDBadCommentToWeiXin(comment) + } + } if err == nil { if isNewComment { globals.SugarLogger.Debug("fuck1")