package controllers import ( "encoding/json" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" "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/purchase/tiktok_store" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" "strings" ) type TiktokController struct { web.Controller } // CallbackTiktokOrderMsg 抖店用户下单订单推送 (tiktokStore) func (t *TiktokController) CallbackTiktokOrderMsg() { // 1.防伪校验 resp, byteList := api.TiktokStore.EventSignChange(t.Ctx.Request) if resp.Code != 0 { t.Data["json"] = resp t.ServeJSON() return } if strings.Contains(string(byteList), "\"msg_id\":\"0\"") { t.Data["json"] = tiktok_api.CallbackResponse{Code: tiktok_api.CallbackSuccessCode, Msg: tiktok_api.CallbackSuccess} t.ServeJSON() return } // 2.参数解析 orderStatus, resp := api.TiktokStore.CreateOrderCallback(byteList) if resp.Code != 0 { t.Data["json"] = resp t.ServeJSON() return } for k, v := range orderStatus { for _, callback := range v { resp2 := tiktok_store.OnOrderMsg(k, callback) if resp2.Code != 0 { t.Data["json"] = resp2 t.ServeJSON() return } } } t.Data["json"] = tiktok_api.CallbackResponse{Code: tiktok_api.CallbackSuccessCode, Msg: tiktok_api.CallbackSuccess} t.ServeJSON() } func TiktokMsgChange(orderStatus []byte) (map[string][]interface{}, *tiktok_api.CallbackResponse) { var resp []*tiktok_api.OrderCallback if err := json.Unmarshal(orderStatus, &resp); err != nil { return nil, &tiktok_api.CallbackResponse{Code: tiktok_api.CallbackFailCode, Msg: tiktok_api.CallbackFail} } callbackResult := make(map[string][]interface{}, 0) for _, data := range resp { switch data.Tag { case tiktok_api.CallbackCreatedOrderMsgTagId: // 创建订单 create := tiktok_api.CreateOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackCreatedOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackCreatedOrderMsgTagId], create) vendorStoreId := utils.Int64ToStr(create.ShopId) storeDetail, _ := dao.GetStoreDetailByVendorStoreID(dao.GetDB(), vendorStoreId, model.VendorIDDD, "") if storeDetail != nil && storeDetail.Store.ID != 0 && storeDetail.Store.BrandID == model.BrandIdChengShan { // 成山农场订单 } else if storeDetail != nil && storeDetail.Store.ID != 0 { // 当前菜市系统订单 continue } else { // 果园订单 } case tiktok_api.CallbackPayOrderMsgTagId: // 支付订单 create := tiktok_api.PayOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackPayOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackPayOrderMsgTagId], create) case tiktok_api.CallbackWaitOrderMsgTagId: // 支付订单待处理(风控审核) create := tiktok_api.WaitOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackWaitOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackWaitOrderMsgTagId], create) case tiktok_api.CallbackPartGoodsMsgTagId: // 卖家部分发货 create := tiktok_api.SomeSendOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackPartGoodsMsgTagId] = append(callbackResult[tiktok_api.CallbackPartGoodsMsgTagId], create) case tiktok_api.CallbackPartAllGoodsMsgTagId: // 卖家发货 create := tiktok_api.BusinessDeliveryData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackPartAllGoodsMsgTagId] = append(callbackResult[tiktok_api.CallbackPartAllGoodsMsgTagId], create) case tiktok_api.CallbackCancelOrderMsgTagId: // 取消订单 create := tiktok_api.CreateOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackCancelOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackCancelOrderMsgTagId], create) case tiktok_api.CallbackSuccessOrderMsgTagId: // 卖家确认收货时,会自动完成 create := tiktok_api.SuccessOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackSuccessOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackSuccessOrderMsgTagId], create) case tiktok_api.CallbackWayBillChangeOrderMsgTagId: // 发货物流消息便跟 create := tiktok_api.WayBillChangeData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackWayBillChangeOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackWayBillChangeOrderMsgTagId], create) case tiktok_api.CallbackReceivingChangeOrderMsgTagId: // 收货地址消息变更(商家审核通过触发) create := tiktok_api.ReceivingAddressChangeData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackReceivingChangeOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackReceivingChangeOrderMsgTagId], create) case tiktok_api.CallbackChangeMoneyMsgTagId: // 卖家修改订单/运单金额回调 create := tiktok_api.UpdateAmountChangeData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackChangeMoneyMsgTagId] = append(callbackResult[tiktok_api.CallbackChangeMoneyMsgTagId], create) case tiktok_api.CallbackBusinessRemarkMsgTagId: // 买家收货消息变更(手机,地址,姓名),用户C端修改触发(需要上面审核接口) create := tiktok_api.BuyerUpdateWayBillData{} if err := json.Unmarshal([]byte(data.Data), create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackBusinessRemarkMsgTagId] = append(callbackResult[tiktok_api.CallbackBusinessRemarkMsgTagId], create) case tiktok_api.CallbackApplyUpdateAddressMsgTagId: // 商家修改交易备注回调 create := tiktok_api.BusinessUpdateRemakeData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackApplyUpdateAddressMsgTagId] = append(callbackResult[tiktok_api.CallbackApplyUpdateAddressMsgTagId], create) case tiktok_api.CallbackSendOrderTimeChangeMsgTagId: // 订单发货时消息变更回调 create := tiktok_api.AppointmentChangeData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackSendOrderTimeChangeMsgTagId] = append(callbackResult[tiktok_api.CallbackSendOrderTimeChangeMsgTagId], create) /*********下面属于订单退货消息************/ case tiktok_api.CallbackRefundOrderMsgTagId: // 买家发起售后申请消息 create := tiktok_api.BuyerRefundCreatedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackRefundOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackRefundOrderMsgTagId], create) case tiktok_api.CallbackUpdateRefundOrderMsgTagId: // 买家修改售后申请消息 create := tiktok_api.BuyerRefundModifiedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackUpdateRefundOrderMsgTagId] = append(callbackResult[tiktok_api.CallbackUpdateRefundOrderMsgTagId], create) case tiktok_api.CallbackRefundOrderSuccessMsgTagId: // 退款成功消息 create := tiktok_api.BusinessRefundSuccessData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackRefundOrderSuccessMsgTagId] = append(callbackResult[tiktok_api.CallbackRefundOrderSuccessMsgTagId], create) case tiktok_api.CallbackRefundOrderRefuseMsgTagId: // 拒绝退款消息 create := tiktok_api.BusinessNotRefundRefusedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackRefundOrderRefuseMsgTagId] = append(callbackResult[tiktok_api.CallbackRefundOrderRefuseMsgTagId], create) case tiktok_api.CallbackRefundShopMsgTagId: // 拒绝退货申请消息 create := tiktok_api.BusinessNotReturnApplyRefusedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackRefundShopMsgTagId] = append(callbackResult[tiktok_api.CallbackRefundShopMsgTagId], create) case tiktok_api.CallbackReturnApplyAgreedMsgTagId: // 卖家同意时,推送此消息 create := tiktok_api.BusinessReturnApplyAgreedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackReturnApplyAgreedMsgTagId] = append(callbackResult[tiktok_api.CallbackReturnApplyAgreedMsgTagId], create) case tiktok_api.CallbackReturnRefundAgreedMsgTagId: // 同意退款消息 create := tiktok_api.BusinessRefundAgreedData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackReturnRefundAgreedMsgTagId] = append(callbackResult[tiktok_api.CallbackReturnRefundAgreedMsgTagId], create) case tiktok_api.CallbackRefundClosedMsgTagId: create := tiktok_api.UserCancelRefundOrderData{} if err := json.Unmarshal([]byte(data.Data), &create); err != nil { return nil, tiktok_api.CallbackResponseErr(false) } callbackResult[tiktok_api.CallbackRefundClosedMsgTagId] = append(callbackResult[tiktok_api.CallbackRefundClosedMsgTagId], create) default: return nil, tiktok_api.CallbackResponseErr(false) } } return callbackResult, &tiktok_api.CallbackResponse{Code: tiktok_api.CallbackSuccessCode, Msg: tiktok_api.CallbackSuccess} }