86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
package daichongser
|
|
|
|
import (
|
|
"context"
|
|
"math/rand"
|
|
"strconv"
|
|
|
|
"91jd-server/app/appg"
|
|
"91jd-server/common/constant/redisconst"
|
|
"91jd-server/common/crypt"
|
|
"91jd-server/common/daichong"
|
|
"91jd-server/common/log"
|
|
"91jd-server/common/stderr"
|
|
"91jd-server/models/e/daichongmod"
|
|
"91jd-server/models/v/usermod"
|
|
)
|
|
|
|
// TakeChat 发起聊天
|
|
func NewTakeChat(ctx context.Context, uid uint64, proT int) (daichong.ChatResp, stderr.Code) {
|
|
u, err := usermod.FindUserByUID(uid)
|
|
if err != nil || u == nil {
|
|
return daichong.ChatResp{}, stderr.AuthIsNotExist
|
|
}
|
|
data := daichong.ChatResp{}
|
|
str, err := appg.Redis.Get(redisconst.TraderChatCacheKey(uid, proT))
|
|
if str != nil && err == nil {
|
|
_ = crypt.JSON2Struct(*str, &data)
|
|
return data, stderr.Success
|
|
}
|
|
chatReq := daichong.NewChatReq{
|
|
UID: strconv.Itoa(int(uid)) + "-" + appg.Conf.DaiChong.PlatName,
|
|
Name: u.Name,
|
|
Portrait: u.Portrait,
|
|
ProductType: proT,
|
|
}
|
|
chatResp, err := daichong.NewTakeChat(ctx, chatReq, appg.Conf.DaiChong.Domain)
|
|
if err != nil {
|
|
log.ErrorX(ctx, "TakeChat send http wrong", log.Any("req", chatReq), log.Any("domain", appg.Conf.DaiChong.Domain),
|
|
log.E(err))
|
|
return chatResp, stderr.ErrTakeChatCode
|
|
}
|
|
//随机拼接ordUrl接口的api域名
|
|
apiUrls := appg.Conf.URL.ApiUrls
|
|
if len(apiUrls) > 0 {
|
|
chatResp.Data.OrdUrl = apiUrls[rand.Intn(len(apiUrls))] + "/api/app/daichong/orderInfo"
|
|
}
|
|
if chatResp.Code == stderr.Success {
|
|
normalstr, err := crypt.StructToStrNormal(chatResp)
|
|
if normalstr != "" && err == nil && len(chatResp.Data.Traders) > 0 {
|
|
_ = appg.Redis.Set(redisconst.TraderChatCacheKey(uid, proT), normalstr, redisconst.TraderChatCacheExpire)
|
|
}
|
|
}
|
|
if len(chatResp.Data.Traders) > 0 {
|
|
random(&(chatResp.Data.Traders))
|
|
}
|
|
return chatResp, chatResp.Code
|
|
}
|
|
|
|
// 获取订单信息
|
|
func NewGetOrderInfo(req daichong.OrderSign) (daichong.OrderResp, stderr.Code) {
|
|
orderResp, err := daichong.NewGetOrder(req, appg.Conf.DaiChong.Domain)
|
|
if err != nil {
|
|
log.Warn("GetOrderInfo send http wrong", log.Any("warn", err))
|
|
return orderResp, stderr.ErrGetOrderInfoCode
|
|
}
|
|
return orderResp, orderResp.Code
|
|
}
|
|
|
|
// 获取商人支付信息
|
|
func NewGetTraderPayInfo(req daichongmod.PayInfoReq) (daichong.PayInfoResp, stderr.Code) {
|
|
payInfoResp, err := daichong.NewGetTraderPayInfo(req, appg.Conf.DaiChong.Domain)
|
|
if err != nil {
|
|
log.Warn("GetTraderPayInfo send http wrong", log.Any("warn", err))
|
|
return payInfoResp, stderr.Failure
|
|
}
|
|
return payInfoResp, payInfoResp.Code
|
|
}
|
|
func random(data *[]daichong.Trader) {
|
|
strings := *data
|
|
for i := len(strings) - 1; i > 0; i-- {
|
|
num := rand.Intn(i + 1)
|
|
strings[i], strings[num] = strings[num], strings[i]
|
|
}
|
|
*data = strings
|
|
}
|