diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DictionaryController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DictionaryController.java index a43a355e..18fe3fe3 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DictionaryController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/DictionaryController.java @@ -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 字典值列表 */ diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPController.java new file mode 100644 index 00000000..8c1c2b9f --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPController.java @@ -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 check(@Valid @RequestBody LDAPAddQO request){ + return ApiResult.success(ldapControllerService.check(request)); + } + + /** + * 新增ad域 + */ + @PostMapping("add") + public ApiResult add(@Valid @RequestBody LDAPAddQO request){ + ldapControllerService.add(request); + return ApiResult.success(); + } + + /** + * 更新ad域 + */ + @PostMapping("update") + public ApiResult update(@Valid @RequestBody LDAPUpdateQO request){ + ldapControllerService.update(request); + return ApiResult.success(); + } + + /** + * 删除ad域 + */ + @PostMapping("delete") + public ApiResult delete(@Valid @NotNull Long id){ + ldapControllerService.delete(id); + return ApiResult.success(); + } + + /** + * 启用/禁用ad域 + * @param request 请求参数 + */ + @PostMapping("/enable") + public ApiResult enable(@Valid @RequestBody EnableQO request){ + ldapControllerService.enable(request); + return ApiResult.success(); + } + + /** + * 获取同步配置 + * @param id ad域id + */ + @GetMapping("getSyncConfig") + public ApiResult getSyncConfig(@Valid @RequestParam @NotNull Long id){ + return ApiResult.success(ldapControllerService.getSyncConfig(id)); + } + + /** + * 保存同步配置 + * @param request 同步配置 + */ + @PostMapping("saveSyncConfig") + public ApiResult saveSyncConfig(@Valid @RequestBody AdSyncVO request){ + ldapControllerService.saveSyncConfig(request); + return ApiResult.success(); + } + + /** + * 同步ad域用户 + * @param id ad域id + */ + @GetMapping("sync") + public ApiResult sync(@Valid @RequestParam @NotNull Long id){ + ldapControllerService.sync(id); + return ApiResult.success(); + } + + /** + * 搜索ad域 + * @param request 搜索参数 + */ + @PostMapping("search") + public ApiResult> search(@Valid @RequestBody PageQO request){ + return ApiResult.success(ldapControllerService.search(request)); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPControllerService.java new file mode 100644 index 00000000..a27093ca --- /dev/null +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/LDAPControllerService.java @@ -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 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(); + } +} diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SupplierController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SupplierController.java index fffbe50d..617826cd 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SupplierController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/SupplierController.java @@ -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> getTypeList(){ + return ApiResult.success(userControllerService.getTypeList()); + } + /** * 新增供应商 */ diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DictionaryControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DictionaryControllerService.java index 0a04287a..296cdb42 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DictionaryControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/DictionaryControllerService.java @@ -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 searchDictionary(@RequestBody DictionarySearchQO request) { - IPage 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)); } /** diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/LdapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/LdapService.java index 472d587d..e46a97c0 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/LdapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/LdapService.java @@ -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) { + } + } + } + } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java index e81aee4b..b7d4bee4 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/UserControllerService.java @@ -506,4 +506,8 @@ public class UserControllerService { .addSheet(new ListSheet<>(datas)) .writeTo(response.getOutputStream()); } + + public List getTypeList() { + return dictionaryItemService.getListByDictionaryCode(Constant.DICTIONARY_SUPPLIERS_CATEGORY); + } } diff --git a/nflg-wms-auth/src/main/java/com/nflg/wms/auth/controller/SsoServerController.java b/nflg-wms-auth/src/main/java/com/nflg/wms/auth/controller/SsoServerController.java index f64007d9..13a00e88 100644 --- a/nflg-wms-auth/src/main/java/com/nflg/wms/auth/controller/SsoServerController.java +++ b/nflg-wms-auth/src/main/java/com/nflg/wms/auth/controller/SsoServerController.java @@ -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> 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> getPermissionButtons(@Valid @NotNull @RequestParam("menuId") Long menuId){ + VUtil.trueThrow(!StpUtil.isLogin()).throwMessage(STATE.LoginError,"请重新登录"); + return ApiResult.success(menuService.getButtonsByMenuId(UserUtil.getUserId(),menuId)); + } } \ No newline at end of file diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPAddQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPAddQO.java new file mode 100644 index 00000000..001d37c5 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPAddQO.java @@ -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; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPUpdateQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPUpdateQO.java new file mode 100644 index 00000000..8c07a9fb --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/LDAPUpdateQO.java @@ -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; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/AdSyncVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/AdSyncVO.java new file mode 100644 index 00000000..3ee48a3b --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/AdSyncVO.java @@ -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; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ButtonVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ButtonVO.java new file mode 100644 index 00000000..05ddcf72 --- /dev/null +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/ButtonVO.java @@ -0,0 +1,13 @@ +package com.nflg.wms.common.pojo.vo; + +import lombok.Data; + +@Data +public class ButtonVO { + + // 按钮名称 + private String name; + + // 按钮编码 + private String code; +} diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DictionaryVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DictionaryVO.java index a1b56566..63f0108f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DictionaryVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/DictionaryVO.java @@ -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; diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/MenuVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/MenuVO.java index 634c6a16..2bed6698 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/MenuVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/MenuVO.java @@ -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; diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/FileUploadRecord.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/FileUploadRecord.java index c55c8c41..d3eb4534 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/FileUploadRecord.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/entity/FileUploadRecord.java @@ -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; /** diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java index ac4d070a..21ee2ef2 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/MenuMapper.java @@ -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; /** *

@@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface MenuMapper extends BaseMapper

{ + List getButtonsByMenuId(Long userId, Long menuId); + + Boolean menuIsSelected(Long roleId, Long menuId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/RoleMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/RoleMapper.java index 979e5cb2..54faf856 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/RoleMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/RoleMapper.java @@ -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; + /** *

* 后台-角色 Mapper 接口 @@ -18,4 +22,8 @@ import com.nflg.wms.repository.entity.Role; public interface RoleMapper extends BaseMapper { IPage search(RoleSearchQO request, Page objectPage); + + List getMenusByRoleCodes(Long serviceId, Long userId); + + List getButtonsByMenuId(Long userId, Long menuId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdService.java index 92e37905..acf09053 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdService.java @@ -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 { List getList(); + + void add(Ad ad); + + void update(Ad ad); + + void delete(@Valid @NotNull Long id); + + void enable(@Valid EnableQO request); + + IPage search(@Valid PageQO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdSyncService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdSyncService.java index e4ee8417..3b5abc78 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdSyncService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IAdSyncService.java @@ -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; /** *

@@ -13,4 +16,9 @@ import com.nflg.wms.repository.entity.AdSync; */ public interface IAdSyncService extends IService { + void deleteByAd(Long id); + + AdSyncVO getByAd(@Valid @NotNull Long id); + + void save(AdSyncVO request); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDictionaryService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDictionaryService.java index ed3cadf9..c54c1976 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDictionaryService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IDictionaryService.java @@ -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 { - void search(DictionarySearchQO request, IPage page); + IPage search(DictionarySearchQO request); void save(SaveDictionaryQO request); diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IMenuService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IMenuService.java index ff032cb9..b56f028c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IMenuService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IMenuService.java @@ -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

{ void delete(@Valid List ids); void enableMenu(@Valid EnableMenuQO request); + + List getButtonsByMenuId(Long userId, @Valid @NotNull Long menuId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IRoleService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IRoleService.java index 07de7831..07edd3ac 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IRoleService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IRoleService.java @@ -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; /** *

@@ -28,4 +32,6 @@ public interface IRoleService extends IService { IPage search(@Valid RoleSearchQO request); void enable(@Valid EnableQO request, String userName); + + List getMenusByRoleCodes(@Valid @NotNull Long serviceId, Long userId); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdServiceImpl.java index ac5c47ff..3cffd5c2 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdServiceImpl.java @@ -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 implements IAdService { + @Resource + private IAuditLogService auditLogService; + + @Resource + private IAdSyncService adSyncService; + @Override public List 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 search(PageQO request) { + return lambdaQuery().page(new Page<>(request.getPage(), request.getPageSize())); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdSyncServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdSyncServiceImpl.java index a8caf40d..f7c4b078 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdSyncServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/AdSyncServiceImpl.java @@ -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; /** *

@@ -17,4 +26,52 @@ import org.springframework.stereotype.Service; @Service public class AdSyncServiceImpl extends ServiceImpl 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()); + } } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DictionaryServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DictionaryServiceImpl.java index 29c453d8..5a63e9d1 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DictionaryServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/DictionaryServiceImpl.java @@ -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 search(DictionarySearchQO request) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); if (StrUtil.isNotBlank(request.getName())) { queryWrapper.like(Dictionary::getName, request.getName()); @@ -59,7 +60,7 @@ public class DictionaryServiceImpl extends ServiceImpl(request.getPage(), request.getPageSize()), queryWrapper); } @Override diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java index 67a7b1da..58e9655c 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/MenuServiceImpl.java @@ -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 implements IM @Resource private IMenuButtonService menuButtonService; - @Resource - private IRoleMenuMapService roleMenuMapService; - @Resource private IRoleButtonMapService roleButtonMapService; @@ -153,6 +152,11 @@ public class MenuServiceImpl extends ServiceImpl implements IM } } + @Override + public List getButtonsByMenuId(Long userId, Long menuId) { + return baseMapper.getButtonsByMenuId(userId,menuId); + } + private void disable(List ids){ if (CollectionUtil.isNotEmpty(ids)) { lambdaUpdate() @@ -243,10 +247,7 @@ public class MenuServiceImpl extends ServiceImpl 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 getChildren(Long parentId) { diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/RoleServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/RoleServiceImpl.java index c4222df6..75bbe8d2 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/RoleServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/RoleServiceImpl.java @@ -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 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 implements IR updateById(role2); auditLogService.addUpdate(Role.class, role1, role2, userName); } + + @Override + public List getMenusByRoleCodes(Long serviceId, Long userId) { + List 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 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); + } + } + } } diff --git a/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml b/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml index d06c0cdc..d8e58759 100644 --- a/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/MenuMapper.xml @@ -2,4 +2,21 @@ + + + diff --git a/nflg-wms-repository/src/main/resources/mapper/RoleMapper.xml b/nflg-wms-repository/src/main/resources/mapper/RoleMapper.xml index 5d250aca..d9367261 100644 --- a/nflg-wms-repository/src/main/resources/mapper/RoleMapper.xml +++ b/nflg-wms-repository/src/main/resources/mapper/RoleMapper.xml @@ -11,4 +11,16 @@ + +