package logic import ( "app.yhyue.com/moapp/jybase/encrypt" util "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/entity" . "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/init" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/service" "context" "time" quitl "app.yhyue.com/moapp/jybase/common" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/internal/svc" "bp.jydev.jianyu360.cn/SocialPlatform/messageCenter/rpc/messagecenter/messagecenter" "github.com/zeromicro/go-zero/core/logx" ) type UserListLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUserListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserListLogic { return &UserListLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // UserList 用户列表查询 func (l *UserListLogic) UserList(in *messagecenter.UserReq) (*messagecenter.UserResp, error) { // todo: add your logic here and delete this line m := service.MessaggeService{} nowIndex := 0 queryAgain: data, count, err := m.UserList(in) if err != nil { return nil, err } var result = []*messagecenter.UserEntity{} //聊天内容为空,插入默认客服聊天内容 if (count == 0 || data == nil || len(*data) == 0) && in.UserType == 2 && in.QueryType != 1 && nowIndex < 1 { if insertDefaultChat(in) { nowIndex++ goto queryAgain } } if data != nil && len(*data) > 0 { for _, v := range *data { var tim time.Time if quitl.InterfaceToStr(v["create_time"]) != "" { tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["create_time"]), time.Local) } else { tim, _ = time.ParseInLocation(util.Date_Full_Layout, quitl.InterfaceToStr(v["timestamp"]), time.Local) } groupMember, _ := v["groupMember"].([]string) userResp := messagecenter.UserEntity{ Name: quitl.ObjToString(v["name"]), Title: quitl.ObjToString(v["title"]), Type: quitl.Int64All(v["type"]), Link: quitl.ObjToString(v["link"]), Content: quitl.ObjToString(v["content"]), CreateTime: tim.Unix(), UserType: quitl.Int64All(v["userType"]), Number: quitl.Int64All(v["number"]), UserId: encrypt.SE.Encode2Hex(quitl.InterfaceToStr(v["id"])), Headimg: quitl.ObjToString(v["headimg"]), GroupMember: groupMember, IsTourist: quitl.Int64All(v["is_tourist"]), } result = append(result, &userResp) } } return &messagecenter.UserResp{Data: result, Count: count}, nil } // insertDefaultChat 为防止聊天内容为空,影响工作台展示,插入默认机器人聊天内容 func insertDefaultChat(in *messagecenter.UserReq) bool { m := service.MessaggeService{} //创建会话 if createOk, sessionId := m.CreateChatSession(&messagecenter.ChatSessionReq{ EntId: C.DefaultMsg.SendFromId, //CustomerServiceId: C.DefaultMsg.SendFromId, UserId: in.NewUserId, AppId: "10000", //CustomerserviceName: "xxxxx", }); createOk { //同步数据库 saveMessageOk, _, _, _, _ := m.SaveMessage(&messagecenter.MessageEntity{ OwnType: 2, //Title: req.Title, //SendId: C.DefaultMsg.SendFromId, Content: C.DefaultMsg.MsgContent, Item: 8, //聊天内容 Type: 1, //文本内容 //Link: req.Link, Appid: "10000", ItemType: 4, ReceiveId: in.NewUserId, NewUserId: in.NewUserId, EntUserId: in.EntUserId, SendId: sessionId, }) if saveMessageOk { return true } } return false }