初始化

This commit is contained in:
曹鹏飞 2025-06-30 17:39:23 +08:00
parent 5215f47acb
commit 030fb37a0f
29 changed files with 648 additions and 42 deletions

View File

@ -44,7 +44,6 @@ public class DictionaryController extends BaseController {
/**
* 搜索字典
*
* @param request 请求参数
* @return 字典列表
*/
@ -56,7 +55,6 @@ public class DictionaryController extends BaseController {
/**
* 保存字典
*
* @param request 请求参数
*/
@PostMapping("saveDictionary")
@ -68,7 +66,6 @@ public class DictionaryController extends BaseController {
/**
* 删除字典
*
* @param ids id列表
*/
@PostMapping("deleteDictionary")
@ -80,7 +77,6 @@ public class DictionaryController extends BaseController {
/**
* 搜索字典值
*
* @param request 请求参数
* @return 字典列表
*/
@ -92,7 +88,6 @@ public class DictionaryController extends BaseController {
/**
* 保存字典值
*
* @param request 请求参数
*/
@PostMapping("saveDictionaryItem")
@ -104,7 +99,6 @@ public class DictionaryController extends BaseController {
/**
* 删除字典值
*
* @param ids id列表
*/
@PostMapping("deleteDictionaryItem")
@ -116,7 +110,6 @@ public class DictionaryController extends BaseController {
/**
* 获取字典值翻译列表
*
* @param id 字典值id
* @return 字典值翻译列表
*/
@ -128,7 +121,6 @@ public class DictionaryController extends BaseController {
/**
* 导出字典值翻译列表
*
* @param dictionaryItemIds 字典值id列表
*/
@GetMapping("exportDictionaryItemTranslates")
@ -141,7 +133,6 @@ public class DictionaryController extends BaseController {
/**
* 导入字典值翻译列表
*
* @param file 文件
*/
@PostMapping("importDictionaryItemTranslates")
@ -156,7 +147,6 @@ public class DictionaryController extends BaseController {
/**
* 根据字典编码获取字典值列表
*
* @param dictionaryCode 字典编码
* @return 字典值列表
*/

View File

@ -0,0 +1,109 @@
package com.nflg.wms.admin.controller;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.LDAPAddQO;
import com.nflg.wms.common.pojo.qo.LDAPUpdateQO;
import com.nflg.wms.common.pojo.qo.PageQO;
import com.nflg.wms.common.pojo.vo.AdSyncVO;
import com.nflg.wms.repository.entity.Ad;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.springframework.web.bind.annotation.*;
/**
* LDAP管理
*/
@RestController
@RequestMapping("/ldap")
public class LDAPController extends BaseController {
@Resource
private LDAPControllerService ldapControllerService;
/**
* 测试ad域
*/
@PostMapping("check")
public ApiResult<Boolean> check(@Valid @RequestBody LDAPAddQO request){
return ApiResult.success(ldapControllerService.check(request));
}
/**
* 新增ad域
*/
@PostMapping("add")
public ApiResult<Void> add(@Valid @RequestBody LDAPAddQO request){
ldapControllerService.add(request);
return ApiResult.success();
}
/**
* 更新ad域
*/
@PostMapping("update")
public ApiResult<Void> update(@Valid @RequestBody LDAPUpdateQO request){
ldapControllerService.update(request);
return ApiResult.success();
}
/**
* 删除ad域
*/
@PostMapping("delete")
public ApiResult<Void> delete(@Valid @NotNull Long id){
ldapControllerService.delete(id);
return ApiResult.success();
}
/**
* 启用/禁用ad域
* @param request 请求参数
*/
@PostMapping("/enable")
public ApiResult<Void> enable(@Valid @RequestBody EnableQO request){
ldapControllerService.enable(request);
return ApiResult.success();
}
/**
* 获取同步配置
* @param id ad域id
*/
@GetMapping("getSyncConfig")
public ApiResult<AdSyncVO> getSyncConfig(@Valid @RequestParam @NotNull Long id){
return ApiResult.success(ldapControllerService.getSyncConfig(id));
}
/**
* 保存同步配置
* @param request 同步配置
*/
@PostMapping("saveSyncConfig")
public ApiResult<Void> saveSyncConfig(@Valid @RequestBody AdSyncVO request){
ldapControllerService.saveSyncConfig(request);
return ApiResult.success();
}
/**
* 同步ad域用户
* @param id ad域id
*/
@GetMapping("sync")
public ApiResult<Void> sync(@Valid @RequestParam @NotNull Long id){
ldapControllerService.sync(id);
return ApiResult.success();
}
/**
* 搜索ad域
* @param request 搜索参数
*/
@PostMapping("search")
public ApiResult<PageData<Ad>> search(@Valid @RequestBody PageQO request){
return ApiResult.success(ldapControllerService.search(request));
}
}

View File

@ -0,0 +1,77 @@
package com.nflg.wms.admin.controller;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nflg.wms.admin.service.DepartmentControllerService;
import com.nflg.wms.admin.service.LdapService;
import com.nflg.wms.common.pojo.dto.AdDTO;
import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.LDAPAddQO;
import com.nflg.wms.common.pojo.qo.LDAPUpdateQO;
import com.nflg.wms.common.pojo.qo.PageQO;
import com.nflg.wms.common.pojo.vo.AdSyncVO;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Ad;
import com.nflg.wms.repository.service.IAdService;
import com.nflg.wms.repository.service.IAdSyncService;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.springframework.stereotype.Component;
import java.util.Objects;
@Component
public class LDAPControllerService {
@Resource
private IAdService adService;
@Resource
private IAdSyncService adSyncService;
@Resource
private DepartmentControllerService departmentControllerService;
public void add(@Valid LDAPAddQO request) {
Ad ad = Convert.convert(Ad.class, request);
adService.add(ad);
}
public void update(@Valid LDAPUpdateQO request) {
Ad ad = Convert.convert(Ad.class, request);
adService.update(ad);
}
public void delete(@Valid @NotNull Long id) {
adService.delete(id);
}
public void enable(@Valid EnableQO request) {
adService.enable(request);
}
public AdSyncVO getSyncConfig(@Valid @NotNull Long id) {
return adSyncService.getByAd(id);
}
public void saveSyncConfig(@Valid AdSyncVO request) {
adSyncService.save(request);
}
public void sync(@Valid @NotNull Long id) {
Ad ad = adService.getById(id);
VUtil.trueThrowBusinessError(Objects.isNull(ad)).throwMessage("数据不存在");
departmentControllerService.syncFromLdap(Convert.convert(AdDTO.class, ad));
}
public IPage<Ad> search(@Valid PageQO request) {
return adService.search(request);
}
public Boolean check(@Valid LDAPAddQO request) {
LdapService ldapService = new LdapService();
ldapService.init(request.getServer(), request.getPort(), request.getUserName(), request.getUserPwd(), request.getOu(), request.getTimeout());
return ldapService.check();
}
}

View File

@ -6,6 +6,7 @@ import com.nflg.wms.common.pojo.PageData;
import com.nflg.wms.common.pojo.qo.*;
import com.nflg.wms.common.pojo.vo.RoleSimpleVO;
import com.nflg.wms.common.pojo.vo.UserSupplierVO;
import com.nflg.wms.repository.entity.DictionaryItem;
import com.nflg.wms.starter.BaseController;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
@ -29,6 +30,15 @@ public class SupplierController extends BaseController {
@Resource
private UserControllerService userControllerService;
/**
* 获取供应商类别列表
*/
@GetMapping("/getTypeList")
public ApiResult<List<DictionaryItem>> getTypeList(){
return ApiResult.success(userControllerService.getTypeList());
}
/**
* 新增供应商
*/

View File

@ -3,8 +3,6 @@ package com.nflg.wms.admin.service;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.exception.NflgException;
import com.nflg.wms.common.pojo.PageData;
@ -62,16 +60,11 @@ public class DictionaryControllerService {
/**
* 搜索字典
*
* @param request 请求参数
* @return 字典列表
*/
public PageData<DictionaryVO> searchDictionary(@RequestBody DictionarySearchQO request) {
IPage<DictionaryVO> page = new Page<>();
page.setCurrent(request.getPage());
page.setSize(request.getPageSize());
dictionaryService.search(request, page);
return PageUtil.convert(page, d -> d);
return PageUtil.convert(dictionaryService.search(request), d -> Convert.convert(DictionaryVO.class, d));
}
/**

View File

@ -12,18 +12,21 @@ import org.springframework.ldap.query.LdapQuery;
import org.springframework.ldap.query.LdapQueryBuilder;
import org.springframework.ldap.query.SearchScope;
import javax.naming.directory.DirContext;
import java.util.*;
@Slf4j
public class LdapService {
private LdapContextSource contextSource;
private LdapTemplate ldapTemplate;
private String baseDn;
public void init(String server, int port, String username, String password, String baseDn, int timeout) {
this.baseDn = baseDn;
LdapContextSource contextSource = new LdapContextSource();
contextSource = new LdapContextSource();
contextSource.setUrl("ldap://" + server + ":" + port);
contextSource.setBase(baseDn);
contextSource.setUserDn(username);
@ -139,4 +142,23 @@ public class LdapService {
log.info("获取用户信息完成");
return users;
}
public Boolean check() {
DirContext ctx = null;
try {
// 获取连接如果成功说明可连接
ctx = contextSource.getReadOnlyContext();
return true;
} catch (Exception e) {
log.error("LDAP 验证出错", e);
return false;
} finally {
if (ctx != null) {
try {
ctx.close(); // 关闭连接
} catch (Exception ignored) {
}
}
}
}
}

View File

@ -506,4 +506,8 @@ public class UserControllerService {
.addSheet(new ListSheet<>(datas))
.writeTo(response.getOutputStream());
}
public List<DictionaryItem> getTypeList() {
return dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SUPPLIERS_CATEGORY);
}
}

View File

@ -7,22 +7,24 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.stp.parameter.SaLoginParameter;
import com.nflg.wms.auth.service.LdapService;
import com.nflg.wms.common.constant.Constant;
import com.nflg.wms.common.constant.STATE;
import com.nflg.wms.common.pojo.ApiResult;
import com.nflg.wms.common.pojo.vo.ButtonVO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.common.pojo.vo.UserLoginVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Ad;
import com.nflg.wms.repository.entity.User;
import com.nflg.wms.repository.service.IAdService;
import com.nflg.wms.repository.service.IUserRoleMapService;
import com.nflg.wms.repository.service.IUserService;
import com.nflg.wms.repository.service.*;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
@ -46,6 +48,12 @@ public class SsoServerController {
@Resource
private IAdService adService;
@Resource
private IRoleService roleService;
@Resource
private IMenuService menuService;
/**
* 登录
*/
@ -102,4 +110,26 @@ public class SsoServerController {
.setRoles(roleCodes.stream().map(RoleVO::getName).collect(Collectors.toList())));
};
}
/**
* 获取权限菜单
* @param serviceId 服务id
* @return 权限列表
*/
@GetMapping("getPermissionMenus")
public ApiResult<List<MenuVO>> getPermissionMenus(@Valid @RequestParam @NotNull Long serviceId) {
VUtil.trueThrow(!StpUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
return ApiResult.success(roleService.getMenusByRoleCodes(serviceId, UserUtil.getUserId()));
}
/**
* 获取权限按钮
* @param menuId 菜单id
* @return 按钮列表
*/
@GetMapping("getPermissionButtons")
public ApiResult<List<ButtonVO>> getPermissionButtons(@Valid @NotNull @RequestParam("menuId") Long menuId){
VUtil.trueThrow(!StpUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录");
return ApiResult.success(menuService.getButtonsByMenuId(UserUtil.getUserId(),menuId));
}
}

View File

@ -0,0 +1,56 @@
package com.nflg.wms.common.pojo.qo;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
@Data
public class LDAPAddQO {
/**
* 名称
*/
@NotBlank
private String name;
/**
* 服务器地址
*/
@NotBlank
private String server;
/**
* 服务器端口
*/
@NotBlank
private Integer port;
/**
* 超时时间单位秒
*/
@NotBlank
private Short timeout;
/**
* 账号
*/
@NotBlank
private String userName;
/**
* 密码
*/
@NotBlank
private String userPwd;
/**
* 是否启用
*/
@NotBlank
private Boolean enable;
/**
* 根节点
*/
@NotBlank
private String ou;
}

View File

@ -0,0 +1,11 @@
package com.nflg.wms.common.pojo.qo;
import lombok.Data;
import lombok.NonNull;
@Data
public class LDAPUpdateQO extends LDAPAddQO{
@NonNull
private Long id;
}

View File

@ -0,0 +1,66 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class AdSyncVO {
private Long id;
/**
* 是否启用
*/
private Boolean enable;
/**
* 同步对象
*/
private String mapFrom;
/**
* 同步到
*/
private String mapTo;
/**
* 同步周期单位
*/
private Short interval;
/**
* 同步方式 1:同步选中的对象及成员(包括上层的组织结构) 2:同步选中的对象及成员(不包括上层的组织结构) 3:只同步用户账号(不包括组织结构)
*/
private Short type;
/**
* 创建人
*/
private String createBy;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 最后更新人
*/
private String updateBy;
/**
* 最后更新时间
*/
private LocalDateTime updateTime;
/**
* AD域id
*/
private Long adId;
/**
* 下次同步时间
*/
private String nextSyncDate;
}

View File

@ -0,0 +1,13 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
@Data
public class ButtonVO {
// 按钮名称
private String name;
// 按钮编码
private String code;
}

View File

@ -1,7 +1,10 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class DictionaryVO {
private Long id;

View File

@ -1,12 +1,14 @@
package com.nflg.wms.common.pojo.vo;
import lombok.Data;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Data
@Accessors(chain = true)
public class MenuVO {
private Long id;

View File

@ -1,5 +1,6 @@
package com.nflg.wms.repository.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
@ -56,6 +57,7 @@ public class FileUploadRecord implements Serializable {
/**
* 来源
*/
@TableField(value="`from`")
private String from;
/**

View File

@ -1,7 +1,10 @@
package com.nflg.wms.repository.mapper;
import com.nflg.wms.repository.entity.Menu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nflg.wms.common.pojo.vo.ButtonVO;
import com.nflg.wms.repository.entity.Menu;
import java.util.List;
/**
* <p>
@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface MenuMapper extends BaseMapper<Menu> {
List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId);
Boolean menuIsSelected(Long roleId, Long menuId);
}

View File

@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.RoleSearchQO;
import com.nflg.wms.common.pojo.vo.ButtonVO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.repository.entity.Role;
import java.util.List;
/**
* <p>
* 后台-角色 Mapper 接口
@ -18,4 +22,8 @@ import com.nflg.wms.repository.entity.Role;
public interface RoleMapper extends BaseMapper<Role> {
IPage<RoleVO> search(RoleSearchQO request, Page<?> objectPage);
List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId);
List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId);
}

View File

@ -1,8 +1,13 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.dto.AdDTO;
import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.PageQO;
import com.nflg.wms.repository.entity.Ad;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@ -17,4 +22,14 @@ import java.util.List;
public interface IAdService extends IService<Ad> {
List<AdDTO> getList();
void add(Ad ad);
void update(Ad ad);
void delete(@Valid @NotNull Long id);
void enable(@Valid EnableQO request);
IPage<Ad> search(@Valid PageQO request);
}

View File

@ -1,7 +1,10 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.vo.AdSyncVO;
import com.nflg.wms.repository.entity.AdSync;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
/**
* <p>
@ -13,4 +16,9 @@ import com.nflg.wms.repository.entity.AdSync;
*/
public interface IAdSyncService extends IService<AdSync> {
void deleteByAd(Long id);
AdSyncVO getByAd(@Valid @NotNull Long id);
void save(AdSyncVO request);
}

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.dto.DictionaryItemTranslateDTO;
import com.nflg.wms.common.pojo.qo.DictionarySearchQO;
import com.nflg.wms.common.pojo.qo.SaveDictionaryQO;
import com.nflg.wms.common.pojo.vo.DictionaryVO;
import com.nflg.wms.repository.entity.Dictionary;
import jakarta.validation.constraints.NotEmpty;
@ -21,7 +20,7 @@ import java.util.List;
*/
public interface IDictionaryService extends IService<Dictionary> {
void search(DictionarySearchQO request, IPage<DictionaryVO> page);
IPage<Dictionary> search(DictionarySearchQO request);
void save(SaveDictionaryQO request);

View File

@ -1,15 +1,17 @@
package com.nflg.wms.repository.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nflg.wms.common.pojo.qo.EnableMenuQO;
import com.nflg.wms.common.pojo.qo.MenuAddQO;
import com.nflg.wms.common.pojo.qo.MenuSearchQO;
import com.nflg.wms.common.pojo.qo.MenuUpdateQO;
import com.nflg.wms.common.pojo.vo.ButtonVO;
import com.nflg.wms.common.pojo.vo.MenuAuthorizeVO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.repository.entity.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
import java.util.List;
@ -34,4 +36,6 @@ public interface IMenuService extends IService<Menu> {
void delete(@Valid List<Integer> ids);
void enableMenu(@Valid EnableMenuQO request);
List<ButtonVO> getButtonsByMenuId(Long userId, @Valid @NotNull Long menuId);
}

View File

@ -6,10 +6,14 @@ import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.RoleAddQO;
import com.nflg.wms.common.pojo.qo.RoleSearchQO;
import com.nflg.wms.common.pojo.qo.RoleUpdateQO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.repository.entity.Role;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.util.List;
/**
* <p>
@ -28,4 +32,6 @@ public interface IRoleService extends IService<Role> {
IPage<RoleVO> search(@Valid RoleSearchQO request);
void enable(@Valid EnableQO request, String userName);
List<MenuVO> getMenusByRoleCodes(@Valid @NotNull Long serviceId, Long userId);
}

View File

@ -1,12 +1,22 @@
package com.nflg.wms.repository.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.dto.AdDTO;
import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.PageQO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.Ad;
import com.nflg.wms.repository.mapper.AdMapper;
import com.nflg.wms.repository.service.IAdService;
import com.nflg.wms.repository.service.IAdSyncService;
import com.nflg.wms.repository.service.IAuditLogService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
/**
@ -20,8 +30,55 @@ import java.util.List;
@Service
public class AdServiceImpl extends ServiceImpl<AdMapper, Ad> implements IAdService {
@Resource
private IAuditLogService auditLogService;
@Resource
private IAdSyncService adSyncService;
@Override
public List<AdDTO> getList() {
return baseMapper.getList();
}
@Transactional
@Override
public void add(Ad ad) {
save(ad);
auditLogService.addInsert(Ad.class,ad,ad.getCreateBy());
}
@Transactional
@Override
public void update(Ad ad) {
Ad old = getById(ad.getId());
auditLogService.addUpdate(Ad.class, old, ad, ad.getUpdateBy());
updateById(ad);
}
@Transactional
@Override
public void delete(Long id) {
Ad old = getById(id);
removeById(id);
adSyncService.deleteByAd(id);
auditLogService.addDelete(Ad.class, old, UserUtil.getUserName());
}
@Override
public void enable(EnableQO request) {
Ad old = getById(request.getId());
lambdaUpdate().set(Ad::getEnable, request.getEnable())
.set(Ad::getUpdateBy, UserUtil.getUserName())
.set(Ad::getUpdateTime, LocalDateTime.now())
.eq(Ad::getId, request.getId())
.update();
Ad newAd = getById(request.getId());
auditLogService.addUpdate(Ad.class, old, newAd, UserUtil.getUserName());
}
@Override
public IPage<Ad> search(PageQO request) {
return lambdaQuery().page(new Page<>(request.getPage(), request.getPageSize()));
}
}

View File

@ -1,10 +1,19 @@
package com.nflg.wms.repository.service.impl;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.vo.AdSyncVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.repository.entity.AdSync;
import com.nflg.wms.repository.mapper.AdSyncMapper;
import com.nflg.wms.repository.service.IAdSyncService;
import com.nflg.wms.repository.service.IAuditLogService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Objects;
/**
* <p>
@ -17,4 +26,52 @@ import org.springframework.stereotype.Service;
@Service
public class AdSyncServiceImpl extends ServiceImpl<AdSyncMapper, AdSync> implements IAdSyncService {
@Resource
private IAuditLogService auditLogService;
@Transactional
@Override
public void deleteByAd(Long id) {
AdSync adSync= lambdaQuery().eq(AdSync::getAdId, id).one();
removeById(adSync);
auditLogService.addDelete(AdSync.class, adSync, UserUtil.getUserName());
}
@Override
public AdSyncVO getByAd(Long id) {
AdSync adSync = lambdaQuery().eq(AdSync::getAdId, id).one();
return Convert.convert(AdSyncVO.class, adSync);
}
@Transactional
@Override
public void save(AdSyncVO request) {
if (Objects.isNull(request.getId())){
}
}
@Transactional
protected void add(AdSyncVO request){
AdSync adSync= Convert.convert(AdSync.class, request);
save(adSync);
auditLogService.addInsert(AdSync.class, adSync, UserUtil.getUserName());
}
@Transactional
protected void update(AdSyncVO request){
AdSync old= getById(request.getId());
lambdaUpdate()
.set(AdSync::getEnable, request.getEnable())
.set(AdSync::getMapFrom, request.getMapFrom())
.set(AdSync::getMapTo, request.getMapTo())
.set(AdSync::getInterval, request.getInterval())
.set(AdSync::getType, request.getType())
.set(AdSync::getUpdateBy, UserUtil.getUserName())
.set(AdSync::getUpdateTime, LocalDateTime.now())
.eq(AdSync::getId, request.getId())
.update();
AdSync newAdSync = getById(request.getId());
auditLogService.addUpdate(AdSync.class, old, newAdSync, UserUtil.getUserName());
}
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.dto.DictionaryItemTranslateDTO;
import com.nflg.wms.common.pojo.qo.DictionarySearchQO;
@ -50,7 +51,7 @@ public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Diction
private ILanguageService languageService;
@Override
public void search(DictionarySearchQO request, IPage page) {
public IPage<Dictionary> search(DictionarySearchQO request) {
LambdaQueryWrapper<Dictionary> queryWrapper = new LambdaQueryWrapper<>();
if (StrUtil.isNotBlank(request.getName())) {
queryWrapper.like(Dictionary::getName, request.getName());
@ -59,7 +60,7 @@ public class DictionaryServiceImpl extends ServiceImpl<DictionaryMapper, Diction
queryWrapper.like(Dictionary::getCode, request.getCode());
}
queryWrapper.orderByDesc(Dictionary::getId);
baseMapper.selectPage(page, queryWrapper);
return baseMapper.selectPage(new Page<>(request.getPage(), request.getPageSize()), queryWrapper);
}
@Override

View File

@ -6,7 +6,12 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.nflg.wms.common.pojo.qo.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.common.pojo.qo.EnableMenuQO;
import com.nflg.wms.common.pojo.qo.MenuAddQO;
import com.nflg.wms.common.pojo.qo.MenuSearchQO;
import com.nflg.wms.common.pojo.qo.MenuUpdateQO;
import com.nflg.wms.common.pojo.vo.ButtonVO;
import com.nflg.wms.common.pojo.vo.MenuAuthorizeVO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.util.UserUtil;
@ -14,13 +19,10 @@ import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Menu;
import com.nflg.wms.repository.entity.MenuButton;
import com.nflg.wms.repository.entity.RoleButtonMap;
import com.nflg.wms.repository.entity.RoleMenuMap;
import com.nflg.wms.repository.mapper.MenuMapper;
import com.nflg.wms.repository.service.IMenuButtonService;
import com.nflg.wms.repository.service.IMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nflg.wms.repository.service.IRoleButtonMapService;
import com.nflg.wms.repository.service.IRoleMenuMapService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
@ -42,9 +44,6 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
@Resource
private IMenuButtonService menuButtonService;
@Resource
private IRoleMenuMapService roleMenuMapService;
@Resource
private IRoleButtonMapService roleButtonMapService;
@ -153,6 +152,11 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
}
}
@Override
public List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId) {
return baseMapper.getButtonsByMenuId(userId,menuId);
}
private void disable(List<Long> ids){
if (CollectionUtil.isNotEmpty(ids)) {
lambdaUpdate()
@ -243,10 +247,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
}
private Boolean menuIsSelected(Long roleId, Long menuId) {
return roleMenuMapService.lambdaQuery()
.eq(RoleMenuMap::getMenuId, menuId)
.eq(RoleMenuMap::getRoleId, roleId)
.exists();
return baseMapper.menuIsSelected(roleId,menuId);
}
private List<MenuVO> getChildren(Long parentId) {

View File

@ -8,17 +8,21 @@ import com.nflg.wms.common.pojo.qo.EnableQO;
import com.nflg.wms.common.pojo.qo.RoleAddQO;
import com.nflg.wms.common.pojo.qo.RoleSearchQO;
import com.nflg.wms.common.pojo.qo.RoleUpdateQO;
import com.nflg.wms.common.pojo.vo.MenuVO;
import com.nflg.wms.common.pojo.vo.RoleVO;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Menu;
import com.nflg.wms.repository.entity.Role;
import com.nflg.wms.repository.mapper.RoleMapper;
import com.nflg.wms.repository.service.IAuditLogService;
import com.nflg.wms.repository.service.IMenuService;
import com.nflg.wms.repository.service.IRoleService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
@ -35,6 +39,9 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
@Resource
private IAuditLogService auditLogService;
@Resource
private IMenuService menuService;
@Transactional
@Override
public void add(RoleAddQO request, String userName) {
@ -80,4 +87,24 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
updateById(role2);
auditLogService.addUpdate(Role.class, role1, role2, userName);
}
@Override
public List<MenuVO> getMenusByRoleCodes(Long serviceId, Long userId) {
List<MenuVO> menus=baseMapper.getMenusByRoleCodes(serviceId,userId);
for (int i = 0; i < menus.size(); i++) {
MenuVO menu = menus.get(i);
bindParent(menu, menus);
}
return menus;
}
private void bindParent(MenuVO menu, List<MenuVO> datas) {
if (!Objects.equals(0L, menu.getParentId())) {
Menu mp = menuService.getById(menu.getParentId());
if (datas.stream().noneMatch(d -> Objects.equals(d.getId(), mp.getId()))) {
MenuVO m = new MenuVO().setId(mp.getId()).setName(mp.getName()).setShow(mp.getShow()).setUrl(mp.getUrl()).setComponent(mp.getComponent()).setParentId(mp.getParentId());
datas.add(m);
}
}
}
}

View File

@ -2,4 +2,21 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.nflg.wms.repository.mapper.MenuMapper">
<select id="getButtonsByMenuId" resultType="com.nflg.wms.common.pojo.vo.ButtonVO">
SELECT DISTINCT mb.name, mb.code
FROM role r
INNER JOIN role_button_map rbm ON r.id = rbm.role_id
INNER JOIN admin_menu_button mb ON rbm.button_id = mb.id
INNER JOIN 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>
<select id="menuIsSelected" resultType="java.lang.Boolean">
SELECT EXISTS(SELECT 1
FROM role_menu_map
WHERE menu_id = #{menuId}
AND role_id = #{roleId})
</select>
</mapper>

View File

@ -11,4 +11,16 @@
</if>
</where>
</select>
<select id="getMenusByRoleCodes" resultType="com.nflg.wms.common.pojo.vo.MenuVO">
SELECT DISTINCT m.id, m.name, m.url, m.component, m.parent_id AS "parentId", m.show
FROM role r
INNER JOIN role_menu_map rmm ON r.id = rmm.role_id
INNER JOIN admin_menu m ON rmm.menu_id = m.id
INNER JOIN user_role_map urm ON urm.role_id = r.id
WHERE m.enable = 1
AND r.enable = 1
AND urm.user_id = #{userId}
AND m.service_desc_id = #{serviceId}
</select>
</mapper>