新增抖音授权登录

This commit is contained in:
邹宗楠
2022-04-14 17:02:41 +08:00
parent 65852ad289
commit 13757d515d
13 changed files with 1307 additions and 5 deletions

View File

@@ -0,0 +1,198 @@
package fnpsapi
import (
"encoding/json"
"git.rosy.net.cn/baseapi"
"io/ioutil"
"net/http"
)
const (
OrderStatus = "orderStatusNotify" // 订单状态回调
AbnormalStatus = "abnormalReportNotify" // 异常报备回调
CookingFinishStatus = "cookingFinishNotify" // 商户出餐回调
ChainstoreStatus = "chainstoreStatusNotify" // 门店状态变更回调
ChainstoreServiceStatus = "chainstoreServiceStatusNotify" // 门店采购服务变更回调
NoServiceStatus = "noServiceNotify" // 城市屏蔽区域调整回调通知
)
var (
SuccessResponse = &CallbackResponse{Code: 200}
SignatureIsNotOk = &CallbackResponse{Code: -1}
)
type CallbackResponse struct {
Code int `json:"code"`
}
func Err2CallbackResponse(err error, data string) *CallbackResponse {
if err == nil {
return SuccessResponse
}
return &CallbackResponse{
Code: -1,
}
}
type ShortStatus struct {
AppId string `json:"app_id"`
Signature string `json:"signature"`
Timestamp string `json:"timestamp"`
BusinessData string `json:"business_data"`
}
//#region 订单
// 订单状态
type OrderStatusNottify struct {
CallbackBusinessType string `json:"callback_business_type"`
Param *OrderCallbackParam `json:"param"`
}
// 订单状态回调paramter
type OrderCallbackParam struct {
OrderId int64 `json:"order_id"` // 订单号
AppId string `json:"app_id"` // 应用id
PartnerOrderCode string `json:"partner_order_code"` // 外部订单号
OrderStatus int `json:"order_status"` // 订单状态 订单生成0运单生成成功120骑手接单80骑手到 店2配送中3已完成4已取消5配送异常
CarrierDriverId int64 `json:"carrier_driver_id"` // 骑手id
CarrierLat string `json:"carrier_lat"` // 坐标高德(不要使用)
CarrierLng string `json:"carrier_lng"` // 坐标高德(不要使用)
CarrierDriverName string `json:"carrier_driver_name"` // 骑手姓名
CarrierDriverPhone string `json:"carrier_driver_phone"` // 骑手电话
Description string `json:"description"` // 描述
ErrorCode string `json:"error_code"` // 异常code
ErrorScene string `json:"error_scene"` // 异常描述
DetailDescription string `json:"detail_description"` // 详情描述
PushTime int64 `json:"push_time"` // 状态推送时间 (毫秒)
Transfer int `json:"transfer"` // 转单标识 转单标识 1 是转单 0非转单
}
//#endregion
// 门店状态回调
type ChainstoreStatusNotify struct {
CallbackBusinessType string `json:"callback_business_type"`
Param *ChainstoreParam `json:"param"`
}
// 门店状态回调paramter
type ChainstoreParam struct {
MerchantId string `json:"merchant_id"` // 商户id
ChainStoreId string `json:"chain_store_id"` // 蜂鸟门店id
OutShopCode string `json:"out_shop_code"` // 外部门店编码
Status string `json:"status"` // 门店认证状态
ModifyStatus string `json:"modify_status"` // 门店修改状态
Remark string `json:"remark"` // 门店认证、修改等驳回时返回原因
}
// 出餐回调
type CookingFinishNotify struct {
OrderId int64 `json:"order_id"` // 订单号
AppId string `json:"app_id"` // 应用id
PartnerOrderCode string `json:"partner_order_code"` // 外部订单号
ChainStoreId string `json:"chain_store_id"` // 蜂鸟门店id
MerchantId string `json:"merchant_id"` // 商户id
CookingFinishTime int64 `json:"cooking_finish_time"` // 状态推送时间 (毫秒)
}
// 异常状态回掉
type AbnormalStatusNotify struct {
CallbackBusinessType string `json:"callback_business_type"`
Param *AbnormalReportNotify `json:"param"`
}
// 异常状态回调
type AbnormalReportNotify struct {
OrderId int64 `json:"order_id"` // 订单号
AppId string `json:"app_id"` // 应用id
PartnerOrderCode string `json:"partner_order_code"` // 外部订单号
CarrierDriverId int64 `json:"carrier_driver_id"` // 骑手id
Longitude string `json:"longitude"` // 纬度
Latitude string `json:"latitude"` // 门店纬度
AbnormalCode string `json:"abnormal_code"` // 异常报备code
AbnormalDesc string `json:"abnormal_desc"` // 异常报备描述
AbnormalReportTime int64 `json:"abnormal_report_time"` // 异常报备时间 毫秒
}
// 获取门店状态回调消息
func (a *API) GetChainstoreStatusNotify(request *http.Request) (shopStatusMsg *ChainstoreStatusNotify, callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
storeNotify := &ShortStatus{}
if err := json.Unmarshal(data, &storeNotify); err != nil {
baseapi.SugarLogger.Debugf("FN GetChainstoreStatusNotify failed with err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
fnNotify := &ChainstoreStatusNotify{}
if err := json.Unmarshal([]byte(storeNotify.BusinessData), fnNotify); err != nil {
baseapi.SugarLogger.Debugf("FN callback string to GetChainstoreStatusNotify failed with err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
return fnNotify, SuccessResponse
}
// 获取订单状态回调消息
func (a *API) GetChainOrderStatusNotify(request *http.Request) (shopStatusMsg *OrderStatusNottify, callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
baseapi.SugarLogger.Debugf("FN GetChainOrderStatusNotify failed with No result msg err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
result := &ShortStatus{}
if err := json.Unmarshal(data, &result); err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
orderResult := &OrderStatusNottify{}
if err := json.Unmarshal([]byte(result.BusinessData), orderResult); err != nil {
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
return orderResult, SuccessResponse
}
// 异常配送
func (a *API) GetChainAbnormaltatusNotify(request *http.Request) (shopStatusMsg *AbnormalStatusNotify, callbackResponse *CallbackResponse) {
data, err := ioutil.ReadAll(request.Body)
if err != nil {
baseapi.SugarLogger.Debugf("FN GetChainOrderStatusNotify failed with No result msg err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
storeNotify := &ShortStatus{}
if err := json.Unmarshal(data, &storeNotify); err != nil {
baseapi.SugarLogger.Debugf("FN GetShopStatusCallbackMsg failed with err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
fnNotify := &AbnormalStatusNotify{}
if err := json.Unmarshal([]byte(storeNotify.BusinessData), fnNotify); err != nil {
baseapi.SugarLogger.Debugf("FN callback string to ChainstoreStatusNotify failed with err:%v", err)
callbackResponse = &CallbackResponse{Code: -1}
return nil, callbackResponse
}
return fnNotify, SuccessResponse
}
func (a *API) CheckCallbackValidation(request *http.Request) (callbackResponse *CallbackResponse) {
err := request.ParseForm()
if err != nil {
callbackResponse = Err2CallbackResponse(err, "")
}
return callbackResponse
}