From da87f4e2f4646e5ce18d7258e845c1677877e902 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Thu, 6 Jul 2023 10:18:41 +0800 Subject: [PATCH] push config --- business/auth2/auth2.go | 4 -- business/auth2/authprovider/defauther.go | 26 --------- business/auth2/authprovider/weixin/weixin.go | 4 -- business/jxutils/unipush/push.go | 58 +++++++++++++++++--- business/model/dao/dao_auth2.go | 2 - business/partner/purchase/im/im.go | 32 +++++++++++ controllers/auth2.go | 3 - 7 files changed, 83 insertions(+), 46 deletions(-) diff --git a/business/auth2/auth2.go b/business/auth2/auth2.go index cdf20f13c..401a05efd 100644 --- a/business/auth2/auth2.go +++ b/business/auth2/auth2.go @@ -9,8 +9,6 @@ import ( "strings" "time" - "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -311,7 +309,6 @@ func LoginInternal(ctx *Context, authType, authID, authIDType, authSecret string if appID == model.JXC4ClientAppID && authInfo.AuthBindInfo.UserID != "" { binds, err := dao.GetUserBindAuthInfo(dao.GetDB(), authInfo.AuthBindInfo.UserID, 0, nil, "", "", []string{model.JXC4ClientAppID}) if err != nil { - globals.SugarLogger.Debugf("AuthTypeWXApp authInfo=%s,err=%v", utils.Format4Output(authInfo, false), err) return authInfo, err } if len(binds) == 0 { @@ -327,7 +324,6 @@ func LoginInternal(ctx *Context, authType, authID, authIDType, authSecret string } else { err = ErrIllegalAuthType } - globals.SugarLogger.Debugf("LoginInternal authInfo=%s", utils.Format4Output(authInfo, false)) return authInfo, err } diff --git a/business/auth2/authprovider/defauther.go b/business/auth2/authprovider/defauther.go index 620ef8c91..a38868ccf 100644 --- a/business/auth2/authprovider/defauther.go +++ b/business/auth2/authprovider/defauther.go @@ -7,8 +7,6 @@ import ( "strings" "time" - "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/model" @@ -80,24 +78,6 @@ func (a *DefAuther) UnionFindAuthBind(curAuthType, curAuthTypeID string, unionAu } else if dao.IsNoRowsError(err) { // 直接找不到,尝试unionID if unionID != "" || openID != "" { // 且有unionID var authBindList []*model.AuthBind - //authBindList, err = dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, unionAuthTypeList, openID, unionID, nil) - //if err != nil { - // return nil, err - //} - //if len(authBindList) > 0 { // 通过unionID找到至少一个认证方式 - // authBind = authBindList[0] - // authBind.Type = curAuthType - // authBind.TypeID = curAuthTypeID - // authBind.AuthID = openID - // if authDetail != nil { - // authBind.DetailData = string(utils.MustMarshal(authDetail)) - // } - // authBindEx = &auth2.AuthBindEx{ - // AuthBind: *authBind, - // } - // a.UnbindAuth(authBind.UserID, curAuthType, curAuthTypeID, model.AdminName) - // err = a.AddAuthBind(authBindEx, model.AdminName) // 自动绑定 - //} if authBindList, err = dao.GetUserBindAuthInfo(db, "", model.AuthBindTypeAuth, unionAuthTypeList, openID, unionID, nil); err == nil && len(authBindList) > 0 { // 通过unionID找到至少一个认证方式 authBind = authBindList[0] authBind.Type = curAuthType @@ -112,18 +92,14 @@ func (a *DefAuther) UnionFindAuthBind(curAuthType, curAuthTypeID string, unionAu a.UnbindAuth(authBind.UserID, curAuthType, curAuthTypeID, model.AdminName) err = a.AddAuthBind(authBindEx, model.AdminName) // 自动绑定 } else if dao.IsNoRowsError(err) { - globals.SugarLogger.Debugf("dao.IsNoRowsError(err)=%s,err=%v", dao.IsNoRowsError(err), err) err = nil } } else { err = nil } } - globals.SugarLogger.Debugf("authBindList err=%v", err) - globals.SugarLogger.Debugf("authBindList authBindEx=%v", err) if err == nil && authBindEx == nil { //如果没有报错,且没有找到一个认证方式,创建无用户(UserID为空)的认证方式 - globals.SugarLogger.Debugf("进入添加无用户认证方式") authBindEx = &auth2.AuthBindEx{ AuthBind: model.AuthBind{ Type: curAuthType, @@ -135,8 +111,6 @@ func (a *DefAuther) UnionFindAuthBind(curAuthType, curAuthTypeID string, unionAu if authDetail != nil { authBindEx.DetailData = string(utils.MustMarshal(authDetail)) } - globals.SugarLogger.Debugf("authBindEx=%s", utils.Format4Output(authBindEx, false)) - } return authBindEx, err } diff --git a/business/auth2/authprovider/weixin/weixin.go b/business/auth2/authprovider/weixin/weixin.go index f773c78dd..1625d364c 100644 --- a/business/auth2/authprovider/weixin/weixin.go +++ b/business/auth2/authprovider/weixin/weixin.go @@ -3,9 +3,6 @@ package weixin import ( "errors" - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/globals" - "git.rosy.net.cn/baseapi/platformapi/weixinapi" "git.rosy.net.cn/jx-callback/business/auth2" "git.rosy.net.cn/jx-callback/business/auth2/authprovider" @@ -88,7 +85,6 @@ func (a *Auther) VerifySecret(id, secret string) (authBindEx *auth2.AuthBindEx, } if err == nil { wxUserinfo, err2 := a.getAPI().SNSGetUserInfo(accessToken, openID) - globals.SugarLogger.Debugf("wxUserinfo=%s", utils.Format4Output(wxUserinfo, false)) if err = err2; err == nil { if authBindEx, err = a.UnionFindAuthBind(a.authType, a.getAPI().GetAppID(), []string{AuthTypeWeixin, AuthTypeMP, AuthTypeMini, AuthTypeWXNative, AuthTypeWxApp, AuthTypeWxAppCaishi}, wxUserinfo.OpenID, wxUserinfo.UnionID, wxUserinfo); err == nil { authBindEx.UserHint = &auth2.UserBasic{ diff --git a/business/jxutils/unipush/push.go b/business/jxutils/unipush/push.go index f919d29a0..ff06aab3b 100644 --- a/business/jxutils/unipush/push.go +++ b/business/jxutils/unipush/push.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "fmt" + "math/rand" "time" "git.rosy.net.cn/jx-callback/business/authz/autils" @@ -21,6 +22,9 @@ const ( SoundsFileNewAfsOrder = "afsOrder.caf" SoundsFileNewCancelOrder = "cancelOrder.caf" SoundsFileNewImMsg = "newMsg.caf" + + FlagOrder = 1 //订单渠道 + FlagIm = 2 //消息类型 ) // NotifyNewOrder 推送新订单 @@ -50,7 +54,7 @@ func NotifyNewOrder(order *model.GoodsOrder) { msg.VendorOrderId = order.VendorOrderID context, _ := json.Marshal(msg) body := fmt.Sprintf(msg.Context+"(%s)", model.VendorChineseNames[order.VendorID]+"#"+msg.OrderSqs) - pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewOrder) + pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewOrder, FlagOrder) } func NotifyAfsOrder(afsOrder *model.AfsOrder) (err error) { @@ -78,7 +82,7 @@ func NotifyAfsOrder(afsOrder *model.AfsOrder) (err error) { msg.Context = "老板订单申请退款了!" context, _ := json.Marshal(msg) body := fmt.Sprintf(msg.Context+"(%s)", model.VendorChineseNames[afsOrder.VendorID]+"#"+msg.OrderSqs) - pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewAfsOrder) + pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewAfsOrder, FlagOrder) return err } @@ -107,7 +111,7 @@ func NotifyOrderCanceled(order *model.GoodsOrder) (err error) { msg.Context = "老板订单被取消了!" context, _ := json.Marshal(msg) body := fmt.Sprintf(msg.Context+"(%s)", model.VendorChineseNames[order.VendorID]+"#"+msg.OrderSqs) - pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewCancelOrder) + pushMsgByUniApp(storeDetail.ID, storeDetail.Name, cid, string(context), body, SoundsFileNewCancelOrder, FlagOrder) return err } @@ -135,7 +139,7 @@ func NotifyImNewMessage(vendorStoreID string, vendorID int) error { msg.Context = "老板,你有新的用户消息,请及时查看!" context, _ := json.Marshal(msg) - pushMsgByUniApp(store.ID, store.Name, cid, string(context), "", SoundsFileNewImMsg) + pushMsgByUniApp(store.ID, store.Name, cid, string(context), "", SoundsFileNewImMsg, FlagIm) return err } @@ -175,8 +179,42 @@ type MsgContext struct { VendorOrderId string `json:"vendor_order_id"` // 订单id } -func pushMsgByUniApp(storeId int, storeName string, cID []string, msg string, body string, soundsFileName string) { - var errs []error +func pushMsgByUniApp(storeId int, storeName string, cID []string, msg string, body string, soundsFileName string, flag int) { + var ( + errs []error + options = make(map[string]interface{}, 0) + ) + if flag == FlagOrder { + options = map[string]interface{}{ + "XM": map[string]interface{}{ + "/extra.channel_id": "108892", // 订单类填写:108892,消息通知类填写:108898 + }, + "HW": map[string]interface{}{ + "/message/android/category": "WORK", // 订单类填写:WORK,消息通知类填写:IM + }, + "OP": map[string]interface{}{ + "/channel_id": "10110", // 订单类填写:10110,消息通知类填写:10111 + }, + "VV": map[string]interface{}{ + "/category": "ORDER", // 订单类填写:ORDER,消息通知类填写:IM + }, + } + } else if flag == FlagIm { + options = map[string]interface{}{ + "XM": map[string]interface{}{ + "/extra.channel_id": "108898", // 订单类填写:108892,消息通知类填写:108898 + }, + "HW": map[string]interface{}{ + "/message/android/category": "IM", // 订单类填写:WORK,消息通知类填写:IM + }, + "OP": map[string]interface{}{ + "/channel_id": "10111", // 订单类填写:10110,消息通知类填写:10111 + }, + "VV": map[string]interface{}{ + "/category": "IM", // 订单类填写:ORDER,消息通知类填写:IM + }, + } + } for _, v := range cID { param := map[string]interface{}{ "request_id": utils.Int64ToStr(time.Now().Unix()) + "_" + utils.Int2Str(storeId), @@ -192,7 +230,13 @@ func pushMsgByUniApp(storeId int, storeName string, cID []string, msg string, bo "push_channel": map[string]interface{}{ "android": map[string]interface{}{ "ups": map[string]interface{}{ - "transmission": msg, + "notification": map[string]interface{}{ + "title": storeName, + "body": msg, + "click_type": "startapp", + "notify_id": rand.Int(), // 每次通知需要不一样 范围:0-2147483647 + }, + "options": options, }, }, "ios": map[string]interface{}{ diff --git a/business/model/dao/dao_auth2.go b/business/model/dao/dao_auth2.go index 09cf76cd4..72b8cced9 100644 --- a/business/model/dao/dao_auth2.go +++ b/business/model/dao/dao_auth2.go @@ -5,7 +5,6 @@ import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/globals" ) func GetAuthBind(db *DaoDB, bindType int, authType, authID string) (authBind *model.AuthBind, err error) { @@ -62,7 +61,6 @@ func GetUserBindAuthInfo(db *DaoDB, userID string, bindType int, typeList []stri sqlParams = append(sqlParams, typeIDs) } sql += " ORDER BY t1.type" - globals.SugarLogger.Debugf("GetUserBindAuthInfo sql=%s,sqlParams=%s", sql, utils.Format4Output(sqlParams, false)) err = GetRows(db, &authList, sql, sqlParams...) return authList, err } diff --git a/business/partner/purchase/im/im.go b/business/partner/purchase/im/im.go index 10ed3b540..2b81cd64c 100644 --- a/business/partner/purchase/im/im.go +++ b/business/partner/purchase/im/im.go @@ -1,9 +1,11 @@ package im import ( + "encoding/base64" "encoding/json" "errors" "fmt" + "strings" "git.rosy.net.cn/jx-callback/business/model" @@ -110,6 +112,9 @@ func ReadMsgFromVendor(vendorID int, elmAppID string, msg []byte) error { if vendorID == VendorIDMT { var PushContentReq = mtwmapi.PushContentReq{} err = json.Unmarshal(msg, &PushContentReq) + if FilterIm(PushContentReq.AppID, PushContentReq.MsgContent) { //自动回复消息过滤 + return nil + } jxMsg = &JXMsg{ SendType: SendTypeMt, MsgContent: PushContentReq, @@ -343,3 +348,30 @@ func DelRedisByKey(keys []string) { } return } + +var rel = map[int]string{ + 589: "a81eb3df418d83d6a1a4b7c572156d2f", + 5873: "41c479790a76f86326f89e8048964739", + 4123: "df2c88338b85f830cebce2a9eab56628", +} + +// DecryptIm 解密操作 +func DecryptIm(appID int, msg string) (string, error) { + data, _ := base64.StdEncoding.DecodeString(msg) + key := utils.LimitUTF8StringLen2(rel[appID], 16) + res, err := utils.AESCBC16Decrypt(data, []byte(key), []byte(key)) + if len(string(res)) > 0 && err == nil { + return string(res), nil + } + return "", err +} + +// FilterIm 过滤操作 +func FilterIm(appID int, msg string) bool { + var check = "[自动回复]" + data, _ := DecryptIm(appID, msg) + if len(data) > 0 && strings.Contains(data, check) { + return true + } + return false +} diff --git a/controllers/auth2.go b/controllers/auth2.go index d7319af7d..dd385c566 100644 --- a/controllers/auth2.go +++ b/controllers/auth2.go @@ -7,7 +7,6 @@ import ( "strings" "git.rosy.net.cn/jx-callback/business/jxstore/cms" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" @@ -158,9 +157,7 @@ func (c *Auth2Controller) Login() { if dao.IsNoRowsError(err) { err = nil } - globals.SugarLogger.Debugf("SetUserCId err=%v", err) } - globals.SugarLogger.Debugf("Login retVal=%s,err=%v", utils.Format4Output(retVal, false), err) return retVal, "", err }) }