feat: 一些调整
This commit is contained in:
parent
97eab2afa0
commit
d1244064a6
|
|
@ -484,6 +484,7 @@ public class TicketController extends ControllerBase {
|
||||||
.setSenderName(message.getSenderName())
|
.setSenderName(message.getSenderName())
|
||||||
.setSenderAvatar(message.getSenderAvatar())
|
.setSenderAvatar(message.getSenderAvatar())
|
||||||
.setContent(message.getContent())
|
.setContent(message.getContent())
|
||||||
|
.setTicketState(message.getTicketState())
|
||||||
.setCreateTime(formatter.format(message.getCreateTime()))
|
.setCreateTime(formatter.format(message.getCreateTime()))
|
||||||
.setImages(message.getImages())
|
.setImages(message.getImages())
|
||||||
.setAttachments(message.getAttachments())
|
.setAttachments(message.getAttachments())
|
||||||
|
|
@ -493,6 +494,7 @@ public class TicketController extends ControllerBase {
|
||||||
.setSenderId(message.getQuote().getSenderId())
|
.setSenderId(message.getQuote().getSenderId())
|
||||||
.setSenderName(message.getQuote().getSenderName())
|
.setSenderName(message.getQuote().getSenderName())
|
||||||
.setSenderAvatar(message.getQuote().getSenderAvatar())
|
.setSenderAvatar(message.getQuote().getSenderAvatar())
|
||||||
|
.setTicketState(message.getQuote().getTicketState())
|
||||||
.setContent(message.getQuote().getContent())
|
.setContent(message.getQuote().getContent())
|
||||||
.setAttachments(message.getQuote().getAttachments())
|
.setAttachments(message.getQuote().getAttachments())
|
||||||
.setImages(message.getQuote().getImages())
|
.setImages(message.getQuote().getImages())
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@ import com.nflg.mobilebroken.common.constant.STATE;
|
||||||
import com.nflg.mobilebroken.common.constant.UserState;
|
import com.nflg.mobilebroken.common.constant.UserState;
|
||||||
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
import com.nflg.mobilebroken.common.pojo.ApiResult;
|
||||||
import com.nflg.mobilebroken.common.pojo.vo.AdminLoginVO;
|
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.pojo.vo.RoleVO;
|
||||||
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
import com.nflg.mobilebroken.common.util.AdminUserUtil;
|
||||||
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
|
import com.nflg.mobilebroken.common.util.SaTokenAdminUtil;
|
||||||
|
|
@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -80,16 +82,23 @@ public class AdminController extends ControllerBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取权限列表(菜单、按钮)
|
* 获取权限菜单
|
||||||
* @return 权限列表
|
* @return 权限列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("getPermissions")
|
@GetMapping("getPermissionMenus")
|
||||||
public ApiResult<PermissionsVO> getPermissions() {
|
public ApiResult<List<MenuVO>> getPermissionMenus() {
|
||||||
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
|
VUtils.trueThrow(!SaTokenAdminUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
|
||||||
List<String> roles = AdminUserUtil.getRoles();
|
return ApiResult.success(adminRoleService.getMenusByRoleCodes(AdminUserUtil.getUserId()));
|
||||||
PermissionsVO vo = new PermissionsVO();
|
}
|
||||||
vo.setMenus(adminRoleService.getMenusByRoleCodes(roles));
|
|
||||||
vo.setButtons(adminRoleService.getButtonsByRoleCodes(roles));
|
/**
|
||||||
return ApiResult.success(vo);
|
* 获取权限按钮
|
||||||
|
* @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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.nflg.mobilebroken.cfs.controller;
|
package com.nflg.mobilebroken.cfs.controller;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.hutool.core.date.DatePattern;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
|
@ -30,6 +31,8 @@ import javax.validation.constraints.NotBlank;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
@ -307,9 +310,34 @@ public class TiketController extends ControllerBase {
|
||||||
//推送消息
|
//推送消息
|
||||||
String handle = ticket.getHandle();
|
String handle = ticket.getHandle();
|
||||||
if (StrUtil.isNotBlank(handle)) {
|
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()
|
SSEMessageDTO messageDTO = new SSEMessageDTO()
|
||||||
.setType(1)
|
.setType(1)
|
||||||
.setData(message);
|
.setData(messageVO);
|
||||||
StrUtil.split(handle, ",").forEach(userId -> {
|
StrUtil.split(handle, ",").forEach(userId -> {
|
||||||
try {
|
try {
|
||||||
sseManagerService.send(Integer.valueOf(userId), messageDTO);
|
sseManagerService.send(Integer.valueOf(userId), messageDTO);
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ public class AuthorizeMenuVO {
|
||||||
|
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
|
||||||
|
private String key;
|
||||||
|
|
||||||
//名称
|
//名称
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@ public interface AdminRoleMapper extends BaseMapper<AdminRole> {
|
||||||
|
|
||||||
List<String> getUrlsByRoleCodes(List<String> roleCodes);
|
List<String> getUrlsByRoleCodes(List<String> roleCodes);
|
||||||
|
|
||||||
List<MenuVO> getMenusByRoleCodes(List<String> roleCodes);
|
List<MenuVO> getMenusByRoleCodes(Integer userId);
|
||||||
|
|
||||||
List<ButtonVO> getButtonsByRoleCodes(List<String> roleCodes);
|
|
||||||
|
|
||||||
IPage<RoleVO> search(RoleSearchRequest request, Page<?> page);
|
IPage<RoleVO> search(RoleSearchRequest request, Page<?> page);
|
||||||
|
|
||||||
|
List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,9 +31,9 @@ public interface IAdminRoleService extends IService<AdminRole> {
|
||||||
|
|
||||||
List<String> getUrlsByRoleCodes(List<String> roleCodes);
|
List<String> getUrlsByRoleCodes(List<String> roleCodes);
|
||||||
|
|
||||||
List<MenuVO> getMenusByRoleCodes(List<String> roles);
|
List<MenuVO> getMenusByRoleCodes(Integer userId);
|
||||||
|
|
||||||
List<ButtonVO> getButtonsByRoleCodes(List<String> roles);
|
|
||||||
|
|
||||||
IPage<RoleVO> search(RoleSearchRequest request);
|
IPage<RoleVO> search(RoleSearchRequest request);
|
||||||
|
|
||||||
|
List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
|
||||||
.eq(AdminMenu::getEnable, true)
|
.eq(AdminMenu::getEnable, true)
|
||||||
.list();
|
.list();
|
||||||
List<AuthorizeMenuVO> vos = datas.stream()
|
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());
|
.collect(Collectors.toList());
|
||||||
vos.forEach(v -> bindMenuChildren(roleId, v));
|
vos.forEach(v -> bindMenuChildren(roleId, v));
|
||||||
return vos;
|
return vos;
|
||||||
|
|
@ -239,7 +239,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
|
||||||
private void bindMenuChildren(Integer roleId, AuthorizeMenuVO menu) {
|
private void bindMenuChildren(Integer roleId, AuthorizeMenuVO menu) {
|
||||||
List<AdminMenu> datas = lambdaQuery().eq(AdminMenu::getParentId, menu.getId()).eq(AdminMenu::getEnable, true).list();
|
List<AdminMenu> datas = lambdaQuery().eq(AdminMenu::getParentId, menu.getId()).eq(AdminMenu::getEnable, true).list();
|
||||||
if (CollectionUtil.isNotEmpty(datas)) {
|
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);
|
menu.setChildren(vos);
|
||||||
vos.forEach(v -> bindMenuChildren(roleId, v));
|
vos.forEach(v -> bindMenuChildren(roleId, v));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -248,7 +248,7 @@ public class AdminMenuServiceImpl extends ServiceImpl<AdminMenuMapper, AdminMenu
|
||||||
.eq(AdminMenuButton::getEnable, true)
|
.eq(AdminMenuButton::getEnable, true)
|
||||||
.list();
|
.list();
|
||||||
menu.setChildren(vos.stream()
|
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()));
|
.collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package com.nflg.mobilebroken.repository.service.impl;
|
package com.nflg.mobilebroken.repository.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
|
@ -21,7 +20,6 @@ import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
@ -78,11 +76,8 @@ public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MenuVO> getMenusByRoleCodes(List<String> roleCodes) {
|
public List<MenuVO> getMenusByRoleCodes(Integer userId) {
|
||||||
if (CollectionUtil.isEmpty(roleCodes)){
|
List<MenuVO> menus=baseMapper.getMenusByRoleCodes(userId);
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
List<MenuVO> menus=baseMapper.getMenusByRoleCodes(roleCodes);
|
|
||||||
for (int i = 0; i < menus.size(); i++) {
|
for (int i = 0; i < menus.size(); i++) {
|
||||||
MenuVO menu = menus.get(i);
|
MenuVO menu = menus.get(i);
|
||||||
bindParent(menu, menus);
|
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
|
@Override
|
||||||
public IPage<RoleVO> search(RoleSearchRequest request) {
|
public IPage<RoleVO> search(RoleSearchRequest request) {
|
||||||
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
return baseMapper.search(request, new Page<>(request.getPage(), request.getPageSize()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ButtonVO> getButtonsByMenuId(Integer userId,Integer menuId) {
|
||||||
|
return baseMapper.getButtonsByMenuId(userId,menuId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package com.nflg.mobilebroken.repository.service.impl;
|
package com.nflg.mobilebroken.repository.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.convert.Convert;
|
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.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.nflg.mobilebroken.common.pojo.PageData;
|
import com.nflg.mobilebroken.common.pojo.PageData;
|
||||||
|
|
@ -36,10 +35,13 @@ public class FileUploadRecordServiceImpl extends ServiceImpl<FileUploadRecordMap
|
||||||
Page<FileUploadRecord> datas = lambdaQuery()
|
Page<FileUploadRecord> datas = lambdaQuery()
|
||||||
.eq(Objects.nonNull(request.getSource()), FileUploadRecord::getSource, request.getSource())
|
.eq(Objects.nonNull(request.getSource()), FileUploadRecord::getSource, request.getSource())
|
||||||
.eq(Objects.nonNull(request.getFileType()), FileUploadRecord::getFileType, request.getFileType())
|
.eq(Objects.nonNull(request.getFileType()), FileUploadRecord::getFileType, request.getFileType())
|
||||||
.like(StrUtil.isNotBlank(request.getKey()), FileUploadRecord::getFileName, request.getKey())
|
.and(Objects.nonNull(request.getKey()), (wq) -> wq
|
||||||
.like(StrUtil.isNotBlank(request.getKey()), FileUploadRecord::getSourceId, request.getKey())
|
.like(FileUploadRecord::getFileName, request.getKey())
|
||||||
|
.or()
|
||||||
|
.like(FileUploadRecord::getSourceId, request.getKey()))
|
||||||
.ge(Objects.nonNull(request.getStartTime()), FileUploadRecord::getCreateTime, request.getStartTime())
|
.ge(Objects.nonNull(request.getStartTime()), FileUploadRecord::getCreateTime, request.getStartTime())
|
||||||
.lt(Objects.nonNull(endTime), FileUploadRecord::getCreateTime, endTime)
|
.lt(Objects.nonNull(endTime), FileUploadRecord::getCreateTime, endTime)
|
||||||
|
.orderByDesc(FileUploadRecord::getId)
|
||||||
.page(new Page<>(request.getPage(), request.getPageSize()));
|
.page(new Page<>(request.getPage(), request.getPageSize()));
|
||||||
return PageUtil.convert(datas, d -> Convert.convert(FileVO.class, d));
|
return PageUtil.convert(datas, d -> Convert.convert(FileVO.class, d));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,21 +29,8 @@
|
||||||
FROM admin_role r
|
FROM admin_role r
|
||||||
INNER JOIN admin_role_menu_map rmm ON r.id=rmm.role_id
|
INNER JOIN admin_role_menu_map rmm ON r.id=rmm.role_id
|
||||||
INNER JOIN admin_menu m ON rmm.menu_id=m.id
|
INNER JOIN admin_menu m ON rmm.menu_id=m.id
|
||||||
WHERE m.`enable`=1 AND r.`enable`=1 AND r.`code` IN
|
INNER JOIN admin_user_role_map urm ON urm.role_id=r.id
|
||||||
<foreach collection="roleCodes" item="code" open="(" close=")" separator=",">
|
WHERE m.`enable`=1 AND r.`enable`=1 AND urm.user_id=#{userId}
|
||||||
#{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>
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.RoleVO">
|
<select id="search" resultType="com.nflg.mobilebroken.common.pojo.vo.RoleVO">
|
||||||
|
|
@ -56,4 +43,13 @@
|
||||||
</if>
|
</if>
|
||||||
</where>
|
</where>
|
||||||
</select>
|
</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>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue