소스 검색

feature(优化):
1、客户联系人列表不分页问题
2、历史公告消息查询
3、用户信息接口返回roleKey

ZZH-wl 2 년 전
부모
커밋
4f96f8c335

+ 14 - 0
opms_admin/app/handler/message.go

@@ -27,6 +27,20 @@ func (h *MessageHandler) GetList(ctx context.Context, req *model.SysMessageSearc
 	return err
 }
 
+// GetUserHistory 获取用户历史公告列表
+func (h *MessageHandler) GetUserHistory(ctx context.Context, req *model.SysMessageSearchReq, rsp *comm_def.CommonMsg) error {
+	msgService, err := service.NewMessageService(ctx)
+	if err != nil {
+		return err
+	}
+	total, list, err := msgService.GetListByUser(req)
+	if err != nil {
+		return err
+	}
+	rsp.Data = g.Map{"list": list, "total": total}
+	return err
+}
+
 // GetEntityById 详情
 func (o *MessageHandler) GetEntityById(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
 	// 参数校验

+ 5 - 0
opms_admin/app/handler/user.go

@@ -94,6 +94,10 @@ func (e *UserHandler) GetUserInfo(ctx context.Context, req *comm_def.IdReq, rsp
 		return err
 	}
 	roleService, _ := service.NewRoleService(ctx)
+	roleKeys, err := roleService.GetRoleKeys(userRoles)
+	if err != nil {
+		return err
+	}
 	permissions, err := roleService.GetRolesMenuPermissions(userRoles)
 	if err != nil {
 		return err
@@ -118,6 +122,7 @@ func (e *UserHandler) GetUserInfo(ctx context.Context, req *comm_def.IdReq, rsp
 	rsp.Data = g.Map{
 		"entity":      data,
 		"permissions": permissions,
+		"roleKeys":    roleKeys,
 		"roleIds":     userRoles,
 		"postIds":     userPosts,
 		"groupIds":    userGroups,

+ 6 - 0
opms_admin/app/model/sys_message.go

@@ -37,3 +37,9 @@ type UpdateSysMessageReq struct {
 	Id int64 `json:"id" v:"required|min:1#主键ID不能为空|主键ID参数错误"`
 	CreateSysMessageReq
 }
+
+type SysMessageUserRes struct {
+	SysMessage
+	IsRead   string      `orm:"is_read"    json:"isRead"`   // 是否已读(10否20是)
+	ReadTime *gtime.Time `orm:"read_time"  json:"readTime"` // 已读时间
+}

+ 21 - 0
opms_admin/app/service/sys_message.go

@@ -47,6 +47,27 @@ func (s *MessageService) GetList(req *model.SysMessageSearchReq) (total int, lis
 	return
 }
 
+func (s *MessageService) GetListByUser(req *model.SysMessageSearchReq) (total int, list []*model.SysMessage, err error) {
+	m := s.Dao.As("msg").LeftJoin(dao.SysMessageLog.Table, "log", "msg.id=log.msg_id").Where("log.user_id", s.GetCxtUserId())
+	if req != nil {
+		if req.MsgTitle != "" {
+			m = m.WhereLike(s.Dao.C.MsgTitle, "%"+req.MsgTitle+"%")
+		}
+		if req.MsgType != "" {
+			m = m.Where(s.Dao.C.MsgType, req.MsgType)
+		}
+	}
+	total, err = m.Count()
+	if err != nil {
+		return
+	}
+	err = m.Page(req.GetPage()).Fields("msg.*,log.is_read,log.read_time").OrderDesc(s.Dao.C.CreatedTime).Scan(&list)
+	if err != nil {
+		return
+	}
+	return
+}
+
 func (s *MessageService) GetEntityById(id int64) (msg *model.SysMessage, err error) {
 	msg, err = s.Dao.WherePri(id).One()
 	if err != nil {

+ 9 - 0
opms_admin/app/service/sys_role.go

@@ -219,3 +219,12 @@ func (s *RoleService) UpdateRoleDataScope(req *model.DataScopeReq) error {
 	})
 	return err
 }
+
+// GetRoleKeys 根据用户id获取角色key
+func (s *RoleService) GetRoleKeys(roleIds []int) ([]string, error) {
+	roles, err := s.Dao.WhereIn(dao.SysRole.C.Id, roleIds).Fields(dao.SysRole.C.RoleKey).Distinct().Array()
+	if err != nil {
+		return nil, err
+	}
+	return gconv.Strings(roles), nil
+}

+ 8 - 20
opms_admin/app/service/sys_user_datascope.go

@@ -39,55 +39,43 @@ func (s *UserService) GetUserPermission(userId int) ([]string, []string, []strin
 // GetUserRoleIds 获取用户角色
 func (s *UserService) GetUserRoleIds(userId int) (roleIds []int, err error) {
 	s.userRoleDao = dao.NewSysUserRoleDao(s.Tenant)
-	list, err := s.userRoleDao.Where(dao.SysUserRole.C.UserId, userId).All()
+	list, err := s.userRoleDao.Where(dao.SysUserRole.C.UserId, userId).Fields(dao.SysUserRole.C.RoleId).Array()
 	if err != nil {
 		g.Log().Error(err)
 		return nil, myerrors.TipsError("获取用户岗位信息失败")
 	}
-	roleIds = make([]int, 0)
-	for _, entity := range list {
-		roleIds = append(roleIds, entity.RoleId)
-	}
-	return
+	return gconv.Ints(list), nil
 }
 
 // GetUserPostIds 获取用户岗位
 func (s *UserService) GetUserPostIds(userId int) (postIds []int, err error) {
 	s.userPostDao = dao.NewSysUserPostDao(s.Tenant)
-	list, err := s.userPostDao.Where(dao.SysUserPost.C.UserId, userId).All()
+	list, err := s.userPostDao.Where(dao.SysUserPost.C.UserId, userId).Fields(dao.SysUserPost.C.PostId).Array()
 	if err != nil {
 		g.Log().Error(err)
 		return nil, myerrors.TipsError("获取用户岗位信息失败")
 	}
-	postIds = make([]int, 0)
-	for _, entity := range list {
-		postIds = append(postIds, entity.PostId)
-	}
-	return
+	return gconv.Ints(list), nil
 }
 
 // GetUserGroupIds 获取用户的用户组
 func (s *UserService) GetUserGroupIds(userId int) (postIds []int, err error) {
 	s.userGroupDao = dao.NewSysUserGroupDao(s.Tenant)
-	list, err := s.userGroupDao.Where(dao.SysUserGroup.C.UserId, userId).All()
+	list, err := s.userGroupDao.Where(dao.SysUserGroup.C.UserId, userId).Fields(dao.SysUserGroup.C.GroupId).Array()
 	if err != nil {
 		g.Log().Error(err)
 		return nil, myerrors.TipsError("获取用户岗位信息失败")
 	}
-	postIds = make([]int, 0)
-	for _, entity := range list {
-		postIds = append(postIds, entity.GroupId)
-	}
-	return
+	return gconv.Ints(list), nil
 }
 
-// GetRolesByUserId 根据用户id获取岗位信息详情
+// GetRolesByUserId 根据用户id获取角色信息详情
 func (s *UserService) GetRolesByUserId(userId int) ([]*model.SysRole, error) {
 	roleIds, err := s.GetUserRoleIds(userId)
 	if err != nil {
 		return nil, err
 	}
-	roles, err := dao.NewSysRoleDao(s.Tenant).Where(dao.SysRole.C.Id+" in (?)", roleIds).All()
+	roles, err := dao.NewSysRoleDao(s.Tenant).WhereIn(dao.SysRole.C.Id, roleIds).All()
 	return roles, err
 }
 

+ 3 - 3
opms_parent/app/service/cust/cust_customer_contact.go

@@ -82,15 +82,15 @@ func (s *CustomercontactService) GetList(req *model.ContactSeq) (total int, list
 	if req.CuctName != "" {
 		contactDao = contactDao.Where("cuct_name "+" like ?", "%"+req.CuctName+"%")
 	}
-	err = contactDao.Order(" id desc ").Scan(&list)
+	total, err = contactDao.Count()
 	if err != nil {
 		g.Log().Error(err)
+		err = myerrors.TipsError("获取总行数失败。")
 		return
 	}
-	total, err = contactDao.Count()
+	err = contactDao.Page(req.GetPage()).Order(" id desc ").Scan(&list)
 	if err != nil {
 		g.Log().Error(err)
-		err = myerrors.TipsError("获取总行数失败。")
 		return
 	}
 	return