创建聊天组

This commit is contained in:
苏尹岚
2020-10-21 11:02:31 +08:00
parent 9c3be6bcc7
commit fe53668185
5 changed files with 81 additions and 65 deletions

View File

@@ -11,8 +11,6 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api"
)
var (
@@ -23,12 +21,6 @@ var (
regexpToken = regexp.MustCompile(`,"token":".*"`)
)
type CheckCookie struct {
VendorID int `json:"vendorID"`
VendorOrgCode string `json:"vendorOrgCode"`
Status string `json:"status"`
}
func AddOperateEvent(ctx *jxcontext.Context, accessUUID, jsonData string, errCode, errMsg string, useTime int, apiFunctionSpec string) (err error) {
var (
apiFunction string
@@ -134,68 +126,45 @@ func GetOperateEvents(ctx *jxcontext.Context, name string, apiFunctions []string
return pageInfo, err
}
func GetCheckVendorCookie(ctx *jxcontext.Context, vendorIDs []int, isAuto bool) (ccList []*CheckCookie, err error) {
func CreateMessageGroup(ctx *jxcontext.Context, userID, userID2 string) (err error) {
var (
ebaiOrderID = "1577329467196263592"
ebaiErr = "return not json"
ebaiErr2 = "系统错误"
mtStoreID = "7388603"
mtErr = "返回结果格式不正常"
jdUpcCode = "6952395700895"
jdErr = "请输入用户名"
// mtpsErr = "用户未登录"
errMsg = ""
db = dao.GetDB()
groupID int
)
for _, v := range vendorIDs {
cc := &CheckCookie{}
var flag = false
switch v {
case model.VendorIDEBAI:
resultMap, err := api.EbaiAPI.GetStoreOrderInfo(ebaiOrderID)
if len(resultMap) < 1 && err != nil {
if strings.Contains(err.Error(), ebaiErr) || strings.Contains(err.Error(), ebaiErr2) {
errMsg += fmt.Sprintf(" 饿百账号:[%v]的Cookie无效了")
flag = true
}
if userID2 != "" {
user, err := dao.GetUserByID(db, "user_id", userID2)
if err != nil {
return err
}
if user == nil {
return fmt.Errorf("无法找到要联系的用户!")
}
for {
groupID = jxutils.GenRand6()
temp := &model.MessageGroup{
GroupID: groupID,
}
case model.VendorIDMTWM:
_, err := api.MtwmAPI.PackagePriceGet(mtStoreID)
if err != nil {
if strings.Contains(err.Error(), mtErr) {
errMsg += fmt.Sprintf(" 美团账号:[%v]的Cookie无效了")
flag = true
}
globals.SugarLogger.Debugf("cookieCheck", err)
}
case model.VendorIDJD:
result, err := api.JdAPI.GetJdUpcCodeByName("", jdUpcCode, 1, 5)
if len(result) < 1 && err != nil {
if strings.Contains(err.Error(), jdErr) {
errMsg += fmt.Sprintf(" 京东账号:[%v]的Cookie无效了")
flag = true
}
}
case model.VendorIDJDShop:
_, err := api.JdShopAPI.OrderDetail("124350112427")
if err != nil {
if strings.Contains(err.Error(), "登录") {
errMsg += fmt.Sprintf("京东商城:[%v]的Cookie无效了")
flag = true
}
globals.SugarLogger.Debugf("cookieCheck", err)
dao.GetEntity(db, temp, "GroupID")
if temp == nil {
break
}
}
cc.VendorID = v
cc.VendorOrgCode = ""
if flag {
cc.Status = "无效"
} else {
cc.Status = "有效"
messageGroup := &model.MessageGroup{
GroupID: groupID,
UserID: userID,
Name: user.Name,
Type: model.GroupTypeSingle,
MaxCount: 2,
}
ccList = append(ccList, cc)
messageGroupMember := &model.MessageGroupMember{
GroupID: groupID,
MemberUserID: userID2,
Type: model.GroupMemberTypeNormal,
}
dao.WrapAddIDCULDEntity(messageGroup, ctx.GetUserName())
dao.WrapAddIDCULDEntity(messageGroupMember, ctx.GetUserName())
dao.CreateEntity(db, messageGroup)
dao.CreateEntity(db, messageGroupMember)
}
if isAuto && errMsg != "" {
globals.SugarLogger.Warnf("GetCheckVendorCookie[%v]", errMsg)
}
return ccList, err
return err
}

View File

@@ -171,6 +171,10 @@ func GetPossibleVendorIDFromVendorOrderID(vendorOrderID string) (vendorID int) {
return vendorID
}
func GenRand6() (num int) {
return utils.Str2Int(fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000)))
}
func GenOrderNo() (orderNo int64) {
var prefix = utils.Str2Int64(time.Now().Format("20060102"))
const randPartNum = 1000
@@ -216,6 +220,20 @@ func GenBillID() (billID int64) {
return billID
}
func GenGroupID() (groupID int64) {
const randPartNum = 100
groupID = time.Now().Unix() - orderNoBeginTimestamp
groupID = groupID * randPartNum
md5Bytes := md5.Sum([]byte(utils.GetUUID()))
randPart := 0
for k, v := range md5Bytes {
randPart += int(v) << ((k % 3) * 8)
}
groupID += int64(randPart % randPartNum)
groupID += int64(math.Pow10(int(math.Log10(float64(groupID))) + 1))
return groupID
}
func GenAfsOrderNo() (orderNo int64) {
const prefix = 80
const randPartNum = 100

View File

@@ -10,6 +10,11 @@ const (
MessageStatusSendAllSuccess = 1
MessageStatusSendSuccess = 2
MessageStatusSendAllFailed = 3
GroupTypeSingle = 1 //单聊
GroupTypeMulit = 2 //群聊
GroupMemberTypeNormal = 1 //普通群员
)
var (
@@ -69,6 +74,7 @@ func (*ImMessageRecord) TableIndex() [][]string {
type MessageGroup struct {
ModelIDCULD
GroupID int `orm:"column(group_id)" json:"groupID"` //组ID
UserID string `orm:"size(48);column(user_id)" json:"userID"` //创建组的userID
Name string `json:"name"` //组名
Type int `json:"type"` //组类型1为单聊2为群聊

View File

@@ -185,6 +185,20 @@ func (c *EventController) GetImMessageRecord() {
})
}
// @Title 创建聊天组
// @Description 创建聊天组
// @Param token header string true "认证token"
// @Param userID formData string true "创建者id"
// @Param userID2 formData string false "被拉的id 如果userID2为空就默认为是创建的群聊"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CreateMessageGroup [post]
func (c *EventController) CreateMessageGroup() {
c.callCreateMessageGroup(func(params *tEventCreateMessageGroupParams) (retVal interface{}, errCode string, err error) {
return retVal, "", err
})
}
// @Title 加入用户组
// @Description 加入用户组
// @Param token header string true "认证token"

View File

@@ -133,6 +133,15 @@ func init() {
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"],
beego.ControllerComments{
Method: "CreateMessageGroup",
Router: `/CreateMessageGroup`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: nil,
Params: nil})
beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:EventController"],
beego.ControllerComments{
Method: "GetImMessageRecord",