feat: 一些调整

This commit is contained in:
曹鹏飞 2025-02-18 13:24:23 +08:00
parent 97eab2afa0
commit d1244064a6
10 changed files with 83 additions and 52 deletions

View File

@ -484,6 +484,7 @@ public class TicketController extends ControllerBase {
.setSenderName(message.getSenderName())
.setSenderAvatar(message.getSenderAvatar())
.setContent(message.getContent())
.setTicketState(message.getTicketState())
.setCreateTime(formatter.format(message.getCreateTime()))
.setImages(message.getImages())
.setAttachments(message.getAttachments())
@ -493,6 +494,7 @@ public class TicketController extends ControllerBase {
.setSenderId(message.getQuote().getSenderId())
.setSenderName(message.getQuote().getSenderName())
.setSenderAvatar(message.getQuote().getSenderAvatar())
.setTicketState(message.getQuote().getTicketState())
.setContent(message.getQuote().getContent())
.setAttachments(message.getQuote().getAttachments())
.setImages(message.getQuote().getImages())

View File

@ -6,7 +6,8 @@ import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.constant.UserState;
import com.nflg.mobilebroken.common.pojo.ApiResult;
import com.nflg.mobilebroken.common.pojo.vo.AdminLoginVO;
import com.nflg.mobilebroken.common.pojo.vo.PermissionsVO;
import com.nflg.mobilebroken.common.pojo.vo.ButtonVO;
import com.nflg.mobilebroken.common.pojo.vo.MenuVO;
import com.nflg.mobilebroken.common.pojo.vo.RoleVO;
import com.nflg.mobilebroken.common.util.AdminUserUtil;
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@ -80,16 +82,23 @@ public class AdminController extends ControllerBase {
}
/**
* 获取权限列表菜单按钮
* 获取权限菜单
* @return 权限列表
*/
@GetMapping("getPermissions")
public ApiResult<PermissionsVO> getPermissions() {
@GetMapping("getPermissionMenus")
public ApiResult<List<MenuVO>> getPermissionMenus() {
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
List<String> roles = AdminUserUtil.getRoles();
PermissionsVO vo = new PermissionsVO();
vo.setMenus(adminRoleService.getMenusByRoleCodes(roles));
vo.setButtons(adminRoleService.getButtonsByRoleCodes(roles));
return ApiResult.success(vo);
return ApiResult.success(adminRoleService.getMenusByRoleCodes(AdminUserUtil.getUserId()));
}
/**
* 获取权限按钮
* @param menuId 菜单id
* @return 按钮列表
*/
@GetMapping("getPermissionButtons")
public ApiResult<List<ButtonVO>> getPermissionButtons(@Valid @NotNull @RequestParam("menuId") Integer menuId){
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
return ApiResult.success(adminRoleService.getButtonsByMenuId(AdminUserUtil.getUserId(),menuId));
}
}

View File

@ -1,6 +1,7 @@
package com.nflg.mobilebroken.cfs.controller;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -30,6 +31,8 @@ import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@ -307,9 +310,34 @@ public class TiketController extends ControllerBase {
//推送消息
String handle = ticket.getHandle();
if (StrUtil.isNotBlank(handle)) {
String zone = MultilingualUtil.getZone();
ZoneId zoneId = ZoneId.of(zone);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN).withZone(zoneId);
ChatMessageVO messageVO = new ChatMessageVO()
.setId(message.getId())
.setFrom(message.getFrom())
.setSenderId(message.getSenderId())
.setSenderName(message.getSenderName())
.setSenderAvatar(message.getSenderAvatar())
.setContent(message.getContent())
.setTicketState(message.getTicketState())
.setCreateTime(formatter.format(message.getCreateTime()))
.setImages(message.getImages())
.setAttachments(message.getAttachments())
.setQuote(Objects.isNull(message.getQuote()) ? null : new ChatMessageVO()
.setId(message.getQuote().getId())
.setFrom(message.getQuote().getFrom())
.setSenderId(message.getQuote().getSenderId())
.setSenderName(message.getQuote().getSenderName())
.setSenderAvatar(message.getQuote().getSenderAvatar())
.setTicketState(message.getQuote().getTicketState())
.setContent(message.getQuote().getContent())
.setAttachments(message.getQuote().getAttachments())
.setImages(message.getQuote().getImages())
.setCreateTime(formatter.format(message.getQuote().getCreateTime())));
SSEMessageDTO messageDTO = new SSEMessageDTO()
.setType(1)
.setData(message);
.setData(messageVO);
StrUtil.split(handle, ",").forEach(userId -> {
try {
sseManagerService.send(Integer.valueOf(userId), messageDTO);

View File

@ -11,6 +11,8 @@ public class AuthorizeMenuVO {
private Integer id;
private String key;
//名称
private String name;

View File

@ -23,9 +23,9 @@ public interface AdminRoleMapper extends BaseMapper<AdminRole> {
List<String> getUrlsByRoleCodes(List<String> roleCodes);
List<MenuVO> getMenusByRoleCodes(List<String> roleCodes);
List<ButtonVO> getButtonsByRoleCodes(List<String> roleCodes);
List<MenuVO> getMenusByRoleCodes(Integer userId);
IPage<RoleVO> search(RoleSearchRequest request, Page<?> page);
List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId);
}

View File

@ -31,9 +31,9 @@ public interface IAdminRoleService extends IService<AdminRole> {
List<String> getUrlsByRoleCodes(List<String> roleCodes);
List<MenuVO> getMenusByRoleCodes(List<String> roles);
List<ButtonVO> getButtonsByRoleCodes(List<String> roles);
List<MenuVO> getMenusByRoleCodes(Integer userId);
IPage<RoleVO> search(RoleSearchRequest request);
List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId);
}

View File

@ -111,7 +111,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
.eq(AdminMenu::getEnable, true)
.list();
List<AuthorizeMenuVO> vos = datas.stream()
.map(d -> new AuthorizeMenuVO().setType(1).setId(d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId())))
.map(d -> new AuthorizeMenuVO().setType(1).setId(d.getId()).setKey("menu-"+d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId())))
.collect(Collectors.toList());
vos.forEach(v -> bindMenuChildren(roleId, v));
return vos;
@ -239,7 +239,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
private void bindMenuChildren(Integer roleId, AuthorizeMenuVO menu) {
List<AdminMenu> datas = lambdaQuery().eq(AdminMenu::getParentId, menu.getId()).eq(AdminMenu::getEnable, true).list();
if (CollectionUtil.isNotEmpty(datas)) {
List<AuthorizeMenuVO> vos = datas.stream().map(d -> new AuthorizeMenuVO().setType(1).setId(d.getId()).setName(d.getName())).collect(Collectors.toList());
List<AuthorizeMenuVO> vos = datas.stream().map(d -> new AuthorizeMenuVO().setType(1).setId(d.getId()).setKey("menu-"+d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId()))).collect(Collectors.toList());
menu.setChildren(vos);
vos.forEach(v -> bindMenuChildren(roleId, v));
} else {
@ -248,7 +248,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
.eq(AdminMenuButton::getEnable, true)
.list();
menu.setChildren(vos.stream()
.map(d -> new AuthorizeMenuVO().setType(2).setId(d.getId()).setName(d.getName()).setSelected(buttonIsSelected(roleId, d.getId())))
.map(d -> new AuthorizeMenuVO().setType(2).setId(d.getId()).setKey("button-"+d.getId()).setName(d.getName()).setSelected(buttonIsSelected(roleId, d.getId())))
.collect(Collectors.toList()));
}
}

View File

@ -1,6 +1,5 @@
package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -21,7 +20,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
@ -78,11 +76,8 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
}
@Override
public List<MenuVO> getMenusByRoleCodes(List<String> roleCodes) {
if (CollectionUtil.isEmpty(roleCodes)){
return Collections.emptyList();
}
List<MenuVO> menus=baseMapper.getMenusByRoleCodes(roleCodes);
public List<MenuVO> getMenusByRoleCodes(Integer userId) {
List<MenuVO> menus=baseMapper.getMenusByRoleCodes(userId);
for (int i = 0; i < menus.size(); i++) {
MenuVO menu = menus.get(i);
bindParent(menu, menus);
@ -100,16 +95,13 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
}
}
@Override
public List<ButtonVO> getButtonsByRoleCodes(List<String> roleCodes) {
if (CollectionUtil.isEmpty(roleCodes)){
return Collections.emptyList();
}
return baseMapper.getButtonsByRoleCodes(roleCodes);
}
@Override
public IPage<RoleVO> search(RoleSearchRequest request) {
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
}
@Override
public List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId) {
return baseMapper.getButtonsByMenuId(userId,menuId);
}
}

View File

@ -1,7 +1,6 @@
package com.nflg.mobilebroken.repository.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.mobilebroken.common.pojo.PageData;
@ -36,10 +35,13 @@ public class FileUploadRecordServiceImpl extends ServiceImpl<FileUploadRecordMap
Page<FileUploadRecord> datas = lambdaQuery()
.eq(Objects.nonNull(request.getSource()), FileUploadRecord::getSource, request.getSource())
.eq(Objects.nonNull(request.getFileType()), FileUploadRecord::getFileType, request.getFileType())
.like(StrUtil.isNotBlank(request.getKey()), FileUploadRecord::getFileName, request.getKey())
.like(StrUtil.isNotBlank(request.getKey()), FileUploadRecord::getSourceId, request.getKey())
.and(Objects.nonNull(request.getKey()), (wq) -> wq
.like(FileUploadRecord::getFileName, request.getKey())
.or()
.like(FileUploadRecord::getSourceId, request.getKey()))
.ge(Objects.nonNull(request.getStartTime()), FileUploadRecord::getCreateTime, request.getStartTime())
.lt(Objects.nonNull(endTime), FileUploadRecord::getCreateTime, endTime)
.orderByDesc(FileUploadRecord::getId)
.page(new Page<>(request.getPage(), request.getPageSize()));
return PageUtil.convert(datas, d -> Convert.convert(FileVO.class, d));
}

View File

@ -29,21 +29,8 @@
FROM admin_role r
INNER JOIN admin_role_menu_map rmm ON r.id=rmm.role_id
INNER JOIN admin_menu m ON rmm.menu_id=m.id
WHERE m.`enable`=1 AND r.`enable`=1 AND r.`code` IN
<foreach collection="roleCodes" item="code" open="(" close=")" separator=",">
#{code}
</foreach>
</select>
<select id="getButtonsByRoleCodes" resultType="com.nflg.mobilebroken.common.pojo.vo.ButtonVO">
SELECT DISTINCT mb.`name`,mb.`code`
FROM admin_role r
INNER JOIN admin_role_button_map rbm ON r.id=rbm.role_id
INNER JOIN admin_menu_button mb ON rbm.button_id=mb.id
WHERE rbm.role_id=1 AND r.`enable`=1 AND r.`code` IN
<foreach collection="roleCodes" item="code" open="(" close=")" separator=",">
#{code}
</foreach>
INNER JOIN admin_user_role_map urm ON urm.role_id=r.id
WHERE m.`enable`=1 AND r.`enable`=1 AND urm.user_id=#{userId}
</select>
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.RoleVO">
@ -56,4 +43,13 @@
</if>
</where>
</select>
<select id="getButtonsByMenuId" resultType="com.nflg.mobilebroken.common.pojo.vo.ButtonVO">
SELECT DISTINCT mb.`name`,mb.`code`
FROM admin_role r
INNER JOIN admin_role_button_map rbm ON r.id=rbm.role_id
INNER JOIN admin_menu_button mb ON rbm.button_id=mb.id
INNER JOIN admin_user_role_map urm ON urm.role_id=r.id
WHERE mb.`enable`=1 AND mb.menu_id=#{menuId} AND urm.user_id=#{userId}
</select>
</mapper>