From fe53668185c61ac7847050d7d1a03e258d5d343c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 21 Oct 2020 11:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E8=81=8A=E5=A4=A9=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/event/event.go | 99 +++++++++------------------ business/jxutils/jxutils.go | 18 +++++ business/model/message.go | 6 ++ controllers/event.go | 14 ++++ routers/commentsRouter_controllers.go | 9 +++ 5 files changed, 81 insertions(+), 65 deletions(-) diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index fa2557df5..f4721a384 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -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 } diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 7e8fbc3e0..f0dfec9fa 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -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 diff --git a/business/model/message.go b/business/model/message.go index 9dd5bdc6f..ee9a49be7 100644 --- a/business/model/message.go +++ b/business/model/message.go @@ -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为群聊 diff --git a/controllers/event.go b/controllers/event.go index a67d618bd..60d255dd2 100644 --- a/controllers/event.go +++ b/controllers/event.go @@ -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" diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4faa38ae9..d99ee519b 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -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",