Initial commit

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 13:57:10 +08:00
co-authored by Claude Opus 5
commit 8679200f41
1897 changed files with 257900 additions and 0 deletions
+89
View File
@@ -0,0 +1,89 @@
package imser
import (
"encoding/hex"
"net/url"
"strconv"
"91porn-server/app/appg"
"91porn-server/common"
"91porn-server/common/constant"
"91porn-server/common/crypt"
"91porn-server/common/log"
"91porn-server/middleware/ua"
"91porn-server/models/v/usermod"
)
// GetSign 获取IM sign
func GetSign(uid uint64, ua ua.UA) string {
u, err := usermod.FindUserByUID(uid)
if err != nil || u == nil {
return ""
}
// IsVip := false
// if userModel.VipExpireDate.After(time.Now()) {
// IsVip = true
// }
var voiceChatNotify string
if common.IsSpecifyVerBaseOnUa(ua, constant.Ver3_1_0) {
voiceChatNotify = "支持语音聊天"
} else {
voiceChatNotify = "不支持语音聊天"
}
ul := url.Values{}
ul.Add("id", strconv.FormatUint(uid, 10))
ul.Add("appId", appg.Conf.Kefu.AppID)
ul.Add("platName", appg.Conf.Kefu.PlatName)
ul.Add("userName", u.Name+"**"+ua.SysType+"**"+ua.DevType+"**"+ua.Ver+"**"+voiceChatNotify)
ul.Add("isVip", "false")
ul.Add("avatar", common.BindUrl(appg.Conf.URL.OriginUrl, u.Portrait))
dcodeurl, _ := url.QueryUnescape(ul.Encode())
sign, err := crypt.AesEncrypt(dcodeurl, appg.Conf.Kefu.AppSecret)
if err != nil {
log.Warn("create im sign wrong", log.Any("warn", err))
return ""
}
return "/kefu/?sign=" + hex.EncodeToString(sign) + "&appId=" + appg.Conf.Kefu.AppID + "&theme=" + appg.Conf.Kefu.Theme
}
// GetWhiteSign 获取White IM sign
func GetWhiteSign() string {
return "/kefu/?" + "appId=" + appg.Conf.Kefu.AppID + "&anonymous=true"
}
// GetSignNew 新获取IM sign
func GetSignNew(uid uint64, ua ua.UA) string {
u, err := usermod.FindUserByUID(uid)
if err != nil || u == nil {
return ""
}
// IsVip := false
// if userModel.VipExpireDate.After(time.Now()) {
// IsVip = true
// }
var voiceChatNotify string
if common.IsSpecifyVerBaseOnUa(ua, constant.Ver3_1_0) {
voiceChatNotify = "支持语音聊天"
} else {
voiceChatNotify = "不支持语音聊天"
}
ul := url.Values{}
ul.Add("id", strconv.FormatUint(uid, 10))
ul.Add("appId", appg.Conf.Kefu.AppID)
ul.Add("platName", appg.Conf.Kefu.PlatName)
ul.Add("userName", u.Name+"**"+ua.SysType+"**"+ua.DevType+"**"+ua.Ver+"**"+voiceChatNotify)
ul.Add("isVip", "false")
ul.Add("avatar", common.BindUrl(appg.Conf.URL.OriginUrl, u.Portrait))
dcodeurl, _ := url.QueryUnescape(ul.Encode())
sign, err := crypt.AesEncrypt(dcodeurl, appg.Conf.Kefu.AppSecret)
if err != nil {
log.Warn("create im sign wrong", log.Any("warn", err))
return ""
}
return "/kefu/customer/im?sign=" + hex.EncodeToString(sign) + "&appId=" + appg.Conf.Kefu.AppID + "&theme=" + appg.Conf.Kefu.Theme
}
// GetWhiteSignNew 新获取White IM sign
func GetWhiteSignNew() string {
return "/kefu/customer/im?appId=" + appg.Conf.Kefu.AppID + "&anonymous=true"
}