소스 검색

Merge remote-tracking branch 'origin/main' into main

zhangwei 1 주 전
부모
커밋
566a205739
43개의 변경된 파일1324개의 추가작업 그리고 219개의 파일을 삭제
  1. 46 0
      edu-travel-adapter/edu-travel-adapter-country/src/main/java/edu/travel/adapter/service/country/CountryAdapter.java
  2. 21 0
      edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/SysRoleAdapter.java
  3. 13 1
      edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/TenantAdapter.java
  4. 0 2
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/MyTreeUtil.java
  5. 0 2
      edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/TreeNode.java
  6. 2 1
      edu-travel-remote/edu-travel-remote-base/src/main/java/edu/travel/remote/base/RemoteBaseController.java
  7. 0 60
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/entity/ShopCurrency.java
  8. 0 7
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/mapper/ShopCurrencyMapper.java
  9. 2 11
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/BaseCountryRemoteController.java
  10. 1 18
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/BaseCountryServeRemoteController.java
  11. 1 11
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/ShopCurrencyRemoteController.java
  12. 2 16
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/ShopLanguageRemoteController.java
  13. 0 3
      edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/vo/BaseCountryServeVo.java
  14. 6 0
      edu-travel-remote/edu-travel-remote-tenant/pom.xml
  15. 39 0
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/dto/tenant/SysRoleDto.java
  16. 2 1
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/EduTenantVo.java
  17. 2 2
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/SysMenuExtraDataVo.java
  18. 17 9
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/SysRoleRemoteController.java
  19. 5 2
      edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/TenantRemoteController.java
  20. 88 0
      edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/dto/ShopWarehouseDto.java
  21. 71 0
      edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/dto/ShopWarehouseStaffDto.java
  22. 17 0
      edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/remote/ShopWarehouseRemoteController.java
  23. 83 0
      edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/vo/ShopWarehouseStaffVo.java
  24. 92 0
      edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/vo/ShopWarehouseVo.java
  25. 1 1
      edu-travel-service/edu-travel-service-country/src/main/java/edu/travel/country/web/BaseCountryController.java
  26. 5 5
      edu-travel-service/edu-travel-service-country/src/main/java/edu/travel/country/web/BaseCountryServeController.java
  27. 5 0
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysMenuService.java
  28. 6 1
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysRoleService.java
  29. 33 6
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysMenuServiceImpl.java
  30. 40 7
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysRoleServiceImpl.java
  31. 2 2
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ITenantServiceImpl.java
  32. 43 1
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysMenuController.java
  33. 136 13
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysRoleController.java
  34. 95 21
      edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java
  35. 3 0
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/WarehouseApplication.java
  36. 2 2
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/entity/ShopWarehouse.java
  37. 52 0
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/mapper/ShopWarehouseMapper.java
  38. 13 0
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/ShopWarehouseService.java
  39. 0 10
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseService.java
  40. 251 0
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseServiceImpl.java
  41. 1 1
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseStaffServiceImpl.java
  42. 108 3
      edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/web/ShopWarehouseController.java
  43. 18 0
      pom.xml

+ 46 - 0
edu-travel-adapter/edu-travel-adapter-country/src/main/java/edu/travel/adapter/service/country/CountryAdapter.java

@@ -0,0 +1,46 @@
+package edu.travel.adapter.service.country;
+
+import edu.travel.adapter.annotation.AdapterAnnotation;
+import edu.travel.dto.BaseCountryServeDto;
+import edu.travel.remote.BaseCountryServeRemoteController;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.vo.BaseCountryServeVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component
+public class CountryAdapter  {
+    @Autowired
+    private BaseCountryServeRemoteController baseCountryServeRemoteController;
+    @AdapterAnnotation
+    public RPCBaseResponse<List<BaseCountryServeVo>> getCountryServeTree() {
+      return   baseCountryServeRemoteController.getCountryServeTree();
+    }
+
+    @AdapterAnnotation
+    public RPCBaseResponse<BaseCountryServeVo> getFormId(String id) {
+        return baseCountryServeRemoteController.getFormId(id);
+    }
+    @AdapterAnnotation
+
+    public RPCBaseResponse<BaseCountryServeVo> updateTargetFormId(BaseCountryServeDto entity) {
+        return baseCountryServeRemoteController.updateTargetFormId(entity);
+    }
+    @AdapterAnnotation
+
+    public RPCBaseResponse<BaseCountryServeVo> saveFormTarget(BaseCountryServeDto entity) {
+        return baseCountryServeRemoteController.saveFormTarget(entity);
+    }
+    @AdapterAnnotation
+
+    public RPCBaseResponse<BaseCountryServeVo> deleteTargetFormId(List<String> ids) {
+        return baseCountryServeRemoteController.deleteTargetFormId(ids);
+    }
+    @AdapterAnnotation
+
+    public RPCBaseResponse<List<BaseCountryServeVo>> getAllForm() {
+        return baseCountryServeRemoteController.getAllForm();
+    }
+}

+ 21 - 0
edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/SysRoleAdapter.java

@@ -0,0 +1,21 @@
+package edu.travel.adapter.service.tenant;
+
+import edu.travel.adapter.annotation.AdapterAnnotation;
+import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.tenant.SysRoleRemoteController;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+@Component
+public class SysRoleAdapter {
+    @Resource
+    private SysRoleRemoteController sysRoleRemoteController;
+    /**
+     * 通过id查找角色
+     */
+    @AdapterAnnotation
+    public RPCBaseResponse<SysRoleVo> getFormId(String id){
+        return sysRoleRemoteController.getFormId(id);
+    };
+}

+ 13 - 1
edu-travel-adapter/edu-travel-adapter-tenant/src/main/java/edu/travel/adapter/service/tenant/TenantAdapter.java

@@ -2,9 +2,12 @@ package edu.travel.adapter.service.tenant;
 
 import edu.travel.adapter.annotation.AdapterAnnotation;
 import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
+import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
+import edu.travel.resp.BaseResponse;
 import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.tenant.TenantRemoteController;
 import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.GetMapping;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -19,7 +22,16 @@ public class TenantAdapter {
     public RPCBaseResponse<EduTenantVo> getTenantById(Long id) {
         return tenantRemoteController.getTenantById(id);
     }
-
+    /**
+     * 根据用户id获取用户角色列表(未分页)
+     */
+    @AdapterAnnotation
+    public BaseResponse<List<SysRoleVo>> getRoleListByUserId(){
+        return tenantRemoteController.getRoleListByUserId();
+    };
+    /**
+     * 通过id查询商城用户信息
+     */
     @AdapterAnnotation
     public RPCBaseResponse<List<EduTenantVo>> getTenantByIds(Set<String> id) {
         return tenantRemoteController.getTenantByIds(id);

+ 0 - 2
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/MyTreeUtil.java

@@ -6,8 +6,6 @@ import java.util.stream.Collectors;
 /**
  * 树形菜单构建工具
  *
- * @author Zee
- * @date 2023/7/20 0020 9:48
  */
 public class MyTreeUtil {
     /**

+ 0 - 2
edu-travel-common/edu-travel-common-core/src/main/java/edu/travel/utils/tree/TreeNode.java

@@ -8,8 +8,6 @@ import java.util.Objects;
 /**
  * 树结点
  *
- * @author Zee
- * @date 2023/7/20 0020 9:45
  */
 public abstract class TreeNode {
     /**

+ 2 - 1
edu-travel-remote/edu-travel-remote-base/src/main/java/edu/travel/remote/base/RemoteBaseController.java

@@ -4,12 +4,13 @@ import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
 public interface RemoteBaseController<V,D> {
     @GetMapping("/getFormId")
-    public RPCBaseResponse<V> getFormId(String id);
+    public RPCBaseResponse<V> getFormId(@RequestParam("id") String id);
     @PostMapping("/updateFormId")
     public RPCBaseResponse<V> updateTargetFormId(@RequestBody D entity);
     @PostMapping("/saveForm")

+ 0 - 60
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/entity/ShopCurrency.java

@@ -1,60 +0,0 @@
-package edu.travel.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 货币表
- */
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-@TableName(value = "shop_currency")
-public class ShopCurrency extends BaseEntity {
-    /**
-     * ID
-     */
-    @TableId(value = "id", type = IdType.ASSIGN_ID)
-    private Long id;
-
-    /**
-     * 货币名称_en
-     */
-    @TableField(value = "currency_name_en")
-    private String currencyNameEn;
-
-    /**
-     * 货币名称_zh
-     */
-    @TableField(value = "currency_name_zh")
-    private String currencyNameZh;
-
-    /**
-     * 货币代码
-     */
-    @TableField(value = "currency_code")
-    private String currencyCode;
-
-    /**
-     * 货币符号
-     * */
-    @TableField(value = "currency_symbol")
-    private String currencySymbol;
-    /**
-     * 货币单位
-     * */
-    @TableField(value = "currency_unit")
-    private String currencyUnit;
-
-    /**
-     * 状态 -0启用  -1禁用
-     * */
-    @TableField(value = "status")
-    private String status;
-
-}

+ 0 - 7
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/mapper/ShopCurrencyMapper.java

@@ -1,7 +0,0 @@
-package edu.travel.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import edu.travel.entity.ShopCurrency;
-
-public interface ShopCurrencyMapper extends BaseMapper<ShopCurrency> {
-}

+ 2 - 11
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/BaseCountryRemoteController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
-@FeignClient(path = "/baseCountry",name = "commodity")
+@FeignClient(path = "/baseCountry",name = "country-dev")
 public interface BaseCountryRemoteController extends RemoteBaseController<BaseCountryVo, BaseCountryDto> {
 
     //国家树
@@ -21,14 +21,5 @@ public interface BaseCountryRemoteController extends RemoteBaseController<BaseCo
     //国家分页
     @GetMapping("/getCountryPage")
     public RPCBaseResponse<IPage<BaseCountryVo>> getCountryPage(BaseCountryDto baseCountryDTO);
-    @GetMapping("/getCountryFormId")
-    public RPCBaseResponse<BaseCountryVo> getFormId(String id);
-    @PostMapping("/updateCountryFormId")
-    public RPCBaseResponse<BaseCountryVo> updateTargetFormId(@RequestBody BaseCountryDto entity);
-    @PostMapping("/saveCountryForm")
-    public RPCBaseResponse<BaseCountryVo> saveFormTarget(@RequestBody BaseCountryDto entity);
-    @PostMapping("/deleteCountryFormId")
-    public RPCBaseResponse<BaseCountryVo> deleteTargetFormId(@RequestBody List<String> ids);
-    @GetMapping("/CountrylistForm")
-    public RPCBaseResponse<List<BaseCountryVo>> getAllForm();
+
 }

+ 1 - 18
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/BaseCountryServeRemoteController.java

@@ -6,28 +6,11 @@ import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.vo.BaseCountryServeVo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
-
-@FeignClient(path = "/baseCountryServe",name = "commodity")
+@FeignClient(path = "/baseCountryServe",name = "country-dev")
 public interface BaseCountryServeRemoteController extends RemoteBaseController<BaseCountryServeVo, BaseCountryServeDto> {
     //服务国家树
     @GetMapping("/getCountryServeTree")
     public RPCBaseResponse<List<BaseCountryServeVo>> getCountryServeTree();
-    //获取服务国家信息
-    @GetMapping("/getCountryServeFormId")
-    public RPCBaseResponse<BaseCountryServeVo> getFormId(String id);
-    //更新服务国家信息
-    @GetMapping("/updateCountryServeFormId")
-    public RPCBaseResponse<BaseCountryServeVo> updateTargetFormId(@RequestBody BaseCountryServeDto entity);
-    //新增服务国家信息
-    @GetMapping("/saveCountryServeForm")
-    public RPCBaseResponse<BaseCountryServeVo> saveFormTarget(@RequestBody BaseCountryServeDto entity);
-    //删除服务国家信息
-    @GetMapping("/deleteCountryServeFormId")
-    public RPCBaseResponse<BaseCountryServeVo> deleteTargetFormId(@RequestBody List<String> ids);
-    //获取服务国家列表
-    @GetMapping("/listForm")
-    public RPCBaseResponse<List<BaseCountryServeVo>> getAllForm();
 }

+ 1 - 11
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/ShopCurrencyRemoteController.java

@@ -11,18 +11,8 @@ import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.List;
 
-@FeignClient(path = "/shopCurrency",name = "commodity")
+@FeignClient(path = "/shopCurrency",name = "country-dev")
 public interface ShopCurrencyRemoteController extends RemoteBaseController<ShopCurrencyVo, ShopCurrencyDto> {
     @GetMapping("/getCurrencyPage")
     public RPCBaseResponse<IPage<ShopCurrencyVo>> getCurrencyPage(ShopCurrencyDto dto);
-    @GetMapping("/getCurrencyFormId")
-    public RPCBaseResponse<ShopCurrencyVo> getFormId(String id);
-    @PostMapping("/updateCurrencyFormId")
-    public RPCBaseResponse<ShopCurrencyVo> updateTargetFormId(ShopCurrencyDto entity);
-    @PostMapping("/saveCurrencyForm")
-    public RPCBaseResponse<ShopCurrencyVo> saveFormTarget(ShopCurrencyDto entity);
-    @PostMapping("/deleteCurrencyFormId")
-    public RPCBaseResponse<ShopCurrencyVo> deleteTargetFormId(List<String> ids);
-    @GetMapping("/listCurrencyForm")
-    public RPCBaseResponse<List<ShopCurrencyVo>> getAllForm();
 }

+ 2 - 16
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/remote/ShopLanguageRemoteController.java

@@ -12,25 +12,11 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
-@FeignClient(path = "/shopLanguage",name = "commodity")
+@FeignClient(path = "/shopLanguage",name = "country-dev")
 public interface ShopLanguageRemoteController extends RemoteBaseController<ShopLanguageVo, ShopLanguageDto> {
 
     //语言分页
     @GetMapping("/getLanguagePage")
     public RPCBaseResponse<IPage<ShopLanguageVo>> getLanguagePage(ShopLanguageDto shopLanguageDto);
-   //获取语言详情
-    @GetMapping("/getLanguageFormId")
-    public RPCBaseResponse<ShopLanguageVo> getFormId(String id);
-    //更新语言信息
-    @PostMapping("/updateLanguageFormId")
-    public RPCBaseResponse<ShopLanguageVo> updateTargetFormId(@RequestBody ShopLanguageDto entity);
-    //新增语言信息
-    @PostMapping("/saveLanguageForm")
-    public RPCBaseResponse<ShopLanguageVo> saveFormTarget(@RequestBody ShopLanguageDto entity);
-    //删除语言信息
-    @PostMapping("/deleteLanguageFormId")
-    public RPCBaseResponse<ShopLanguageVo> deleteTargetFormId(@RequestBody List<String> ids);
-    //获取语言
-    @GetMapping("/LanguagelistForm")
-    public RPCBaseResponse<List<ShopLanguageVo>> getAllForm();
+
 }

+ 0 - 3
edu-travel-remote/edu-travel-remote-country/src/main/java/edu/travel/vo/BaseCountryServeVo.java

@@ -1,9 +1,7 @@
 package edu.travel.vo;
 
 import com.baomidou.mybatisplus.annotation.TableField;
-import edu.travel.annotation.LinkOne;
 import edu.travel.entity.BaseEntity;
-import edu.travel.mapper.ShopCurrencyMapper;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -83,7 +81,6 @@ public class BaseCountryServeVo extends BaseEntity {
      *map
      */
     @TableField(exist = false)
-    @LinkOne(linkField = "currencyId", linkMapper = ShopCurrencyMapper.class, linkPrimaryField = "id")
     private Map<String, Object> map;
     /**
      * 子类

+ 6 - 0
edu-travel-remote/edu-travel-remote-tenant/pom.xml

@@ -51,5 +51,11 @@
             <artifactId>edu-travel-common-core</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
+        <dependency>
+            <groupId>edu.travel</groupId>
+            <artifactId>edu-travel-remote-base</artifactId>
+            <version>1.0-SNAPSHOT</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 </project>

+ 39 - 0
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/dto/tenant/SysRoleDto.java

@@ -0,0 +1,39 @@
+package edu.travel.remote.feign.mode.dto.tenant;
+
+import edu.travel.entity.BaseEntity;
+import lombok.Data;
+
+/**
+ * SysRoloVo 类。
+ * <p>
+ * 描述:
+ *
+ * @author huangwenwen
+ * @date 2025/2/12
+ */
+
+@Data
+public class SysRoleDto extends BaseEntity {
+    /**
+     * 主键id
+     */
+    private String id;
+
+    /**
+     * 角色名称
+     */
+    private String name;
+
+    /**
+     * 角色描述
+     */
+    private String remark;
+
+    /**
+     * 状态 0禁用1启用
+     */
+    private Byte status;
+
+}
+
+

+ 2 - 1
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/EduTenantVo.java

@@ -3,6 +3,7 @@ package edu.travel.remote.feign.mode.vo.tenant;
 import edu.travel.entity.BaseEntity;
 import lombok.Data;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -91,6 +92,6 @@ public class EduTenantVo extends BaseEntity {
     /**
      * 用户角色列表
      */
-    private List<Long> roleIdList;
+    private List<String> roleIds = new ArrayList<>();
 
 }

+ 2 - 2
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/remote/feign/mode/vo/tenant/SysMenuExtraDataVo.java

@@ -21,12 +21,12 @@ public class SysMenuExtraDataVo {
     /**
      * 主键id
      */
-    private Long id;
+    private String id;
 
     /**
      * 菜单id
      */
-    private Long menuId;
+    private String menuId;
 
     /**
      * 菜单图标名称

+ 17 - 9
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/SysRoleRemoteController.java

@@ -1,10 +1,13 @@
 package edu.travel.tenant;
 
+import edu.travel.remote.base.RemoteBaseController;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
+import edu.travel.remote.feign.mode.dto.tenant.SysRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.SysRolePageDto;
 import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
 import edu.travel.resp.BaseResponse;
+import edu.travel.rpc.RPCBaseResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -14,7 +17,12 @@ import org.springframework.web.bind.annotation.RequestParam;
 import java.util.List;
 
 @FeignClient(name = "tenant-dev",path = "/sysRole")
-public interface SysRoleRemoteController {
+public interface SysRoleRemoteController extends RemoteBaseController<SysRoleVo, SysRoleDto> {
+    /**
+     * 通过id查找角色
+     */
+    @GetMapping("/getFormId")
+    public RPCBaseResponse<SysRoleVo> getFormId(@RequestParam("id") String id);
     /**
      * 新增管理角色并分配菜单
      */
@@ -43,14 +51,14 @@ public interface SysRoleRemoteController {
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> updateRoleAndMenusById( @RequestBody AddOrUpdateRoleDto addOrUpdateRoleDto);
 
-    /**
-     * 为角色分配菜单
-     * @param dto
-     * @return
-     */
-    @PostMapping("/assignMenusToRole")
-//    @PreAuthorize("hasRole('超级管理员')")
-    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto);
+//    /**
+//     * 为角色分配菜单
+//     * @param dto
+//     * @return
+//     */
+//    @PostMapping("/assignMenusToRole")
+////    @PreAuthorize("hasRole('超级管理员')")
+//    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto);
 
     /**
      * 更新角色菜单

+ 5 - 2
edu-travel-remote/edu-travel-remote-tenant/src/main/java/edu/travel/tenant/TenantRemoteController.java

@@ -1,5 +1,6 @@
 package edu.travel.tenant;
 
+import edu.travel.remote.base.RemoteBaseController;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateTenantDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
 import edu.travel.remote.feign.mode.dto.tenant.EduTenantPageDto;
@@ -12,11 +13,13 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
 import java.util.List;
 import java.util.Set;
 
 @FeignClient(name = "tenant-dev",path = "/user")
-public interface TenantRemoteController {
+public interface TenantRemoteController  extends RemoteBaseController<EduTenantVo, AddOrUpdateTenantDto> {
 
     @GetMapping("/getTenantByPhoneNumber")
 //    @PreAuthorize("hasRole('超级管理员')")
@@ -53,7 +56,7 @@ public interface TenantRemoteController {
      */
     @GetMapping("/getTenantById")
 //    @PreAuthorize("hasRole('超级管理员')")
-    public RPCBaseResponse<EduTenantVo> getTenantById(Long id);
+    public RPCBaseResponse<EduTenantVo> getTenantById(@RequestParam("id") Long id);
     /**
      * 通过id查询商城用户信息
      */

+ 88 - 0
edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/dto/ShopWarehouseDto.java

@@ -0,0 +1,88 @@
+package edu.travel.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import edu.travel.po.PagePO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 库房表
+ */
+@Data
+public class ShopWarehouseDto extends PagePO {
+    /**
+     * 库房表ID
+     */
+    private Long id;
+
+    /**
+     * 0是总仓
+     */
+    private Long parentId;
+
+    /**
+     * 库房名称
+     */
+    private String warehouseName;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 维度
+     */
+    private String latitude;
+
+    /**
+     * 国家ID
+     */
+    private String countryServeId;
+
+    /**
+     * 库房详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * '启用禁用 0 启用 1禁用'
+     */
+    private Integer status;
+
+    /**
+     * 系统标识
+     */
+    private String project;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createUserId;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 更新人id
+     */
+    private String updateUserId;
+
+    /**
+     * 删除标记 0正常 1删除
+     */
+    private Integer deleteFlag;
+}

+ 71 - 0
edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/dto/ShopWarehouseStaffDto.java

@@ -0,0 +1,71 @@
+package edu.travel.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import edu.travel.po.PagePO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 库房人员关联表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "shop_warehouse_staff")
+public class ShopWarehouseStaffDto extends PagePO {
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 库房ID
+     */
+    private Long warehouseId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 角色
+     */
+    private Long roleId;
+
+    /**
+     * 系统标识
+     */
+    private String project;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createUserId;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 更新人id
+     */
+    private String updateUserId;
+
+    /**
+     * 删除标记 0正常 1删除
+     */
+    private Integer deleteFlag;
+}

+ 17 - 0
edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/remote/ShopWarehouseRemoteController.java

@@ -0,0 +1,17 @@
+package edu.travel.remote;
+
+import edu.travel.dto.ShopWarehouseDto;
+import edu.travel.remote.base.RemoteBaseController;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.vo.ShopWarehouseVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+
+@FeignClient(path = "/shopWarehouse", name = "warehouse")
+public interface ShopWarehouseRemoteController extends RemoteBaseController<ShopWarehouseVo, ShopWarehouseDto> {
+
+}

+ 83 - 0
edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/vo/ShopWarehouseStaffVo.java

@@ -0,0 +1,83 @@
+package edu.travel.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import edu.travel.entity.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 库房人员关联表
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "shop_warehouse_staff")
+public class ShopWarehouseStaffVo extends BaseEntity {
+    /**
+     * ID
+     */
+    private Long id;
+
+    /**
+     * 库房ID
+     */
+    private Long warehouseId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+    /**
+     * 用户名
+     */
+    private String tenantName;
+
+    /**
+     * 角色id
+     */
+    private Long roleId;
+    /**
+     * 姓
+     */
+    private String tenantSurname;
+    /**
+     * 名
+     */
+    private String name;
+
+    /**
+     * 系统标识
+     */
+    private String project;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createUserId;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 更新人id
+     */
+    private String updateUserId;
+
+    /**
+     * 删除标记 0正常 1删除
+     */
+    private Integer deleteFlag;
+}

+ 92 - 0
edu-travel-remote/edu-travel-remote-warehouse/src/main/java/edu/travel/vo/ShopWarehouseVo.java

@@ -0,0 +1,92 @@
+package edu.travel.vo;
+
+import edu.travel.entity.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 库房表
+ */
+@Data
+public class ShopWarehouseVo extends BaseEntity {
+    /**
+     * 库房表ID
+     */
+    private Long id;
+
+    /**
+     * 0是总仓
+     */
+    private Long parentId;
+
+    /**
+     * 库房名称
+     */
+    private String warehouseName;
+
+    /**
+     * 经度
+     */
+    private String longitude;
+
+    /**
+     * 维度
+     */
+    private String latitude;
+
+    /**
+     * 国家ID
+     */
+    private String countryServeId;
+
+    /**
+     * 库房详细地址
+     */
+    private String detailedAddress;
+
+    /**
+     * '启用禁用 0 启用 1禁用'
+     */
+    private Integer status;
+
+    /**
+     * 系统标识
+     */
+    private String project;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    private String createUserId;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 更新人id
+     */
+    private String updateUserId;
+
+    /**
+     * 删除标记 0正常 1删除
+     */
+    private Integer deleteFlag;
+    /**
+     * map
+     */
+    private Map<String, Object> map;
+    /**
+     * 子集
+     */
+    private List<ShopWarehouseVo> children; // 新增字段
+}

+ 1 - 1
edu-travel-service/edu-travel-service-country/src/main/java/edu/travel/country/web/BaseCountryController.java

@@ -52,7 +52,7 @@ public class BaseCountryController extends BaseController<BaseCountry> implement
      * 通过id查询国家
      */
     @Override
-    @GetMapping("/getCountryFormId")
+    @GetMapping("/getFormId")
     public RPCBaseResponse<BaseCountryVo> getFormId(String id) {
         RPCBaseResponse<BaseCountry> countryRPCBaseResponse = super.getId(id);
         RPCBaseResponse<BaseCountryVo> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();

+ 5 - 5
edu-travel-service/edu-travel-service-country/src/main/java/edu/travel/country/web/BaseCountryServeController.java

@@ -53,8 +53,8 @@ public class BaseCountryServeController extends BaseController<BaseCountryServe>
      * @return
      */
     @Override
-    @GetMapping("/getCountryServeFormId")
-    public RPCBaseResponse<BaseCountryServeVo> getFormId(String id) {
+    @GetMapping("/getFormId")
+    public RPCBaseResponse<BaseCountryServeVo> getFormId(@RequestParam("id")String id) {
         RPCBaseResponse<BaseCountryServe> baseCountryServeRPCBaseResponse = super.getId(id);
         RPCBaseResponse<BaseCountryServeVo> baseCountryServeVoPRCBaseResponse = new RPCBaseResponse<>();
         BeanUtils.copyProperties(baseCountryServeRPCBaseResponse, baseCountryServeVoPRCBaseResponse);
@@ -68,7 +68,7 @@ public class BaseCountryServeController extends BaseController<BaseCountryServe>
      * @return
      */
     @Override
-    @PostMapping("/updateCountryServeFormId")
+    @PostMapping("/updateFormId")
     public RPCBaseResponse<BaseCountryServeVo> updateTargetFormId(@RequestBody BaseCountryServeDto entity) {
         BaseCountryServe baseCountryServe = new BaseCountryServe();
         BeanUtils.copyProperties(entity, baseCountryServe);
@@ -85,7 +85,7 @@ public class BaseCountryServeController extends BaseController<BaseCountryServe>
      * @return
      */
     @Override
-    @PostMapping("/saveCountryServeForm")
+    @PostMapping("/saveForm")
     public RPCBaseResponse<BaseCountryServeVo> saveFormTarget(@RequestBody BaseCountryServeDto entity) {
         BaseCountryServe baseCountryServe = new BaseCountryServe();
         BeanUtils.copyProperties(entity, baseCountryServe);
@@ -102,7 +102,7 @@ public class BaseCountryServeController extends BaseController<BaseCountryServe>
      * @return
      */
     @Override
-    @PostMapping("/deleteCountryServeFormId")
+    @PostMapping("/deleteFormId")
     public RPCBaseResponse<BaseCountryServeVo> deleteTargetFormId(@RequestBody List<String> ids) {
         RPCBaseResponse<BaseCountryServe> baseCountryServeRPCBaseResponse = super.deleteTargetById(ids);
         RPCBaseResponse<BaseCountryServeVo> baseCountryServeVoRPCBaseResponse = new RPCBaseResponse<>();

+ 5 - 0
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysMenuService.java

@@ -8,6 +8,7 @@ import edu.travel.remote.feign.mode.vo.tenant.SysMenuExtraDataVo;
 import edu.travel.tenant.entity.SysMenu;
 import edu.travel.tenant.entity.SysMenuExtraData;
 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -23,4 +24,8 @@ public interface ISysMenuService extends IService<SysMenu> {
      List<MenuTreeVo> buildMenuTree(List<SysMenu> sysMenuList, List<SysMenuExtraDataVo> menuExtraDataList) ;
 
      List<MenuTreeVo> getMenuTreeListByIds(List<SysMenu> menuList);
+
+    void enableMenuByIds(HashSet<Long> longs);
+
+    void disableMenuByIds(HashSet<Long> longs);
 }

+ 6 - 1
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/ISysRoleService.java

@@ -19,9 +19,14 @@ public interface ISysRoleService extends IService<SysRole> {
 
     void updateRoleAndMenusById( AddOrUpdateRoleDto addOrUpdateRoleDto);
 
-    void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal);
+//    void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal);
 
     void updateMenusToRole(AssignRolesOrMenusDto assignRolesOrMenusDto, EduTenant principal);
 
     List<MenuTreeVo> getMenuTreeByRoleId(Long roleId);
+
+
+    void enableRoleByIds(Set<Long> list);
+
+    void disableRoleByIds(Set<Long> list);
 }

+ 33 - 6
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysMenuServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
 import cn.hutool.core.lang.Snowflake;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import edu.travel.remote.feign.mode.dto.tenant.AddMenuDto;
 import edu.travel.remote.feign.mode.vo.tenant.AddMenuVo;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
@@ -14,6 +15,7 @@ import edu.travel.service.SysServiceImpl;
 import edu.travel.tenant.entity.*;
 import edu.travel.tenant.mapper.SysMenuMapper;
 import edu.travel.tenant.service.*;
+import org.checkerframework.checker.units.qual.A;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Service;
@@ -53,7 +55,7 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
         addMenuDto.getSysMenu().setId(new Snowflake(1, 1).nextId());
         super.save(BeanUtil.copyProperties(addMenuDto.getSysMenu(),SysMenu.class));
         SysMenuExtraData sysMenuExtraData;
-        if (ObjectUtil.isNotEmpty(addMenuDto.getSysMenuExtraData())){
+        if (ObjectUtil.isEmpty(addMenuDto.getSysMenuExtraData())){
             sysMenuExtraData = new SysMenuExtraData();
         }else {
             sysMenuExtraData = BeanUtil.copyProperties(addMenuDto.getSysMenuExtraData(), SysMenuExtraData.class);
@@ -97,14 +99,15 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
     public void updateMenuById(AddMenuDto updateMenuDto) {
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto),"参数不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getId()),"id不能为空");
-        Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenuExtraData().getId()),"id不能为空");
+        Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenuExtraData().getMenuId()),"menuid不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getPath()),"页面路由不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(updateMenuDto.getSysMenu().getComponent()),"组件路径不能为空");
-        SysMenuExtraData extraData = sysMenuExtraDataService.getById(updateMenuDto.getSysMenuExtraData().getId());
-        Assert.isTrue(Objects.equals(extraData.getId(), updateMenuDto.getSysMenuExtraData().getId()),"该附加信息与菜单不匹配");
+        SysMenuExtraData extraData = sysMenuExtraDataService.getOne(new LambdaQueryWrapper<SysMenuExtraData>().eq(SysMenuExtraData::getMenuId, updateMenuDto.getSysMenuExtraData().getMenuId()));
+        Assert.isTrue(Objects.equals(extraData.getMenuId(), updateMenuDto.getSysMenuExtraData().getMenuId()),"该附加信息与菜单不匹配");
         //保存菜单
         super.updateById(BeanUtil.copyProperties(updateMenuDto.getSysMenu(),SysMenu.class));
-        sysMenuExtraDataService.updateById(BeanUtil.copyProperties(updateMenuDto.getSysMenuExtraData(), SysMenuExtraData.class));
+        sysMenuExtraDataService.update(
+                BeanUtil.copyProperties(updateMenuDto.getSysMenuExtraData(), SysMenuExtraData.class),new LambdaQueryWrapper<SysMenuExtraData>().eq(SysMenuExtraData::getMenuId, updateMenuDto.getSysMenuExtraData().getMenuId()));
     }
 
     @Override
@@ -152,7 +155,7 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
 
         // 给菜单附加额外数据
         menuExtraDataList.forEach(extraData -> {
-            MenuTreeVo menuTreeVo = menuMap.get(extraData.getMenuId());
+            MenuTreeVo menuTreeVo = menuMap.get(Long.parseLong(extraData.getMenuId()));
             if (menuTreeVo != null) {
                 menuTreeVo.setExtraData(extraData);
             }
@@ -182,4 +185,28 @@ public class ISysMenuServiceImpl extends SysServiceImpl<SysMenuMapper, SysMenu>
         return treeList;
     }
 
+    @Override
+    public void enableMenuByIds(HashSet<Long> longs) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(longs),"请选择想要删除的菜单");
+        List<SysMenu> list = this.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId,longs));
+        Assert.isFalse(list == null || list.size() != list.size(), "包含不存在的菜单");
+        list.forEach(sysMenu -> {
+            Assert.isFalse(sysMenu.getDeleteFlag() == 0,"包含已删除的菜单");
+            Assert.isFalse(sysMenu.getStatus() == 1,"包含已经启用的菜单");
+        });
+        this.update(new LambdaUpdateWrapper<SysMenu>().set(SysMenu::getStatus,1).in(SysMenu::getId,list));
+    }
+
+    @Override
+    public void disableMenuByIds(HashSet<Long> longs) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(longs),"请选择想要删除的菜单");
+        List<SysMenu> list = this.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId,longs));
+        Assert.isFalse(list == null || list.size() != list.size(), "包含不存在的菜单");
+        list.forEach(sysMenu -> {
+            Assert.isFalse(sysMenu.getDeleteFlag() == 0,"包含已删除的菜单");
+            Assert.isFalse(sysMenu.getStatus() == 0,"包含已经禁用的菜单");
+        });
+        this.update(new LambdaUpdateWrapper<SysMenu>().set(SysMenu::getStatus,0).in(SysMenu::getId,list));
+    }
+
 }

+ 40 - 7
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ISysRoleServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.lang.Assert;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
@@ -111,12 +112,7 @@ public class ISysRoleServiceImpl extends SysServiceImpl<SysRoleMapper, SysRole>
         assign(assignRolesOrMenusDto, principal);
     }
 
-    @Override
-    @Transactional
-    public void assignMenusToRole(AssignRolesOrMenusDto dto, EduTenant principal) {
-        assignRolesToUserValidate(dto);
-        assign(dto,principal);
-    }
+
 
     @Override
     @Transactional
@@ -130,12 +126,49 @@ public class ISysRoleServiceImpl extends SysServiceImpl<SysRoleMapper, SysRole>
     public List<MenuTreeVo> getMenuTreeByRoleId(Long roleId) {
         Assert.isFalse(roleId==null,"参数不能为空");
         Assert.isTrue(ObjectUtil.isNotEmpty(this.getById(roleId)),"该角色不存在");
-        List<Long> longs = sysRoleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId)).stream().map(sysRoleMenu -> sysRoleMenu.getMenuId()).collect(Collectors.toList());
+        List<SysRoleMenu> sysRoleMenus = sysRoleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
+            if (ObjectUtil.isEmpty(sysRoleMenus)){
+            return new ArrayList<>();
+        }
+        List<Long> longs = sysRoleMenus.stream().map(sysRoleMenu -> sysRoleMenu.getMenuId()).collect(Collectors.toList());
         List<SysMenu> list = sysMenuService.list(new LambdaQueryWrapper<SysMenu>().in(SysMenu::getId, longs));
         List<MenuTreeVo> treeVoList = sysMenuService.getMenuTreeListByIds(list);
         return treeVoList;
     }
 
+    @Override
+    public void enableRoleByIds(Set<Long> list) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(list),"请选择角色");
+        Long superRoleId = querySuperRoleId();
+        list.forEach(id->{
+            Assert.isFalse(superRoleId.equals(id),"不能操作超级管理员角色");
+        });
+        List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, list));
+        Assert.isFalse(roleList == null || roleList.size() != list.size(), "包含不存在的角色");
+        roleList.forEach(sysRole -> {
+            Assert.isFalse(sysRole.getDeleteFlag() == 1, "包含已删除角色");
+            Assert.isFalse(sysRole.getStatus() == 1, "包含已经启用的角色");
+        });
+        this.update(new LambdaUpdateWrapper<SysRole>().set(SysRole::getStatus,1).in(SysRole::getId,list));
+
+    }
+
+    @Override
+    public void disableRoleByIds(Set<Long> list) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(list),"请选择角色");
+        Long superRoleId = querySuperRoleId();
+        list.forEach(id->{
+            Assert.isFalse(superRoleId.equals(id),"不能操作超级管理员角色");
+        });
+        List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, list));
+        Assert.isFalse(roleList == null || roleList.size() != list.size(), "包含不存在的角色");
+        roleList.forEach(sysRole -> {
+            Assert.isFalse(sysRole.getDeleteFlag() == 1, "包含已删除角色");
+            Assert.isFalse(sysRole.getStatus() == 0, "包含已经禁用的角色");
+        });
+        this.update(new LambdaUpdateWrapper<SysRole>().set(SysRole::getStatus,0).in(SysRole::getId,list));
+    }
+
     /**
      * 添加或修改角色参数验证 菜单验证
      */

+ 2 - 2
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/service/impl/ITenantServiceImpl.java

@@ -148,8 +148,8 @@ public class ITenantServiceImpl extends SysServiceImpl<EduTenantMapper, EduTenan
     private void validateRoleForAddTenant(AddOrUpdateTenantDto addOrUpdateTenantDto) {
         //角色validate
         if (!addOrUpdateTenantDto.getRoleIds().isEmpty()){
-            List<SysRole> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, addOrUpdateTenantDto.getRoleIds()));
-            Assert.isFalse(roleList == null || roleList.size() != addOrUpdateTenantDto.getRoleIds().size(), "包含不存在的角色");
+            List<Long> roleList = sysRoleService.list(new LambdaQueryWrapper<SysRole>().in(SysRole::getId, addOrUpdateTenantDto.getRoleIds())).stream().map(SysRole::getId).collect(Collectors.toList());
+            Assert.isFalse(roleList.size() != addOrUpdateTenantDto.getRoleIds().size(), "包含不存在的角色");
             Assert.isFalse(addOrUpdateTenantDto.getRoleIds()!=null && BeanUtil.copyToList(roleList,Long.class).contains(querySuperAdmin()),"不能分配超级管理员");
         }
     }

+ 43 - 1
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysMenuController.java

@@ -1,7 +1,9 @@
 package edu.travel.tenant.web;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.remote.feign.mode.dto.tenant.AddMenuDto;
@@ -85,7 +87,7 @@ public class SysMenuController extends BaseController<SysMenu> implements SysMen
 //@PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<List<MenuTreeVo>> getMenuTreeListAll(SysMenuPageDto sysMenuPageDto) {
         IPage<SysMenu> page = new Page<>(sysMenuPageDto.getCurrentPage(), sysMenuPageDto.getPageSize());
-        IPage<SysMenu> sysMenuIPage = sysMenuService.page(page, new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDeleteFlag, 0).like(StringUtils.isNotBlank(sysMenuPageDto.getName()),SysMenu::getName,sysMenuPageDto.getName()));
+        IPage<SysMenu> sysMenuIPage = sysMenuService.page(page, new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getDeleteFlag, 0).like(StringUtils.isNotBlank(sysMenuPageDto.getTitle()),SysMenu::getTitle,sysMenuPageDto.getTitle()));
         List<MenuTreeVo> treeList= sysMenuService.getMenuTreeListAll(sysMenuIPage.getRecords());
         return PageResponse.out(200, "success", treeList, (int) sysMenuIPage.getTotal(), (int) sysMenuIPage.getSize());
     }
@@ -102,4 +104,44 @@ public class SysMenuController extends BaseController<SysMenu> implements SysMen
         return new BaseResponse<>(200,"sucess",true);
     }
 
+    /**
+     * 启用菜单单个
+     * @param id
+     * @return
+     */
+    @PostMapping("/enableMenuSingle")
+    public BaseResponse enableMenuSingle(@RequestParam Long id) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择菜单");
+        sysMenuService.enableMenuByIds(new HashSet<>(Collections.singletonList(id)));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 启用菜单多个
+     */
+    @PostMapping("/enableMenuMulti")
+    public BaseResponse enableMenuMulti(@RequestBody List<Long> ids) {
+        sysMenuService.enableMenuByIds(new HashSet<Long>(ids));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 禁用菜单单个
+     */
+    @PostMapping("/disableMenuSingle")
+    public BaseResponse disableMenuSingle(@RequestParam Long id) {
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择菜单");
+        sysMenuService.disableMenuByIds(new HashSet<>(Collections.singletonList(id)));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
+    /**
+     * 禁用菜单多个
+     */
+    @PostMapping("/disableMenuMulti")
+    public BaseResponse disableMenuMulti(@RequestBody List<Long> ids) {
+        sysMenuService.disableMenuByIds(new HashSet<Long>(ids));
+        return new BaseResponse<>(200,"sucess",true);
+    }
+
 }

+ 136 - 13
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/SysRoleController.java

@@ -1,16 +1,20 @@
 package edu.travel.tenant.web;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.cloud.commons.lang.StringUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import edu.travel.remote.feign.mode.dto.tenant.AddOrUpdateRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.AssignRolesOrMenusDto;
+import edu.travel.remote.feign.mode.dto.tenant.SysRoleDto;
 import edu.travel.remote.feign.mode.dto.tenant.SysRolePageDto;
 import edu.travel.remote.feign.mode.vo.tenant.MenuTreeVo;
 import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
 import edu.travel.resp.BaseResponse;
 import edu.travel.resp.PageResponse;
+import edu.travel.rpc.RPCBaseResponse;
 import edu.travel.tenant.SysRoleRemoteController;
 import edu.travel.tenant.entity.EduTenant;
 import edu.travel.tenant.entity.SysRole;
@@ -21,6 +25,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -42,6 +47,76 @@ public class SysRoleController extends BaseController<SysRole> implements SysRol
     private ISysRoleService sysRoleService;
 
     /**
+     * 通过id查找角色
+     */
+    @GetMapping("/getFormId")
+    public RPCBaseResponse<SysRoleVo> getFormId(@RequestParam("id")String id) {
+        RPCBaseResponse<SysRole> sysRoleRPCBaseResponse = super.getId(id);
+        RPCBaseResponse<SysRoleVo> sysRoleVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtil.copyProperties(sysRoleRPCBaseResponse, sysRoleVoRPCBaseResponse);
+        return sysRoleVoRPCBaseResponse;
+    }
+
+    /**
+     * 更新角色
+     * @param entity
+     * @return
+     */
+    @Override
+    @PostMapping("/updateTargetFormId")
+    public RPCBaseResponse<SysRoleVo> updateTargetFormId(SysRoleDto entity) {
+        SysRole sysRole = new SysRole();
+        BeanUtil.copyProperties(entity, sysRole);
+        RPCBaseResponse<SysRole> sysRoleRPCBaseResponse = super.updateTargetById(sysRole);
+        RPCBaseResponse<SysRoleVo> sysRoleVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtil.copyProperties(sysRoleRPCBaseResponse, sysRoleVoRPCBaseResponse);
+        return sysRoleVoRPCBaseResponse;
+    }
+
+    /**
+     * 新增角色
+     * @param entity
+     * @return
+     */
+    @Override
+    @PostMapping("/saveFormTarget")
+    public RPCBaseResponse<SysRoleVo> saveFormTarget(SysRoleDto entity) {
+        SysRole sysRole = new SysRole();
+        BeanUtil.copyProperties(entity, sysRole);
+        RPCBaseResponse<SysRole> sysRoleRPCBaseResponse = super.saveTarget(sysRole);
+        RPCBaseResponse<SysRoleVo> sysRoleVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtil.copyProperties(sysRoleRPCBaseResponse, sysRoleVoRPCBaseResponse);
+        return sysRoleVoRPCBaseResponse;
+    }
+
+    /**
+     * 删除角色
+     * @param ids
+     * @return
+     */
+    @Override
+    @PostMapping("/deleteTargetFormId")
+    public RPCBaseResponse<SysRoleVo> deleteTargetFormId(List<String> ids) {
+        RPCBaseResponse<SysRole> sysRoleRPCBaseResponse = super.deleteTargetById(ids);
+        RPCBaseResponse<SysRoleVo> sysRoleVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtil.copyProperties(sysRoleRPCBaseResponse, sysRoleVoRPCBaseResponse);
+        return sysRoleVoRPCBaseResponse;
+    }
+
+    /**
+     * 获取角色列表
+     * @return
+     */
+    @Override
+    @GetMapping("/getAllForm")
+    public RPCBaseResponse<List<SysRoleVo>> getAllForm() {
+        RPCBaseResponse<List<SysRole>> sysRoleRPCBaseResponse = super.listAll();
+        RPCBaseResponse<List<SysRoleVo>> sysRoleVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtil.copyProperties(sysRoleRPCBaseResponse, sysRoleVoRPCBaseResponse);
+        return sysRoleVoRPCBaseResponse;
+    }
+
+    /**
      * 新增管理角色并分配菜单
      */
     @PostMapping("/addRoleAndAssignMenus")
@@ -85,21 +160,21 @@ public class SysRoleController extends BaseController<SysRole> implements SysRol
         return new BaseResponse<>(200,"success",true) ;
     }
 
-    /**
-     * 为角色分配菜单
-     * @param dto
-     * @return
-     */
-    @PostMapping("/assignMenusToRole")
-//    @PreAuthorize("hasRole('超级管理员')")
-    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto) {
-        EduTenant principal = (EduTenant) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
-        sysRoleService.assignMenusToRole(dto,principal);
-        return new BaseResponse<>(200,"sucess",true);
-    }
+//    /**
+//     * 为角色分配菜单
+//     * @param dto
+//     * @return
+//     */
+//    @PostMapping("/assignMenusToRole")
+////    @PreAuthorize("hasRole('超级管理员')")
+//    public BaseResponse<Boolean> assignMenusToRole(@RequestBody AssignRolesOrMenusDto dto) {
+//        EduTenant principal = (EduTenant) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+//        sysRoleService.assignMenusToRole(dto,principal);
+//        return new BaseResponse<>(200,"sucess",true);
+//    }
 
     /**
-     * 更新角色菜单
+     * 为角色分配菜单
      * @param assignRolesOrMenusDto
      * @return
      */
@@ -137,4 +212,52 @@ public class SysRoleController extends BaseController<SysRole> implements SysRol
         List<MenuTreeVo> menuTreeVos = sysRoleService.getMenuTreeByRoleId(roleId);
         return PageResponse.out(200, "success", menuTreeVos);
     }
+
+    /**
+     * 启用单个角色
+     * @param id
+     * @return
+     */
+    @PostMapping("/enableRoleSingle")
+    public BaseResponse enableRoleSingle(@RequestParam Long id){
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择角色");
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
+        sysRoleService.enableRoleByIds(list);
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 启用多个角色
+     * @param ids
+     * @return
+     */
+    @PostMapping("/enableRoleMulti")
+    public BaseResponse enableRoleMulti(@RequestBody List<Long> ids){
+        sysRoleService.enableRoleByIds(new HashSet<Long>(ids));
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 禁用单个角色
+     * @param id
+     * @return
+     */
+    @PostMapping("/disableRoleSingle")
+    public BaseResponse disableRoleSingle(@RequestParam Long id){
+        Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择角色");
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
+        sysRoleService.disableRoleByIds(list);
+        return PageResponse.out(200,"success",true);
+    }
+
+    /**
+     * 禁用多个角色
+     * @param ids
+     * @return
+     */
+    @PostMapping("/disableRoleMulti")
+    public BaseResponse disableRoleMulti(@RequestBody List<Long> ids){
+        sysRoleService.disableRoleByIds(new HashSet<Long>(ids));
+        return PageResponse.out(200,"success",true);
+    }
 }

+ 95 - 21
edu-travel-service/edu-travel-service-tenement/src/main/java/edu/travel/tenant/web/TenantController.java

@@ -23,6 +23,7 @@ import edu.travel.tenant.entity.SysUserRole;
 import edu.travel.tenant.service.ISysUserRoleService;
 import edu.travel.tenant.service.ITenantService;
 import edu.travel.web.BaseController;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.core.context.SecurityContextHolder;
@@ -114,7 +115,7 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
      */
     @GetMapping("/getTenantById")
 ////    @PreAuthorize("hasRole('超级管理员')")
-    public RPCBaseResponse<EduTenantVo> getTenantById(Long id) {
+    public RPCBaseResponse<EduTenantVo> getTenantById(@RequestParam("id")Long id) {
         EduTenant tenant = tenantService.getTenantById(id);
         EduTenantVo eduTenantVo = BeanUtil.copyProperties(tenant, EduTenantVo.class);
         return success(eduTenantVo);
@@ -155,24 +156,26 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
         LambdaQueryWrapper<EduTenant> queryWrapper = new LambdaQueryWrapper<EduTenant>()
                 .eq(EduTenant::getDeleteFlag, 0)
                 .eq(tenantDto.getId() != null, EduTenant::getId, tenantDto.getId())
-                .like(tenantDto.getTenantName() != null && !tenantDto.getTenantName().isEmpty(), EduTenant::getTenantName, tenantDto.getTenantName());
+                .eq(tenantDto.getUserStatus() != null, EduTenant::getUserStatus, tenantDto.getUserStatus())
+                .like(tenantDto.getTenantName() != null && !tenantDto.getTenantName().isEmpty(), EduTenant::getTenantName, tenantDto.getTenantName())
+                .like(tenantDto.getTenantPhone() != null && !tenantDto.getTenantPhone().isEmpty(), EduTenant::getTenantPhone, tenantDto.getTenantPhone());
         IPage<EduTenant> tenantIPage = tenantService.dictMapPage(page, queryWrapper);
         List<EduTenantVo> eduTenantVos = BeanUtil.copyToList(tenantIPage.getRecords(), EduTenantVo.class);
-        List<String> userIds = eduTenantVos.stream().map(EduTenantVo::getId).collect(Collectors.toList());
-        List<SysUserRole> roleList = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
-                .in(SysUserRole::getUserId, userIds));
-        Map<Long, List<Long>> userRolesMap = roleList.stream()
-                .collect(Collectors.groupingBy(
-                        SysUserRole::getUserId,
-                        Collectors.mapping(SysUserRole::getRoleId, Collectors.toList())
-                ));
-        eduTenantVos.forEach(eduTenantVo -> {
-            List<Long> roleIds = userRolesMap.get(eduTenantVo.getId());
-            if (roleIds != null) {
-                eduTenantVo.setRoleIdList(roleIds);
-            }
-        });
-
+        if (eduTenantVos!=null && !eduTenantVos.isEmpty()) {
+            List<String> userIds = eduTenantVos.stream().map(EduTenantVo::getId).collect(Collectors.toList());
+            List<SysUserRole> roleList = sysUserRoleService.list(new LambdaQueryWrapper<SysUserRole>()
+                    .in(SysUserRole::getUserId, userIds));
+            Map<Long, List<Long>> userRolesMap = roleList.stream()
+                    .collect(Collectors.groupingBy(
+                            SysUserRole::getUserId,
+                            Collectors.mapping(SysUserRole::getRoleId, Collectors.toList())
+                    ));
+            eduTenantVos.forEach(eduTenantVo -> {
+                List<Long> roleIds = userRolesMap.get(Long.parseLong(eduTenantVo.getId()));
+                List<String> list = BeanUtil.copyToList(roleIds, String.class);
+                eduTenantVo.setRoleIds(list);
+            });
+        }
         return PageResponse.out(200, "success", eduTenantVos, (int) tenantIPage.getTotal(), (int) tenantIPage.getSize());
     }
 
@@ -249,8 +252,7 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> disableTenantById(Long id) {
         Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择用户");
-        Set<Long> list = new HashSet<>();
-        list.add(id);
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
         tenantService.disableTenantByIds(list);
         return PageResponse.out(200, "success", true);
     }
@@ -265,8 +267,7 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
 //    @PreAuthorize("hasRole('超级管理员')")
     public BaseResponse<Boolean> enableTenantById(Long id) {
         Assert.isTrue(ObjectUtil.isNotEmpty(id), "请选择用户");
-        Set<Long> list = new HashSet<>();
-        list.add(id);
+        Set<Long> list = new HashSet<>(Collections.singletonList(id));
         tenantService.enableTenantByIds(list);
         return PageResponse.out(200, "success", true);
     }
@@ -296,5 +297,78 @@ public class TenantController  extends BaseController<EduTenant> implements Tena
         tenantService.disableTenantByIds(new HashSet<>(ids));
         return PageResponse.out(200, "success", true);
     }
+
+    /**
+     * 通过id查询用户
+     * @param id
+     * @return
+     */
+    @Override
+    @GetMapping("/getFormId")
+    public RPCBaseResponse<EduTenantVo> getFormId(String id) {
+        RPCBaseResponse<EduTenant> countryRPCBaseResponse = super.getId(id);
+        RPCBaseResponse<EduTenantVo> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
+        return baseCountryVoRPCBaseResponse;
+    }
+
+    /**
+     * 更新用户
+     * @param entity
+     * @return
+     */
+    @Override
+    @PostMapping("/updateTargetFormId")
+    public RPCBaseResponse<EduTenantVo> updateTargetFormId(AddOrUpdateTenantDto entity) {
+        EduTenant eduTenant = new EduTenant();
+        BeanUtils.copyProperties(entity, eduTenant);
+        RPCBaseResponse<EduTenant> countryRPCBaseResponse = super.updateTargetById(eduTenant);
+        RPCBaseResponse<EduTenantVo> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
+        return baseCountryVoRPCBaseResponse;
+    }
+
+    /**
+     * 新增用户
+     * @param entity
+     * @return
+     */
+    @Override
+    @PostMapping("/saveFormTarget")
+    public RPCBaseResponse<EduTenantVo> saveFormTarget(AddOrUpdateTenantDto entity) {
+        EduTenant eduTenant = new EduTenant();
+        BeanUtils.copyProperties(entity, eduTenant);
+        RPCBaseResponse<EduTenant> countryRPCBaseResponse = super.saveTarget(eduTenant);
+        RPCBaseResponse<EduTenantVo> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
+        return baseCountryVoRPCBaseResponse;
+    }
+
+    /**
+     * 删除用户
+     * @param ids
+     * @return
+     */
+    @Override
+    @PostMapping("/deleteTargetFormId")
+    public RPCBaseResponse<EduTenantVo> deleteTargetFormId(List<String> ids) {
+        RPCBaseResponse<EduTenant> countryRPCBaseResponse = super.deleteTargetById(ids);
+        RPCBaseResponse<EduTenantVo> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
+        return baseCountryVoRPCBaseResponse;
+    }
+
+    /**
+     * 获取用户列表
+     * @return
+     */
+    @Override
+    @GetMapping("/getAllForm")
+    public RPCBaseResponse<List<EduTenantVo>> getAllForm() {
+        RPCBaseResponse<List<EduTenant>> countryRPCBaseResponse = super.listAll();
+        RPCBaseResponse<List<EduTenantVo>> baseCountryVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(countryRPCBaseResponse, baseCountryVoRPCBaseResponse);
+        return baseCountryVoRPCBaseResponse;
+    }
 }
 

+ 3 - 0
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/WarehouseApplication.java

@@ -5,11 +5,14 @@ import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.cloud.openfeign.FeignClient;
 
 @SpringBootApplication
 @EnableDiscoveryClient
 @MapperScan("edu.travel.warehouse.mapper")
 @EnableRedisCache
+@EnableFeignClients//确保扫描到FeignClient注解
 public class WarehouseApplication {
     public static void main(String[] args) {
         SpringApplication.run(WarehouseApplication.class, args);

+ 2 - 2
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/entity/ShopWarehouse.java

@@ -50,8 +50,8 @@ public class ShopWarehouse {
     /**
      * 国家ID
      */
-    @TableField(value = "country_id")
-    private String countryId;
+    @TableField(value = "country_serve_id")
+    private String countryServeId;
 
     /**
      * 库房详细地址

+ 52 - 0
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/mapper/ShopWarehouseMapper.java

@@ -1,7 +1,59 @@
 package edu.travel.warehouse.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import edu.travel.vo.ShopWarehouseVo;
 import edu.travel.warehouse.entity.ShopWarehouse;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 public interface ShopWarehouseMapper extends BaseMapper<ShopWarehouse> {
+        @Select({
+                "<script>",
+                "SELECT sw.*, bcs.* FROM shop_warehouse sw ",
+                "LEFT JOIN base_country_serve bcs ON sw.country_serve_id = bcs.id ",
+                "WHERE 1=1 ",
+                "<if test='warehouseName != null and warehouseName != \"\"'>",
+                "AND sw.warehouse_name LIKE CONCAT('%', #{warehouseName}, '%') ",
+                "</if>",
+                "<if test='status != null'>",
+                "AND sw.status = #{status} ",
+                "</if>",
+                "<if test='parentId != null'>",
+                "AND sw.parent_id = #{parentId} ",
+                "</if>",
+                "AND sw.delete_flag = 0 ",
+                "LIMIT #{pageSize} OFFSET #{offset}",
+                "</script>"
+        })
+        List<ShopWarehouseVo> selectWarehouseWithCountry(
+                @Param("warehouseName") String warehouseName,
+                @Param("status") Integer status,
+                @Param("parentId") Long parentId,
+                @Param("pageSize") int pageSize,
+                @Param("offset") int offset
+        );
+
+        @Select({
+                "<script>",
+                "SELECT COUNT(*) FROM shop_warehouse sw WHERE sw.delete_flag = 0 ",
+                "<if test='warehouseName != null and warehouseName != \"\"'>",
+                "AND sw.warehouse_name LIKE CONCAT('%', #{warehouseName}, '%') ",
+                "</if>",
+                "<if test='status != null'>",
+                "AND sw.status = #{status} ",
+                "</if>",
+                "<if test='parentId != null'>",
+                "AND sw.parent_id = #{parentId} ",
+                "</if>",
+                "</script>"
+        })
+        int countWarehouseWithCountry(
+                @Param("warehouseName") String warehouseName,
+                @Param("status") Integer status,
+                @Param("parentId") Long parentId
+        );
+
+
 }

+ 13 - 0
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/ShopWarehouseService.java

@@ -1,8 +1,21 @@
 package edu.travel.warehouse.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
+import edu.travel.dto.ShopWarehouseDto;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.vo.ShopWarehouseStaffVo;
+import edu.travel.vo.ShopWarehouseVo;
 import edu.travel.warehouse.entity.ShopWarehouse;
 
+import java.util.List;
+
 public interface ShopWarehouseService extends IService<ShopWarehouse> {
+    //树形结构查询(连表)
+    RPCBaseResponse<List<ShopWarehouseVo>> getWarehouseCountryForm(ShopWarehouseDto dto);
+//分页动态查询(连表)
+    RPCBaseResponse<IPage<ShopWarehouseVo>> getWarehouseCountryPageForm(ShopWarehouseDto dto);
 
+    //库房关联人员(角色)查询
+    RPCBaseResponse<List<ShopWarehouseStaffVo>> getWarehouseTenantRole(String id);
 }

+ 0 - 10
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseService.java

@@ -1,10 +0,0 @@
-package edu.travel.warehouse.service.impl;
-
-import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import edu.travel.warehouse.mapper.ShopWarehouseMapper;
-import edu.travel.warehouse.entity.ShopWarehouse;
-@Service
-public class ShopWarehouseService extends ServiceImpl<ShopWarehouseMapper, ShopWarehouse> {
-
-}

+ 251 - 0
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseServiceImpl.java

@@ -0,0 +1,251 @@
+package edu.travel.warehouse.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import edu.travel.adapter.service.country.CountryAdapter;
+import edu.travel.adapter.service.tenant.SysRoleAdapter;
+import edu.travel.adapter.service.tenant.TenantAdapter;
+import edu.travel.dto.ShopWarehouseDto;
+import edu.travel.remote.feign.mode.vo.tenant.EduTenantVo;
+import edu.travel.remote.feign.mode.vo.tenant.SysRoleVo;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.service.SysServiceImpl;
+import edu.travel.vo.BaseCountryServeVo;
+import edu.travel.vo.ShopWarehouseStaffVo;
+import edu.travel.vo.ShopWarehouseVo;
+import edu.travel.warehouse.entity.ShopWarehouse;
+import edu.travel.warehouse.entity.ShopWarehouseStaff;
+import edu.travel.warehouse.mapper.ShopWarehouseMapper;
+import edu.travel.warehouse.mapper.ShopWarehouseStaffMapper;
+import edu.travel.warehouse.service.ShopWarehouseService;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+public class ShopWarehouseServiceImpl extends SysServiceImpl<ShopWarehouseMapper, ShopWarehouse> implements ShopWarehouseService {
+    @Autowired
+    private CountryAdapter countryAdapter;
+    @Autowired
+    private TenantAdapter tenantAdapter;
+    @Autowired
+    private SysRoleAdapter sysRoleAdapter;
+    @Autowired
+    private ShopWarehouseMapper shopWarehouseMapper;
+    @Autowired
+    private ShopWarehouseStaffMapper shopWarehouseStaffMapper;
+    /**
+     * 树形结构查询(连表)
+     * @param dto
+     * @return
+     */
+    @Override
+    public RPCBaseResponse<List<ShopWarehouseVo>> getWarehouseCountryForm(ShopWarehouseDto dto) {
+        // 查询所有库房数据
+        LambdaQueryWrapper<ShopWarehouse> queryWrapper = new LambdaQueryWrapper<>();
+        List<ShopWarehouse> shopWarehouseList = super.getListLink(queryWrapper);
+
+        // 提取国家服务ID
+        Set<String> countryServeIds = shopWarehouseList.stream()
+                .map(ShopWarehouse::getCountryServeId)
+                .collect(Collectors.toSet());
+
+        // 创建一个 Map 以便通过 countryServeId 查询到对应的国家数据
+        Map<String, BaseCountryServeVo> baseCountryServeVoMap = new HashMap<>();
+        if (!countryServeIds.isEmpty()) {
+            // 使用 getFormId 方法查询国家信息
+            for (String countryServeId : countryServeIds) {
+                RPCBaseResponse<BaseCountryServeVo> response = countryAdapter.getFormId(countryServeId);
+                if (response != null && response.getData() != null) {
+                    baseCountryServeVoMap.put(countryServeId, response.getData());
+                }
+            }
+        }
+
+        // 创建一个 Map 用于快速查找每个仓库的父子关系
+        Map<Long, ShopWarehouseVo> warehouseVoMap = new HashMap<>();
+        List<ShopWarehouseVo> tree = new ArrayList<>();
+
+        // 一次性处理以创建树形结构
+        for (ShopWarehouse shopWarehouse : shopWarehouseList) {
+            ShopWarehouseVo shopWarehouseVo = new ShopWarehouseVo();
+            shopWarehouseVo.setId(shopWarehouse.getId());
+            shopWarehouseVo.setCountryServeId(shopWarehouse.getCountryServeId());
+            shopWarehouseVo.setWarehouseName(shopWarehouse.getWarehouseName());
+            shopWarehouseVo.setLongitude(shopWarehouse.getLongitude());
+            shopWarehouseVo.setLatitude(shopWarehouse.getLatitude());
+            shopWarehouseVo.setDetailedAddress(shopWarehouse.getDetailedAddress());
+            shopWarehouseVo.setStatus(shopWarehouse.getStatus());
+            shopWarehouseVo.setParentId(shopWarehouse.getParentId());
+            shopWarehouseVo.setDeleteFlag(shopWarehouse.getDeleteFlag());
+            shopWarehouseVo.setMap(new HashMap<>());
+
+            // 将国家信息放入 Map 中
+            if (baseCountryServeVoMap.containsKey(shopWarehouse.getCountryServeId())) {
+                shopWarehouseVo.getMap().put("countryServe", baseCountryServeVoMap.get(shopWarehouse.getCountryServeId()));
+            }
+
+            // 存储到 warehouseVoMap
+            warehouseVoMap.put(shopWarehouse.getId(), shopWarehouseVo);
+
+            // 添加到树或其父节点
+            if (shopWarehouse.getParentId() == null || shopWarehouse.getParentId() == 0) {
+                // 顶级节点
+                tree.add(shopWarehouseVo);
+            } else {
+                // 非顶级节点,查找其父节点并添加到 children
+                ShopWarehouseVo parentVo = warehouseVoMap.get(shopWarehouse.getParentId());
+                if (parentVo != null) {
+                    if (parentVo.getChildren() == null) {
+                        parentVo.setChildren(new ArrayList<>());
+                    }
+                    parentVo.getChildren().add(shopWarehouseVo);
+                }
+            }
+        }
+
+        // 返回树形结构
+        return new RPCBaseResponse<>(200, "SUCCESS", tree);
+    }
+
+    /**
+     * 分页动态查询(连表)
+     * @param dto
+     * @return
+     */
+    @Override
+    public RPCBaseResponse<IPage<ShopWarehouseVo>> getWarehouseCountryPageForm(ShopWarehouseDto dto) {
+        // 创建分页对象
+        Page<ShopWarehouseVo> shopWarehousePage = new Page<>(dto.getCurrentPage(), dto.getPageSize());
+
+        // 计算 OFFSET
+        int offset = (int) ((dto.getCurrentPage() - 1) * dto.getPageSize());
+
+        // 创建查询包装器
+        LambdaQueryWrapper<ShopWarehouse> queryWrapper = new LambdaQueryWrapper<>();
+
+        // 动态添加查询条件
+        if (dto.getWarehouseName() != null && !dto.getWarehouseName().isEmpty()) {
+            queryWrapper.like(ShopWarehouse::getWarehouseName, dto.getWarehouseName());
+        }
+        if (dto.getCreateTime() != null) {
+            queryWrapper.ge(ShopWarehouse::getCreateTime, dto.getCreateTime());
+        }
+        if (dto.getParentId() != null) {
+            queryWrapper.eq(ShopWarehouse::getParentId, dto.getParentId());
+        }
+        if (dto.getDetailedAddress() != null && !dto.getDetailedAddress().isEmpty()) {
+            queryWrapper.like(ShopWarehouse::getDetailedAddress, dto.getDetailedAddress());
+        }
+        if (dto.getStatus() != null) {
+            queryWrapper.eq(ShopWarehouse::getStatus, dto.getStatus());
+        }
+        queryWrapper.eq(ShopWarehouse::getDeleteFlag, 0); // 查询未删除的记录
+
+        // 执行查询,获取分页的库房数据
+        List<ShopWarehouseVo> warehouseList = shopWarehouseMapper.selectWarehouseWithCountry(
+                dto.getWarehouseName(),
+                dto.getStatus(),
+                dto.getParentId(),
+                dto.getPageSize(),
+                offset
+        );
+
+        // 计算总记录数
+        int total = shopWarehouseMapper.countWarehouseWithCountry(dto.getWarehouseName(), dto.getStatus(), dto.getParentId());
+
+        // 创建新的分页对象用于存储 ShopWarehouseVo
+        IPage<ShopWarehouseVo> pageVoLink = new Page<>();
+        pageVoLink.setRecords(warehouseList); // 设置转换后的记录列表
+        pageVoLink.setTotal(total); // 设置总条数
+        pageVoLink.setCurrent(shopWarehousePage.getCurrent()); // 设置当前页
+        pageVoLink.setSize(shopWarehousePage.getSize()); // 设置每页大小
+
+        // 封装返回
+        return new RPCBaseResponse<>(200, "SUCCESS", pageVoLink);
+    }
+
+    /**
+     * 库房关联人员(角色)查询
+     * @return
+     */
+    @Override
+    public RPCBaseResponse<List<ShopWarehouseStaffVo>> getWarehouseTenantRole(String id) {
+        // 查询所有库房扩展数据
+        LambdaQueryWrapper<ShopWarehouseStaff> queryWrapper = new LambdaQueryWrapper<>();
+        List<ShopWarehouseStaff> shopWarehouseStaffList = shopWarehouseStaffMapper.selectList(queryWrapper);
+
+        // 提取用户id和角色id
+        List<Long> userIdList = shopWarehouseStaffList.stream()
+                .filter(staff -> staff.getWarehouseId().toString().equals(id))
+                .map(ShopWarehouseStaff::getUserId)
+                .collect(Collectors.toList());
+
+        List<Long> roleIdList = shopWarehouseStaffList.stream()
+                .filter(staff -> staff.getWarehouseId().toString().equals(id))
+                .map(ShopWarehouseStaff::getRoleId)
+                .collect(Collectors.toList());
+
+        // 创建 map 以便通过 userId 和 roleId 查询出用户和角色信息
+        Map<Long, EduTenantVo> tenantMap = new HashMap<>();
+        if (!userIdList.isEmpty()) {
+            for (Long userId : userIdList) {
+                RPCBaseResponse<EduTenantVo> tenantVoRPCBaseResponse = tenantAdapter.getTenantById(userId);
+                if (tenantVoRPCBaseResponse != null && tenantVoRPCBaseResponse.getData() != null) {
+                    tenantMap.put(userId, tenantVoRPCBaseResponse.getData());
+                }
+            }
+        }
+
+        Map<Long, SysRoleVo> roleMap = new HashMap<>();
+        if (!roleIdList.isEmpty()) {
+            for (Long roleId : roleIdList) {
+                RPCBaseResponse<SysRoleVo> roleVoRPCBaseResponse = sysRoleAdapter.getFormId(String.valueOf(roleId));
+                if (roleVoRPCBaseResponse != null && roleVoRPCBaseResponse.getData() != null) {
+                    roleMap.put(roleId, roleVoRPCBaseResponse.getData());
+                }
+
+            }
+        }
+
+        // 组合结果
+        List<ShopWarehouseStaffVo> resultList = new ArrayList<>();
+        for (ShopWarehouseStaff staff : shopWarehouseStaffList) {
+            if (staff.getWarehouseId().toString().equals(id)) {
+                Long userId = staff.getUserId();
+                Long roleId = staff.getRoleId();
+
+                EduTenantVo user = tenantMap.get(userId);
+                SysRoleVo role = roleMap.get(roleId);
+
+                // 封装用户和角色信息
+                ShopWarehouseStaffVo result = new ShopWarehouseStaffVo();
+                result.setUserId(userId);
+                result.setRoleId(roleId);
+                result.setWarehouseId(staff.getWarehouseId());
+
+                if (user != null) {
+                    result.setTenantSurname(user.getTenantSurname());
+                    result.setTenantName(user.getTenantName());
+                }
+
+                if (role != null) {
+                    result.setRoleId(roleId);
+                    result.setName(role.getName());
+                }
+
+                resultList.add(result);
+            }
+        }
+
+        // 返回成功响应
+        return new RPCBaseResponse<>(200, "SUCCESS", resultList);
+    }
+
+
+
+}

+ 1 - 1
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseStaffService.java → edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/service/impl/ShopWarehouseStaffServiceImpl.java

@@ -5,6 +5,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import edu.travel.warehouse.mapper.ShopWarehouseStaffMapper;
 import edu.travel.warehouse.entity.ShopWarehouseStaff;
 @Service
-public class ShopWarehouseStaffService extends ServiceImpl<ShopWarehouseStaffMapper, ShopWarehouseStaff> {
+public class ShopWarehouseStaffServiceImpl extends ServiceImpl<ShopWarehouseStaffMapper, ShopWarehouseStaff> {
 
 }

+ 108 - 3
edu-travel-service/edu-travel-service-warehouse/src/main/java/edu/travel/warehouse/web/ShopWarehouseController.java

@@ -1,13 +1,118 @@
 package edu.travel.warehouse.web;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import edu.travel.dto.ShopWarehouseDto;
+import edu.travel.remote.ShopWarehouseRemoteController;
+import edu.travel.rpc.RPCBaseResponse;
+import edu.travel.vo.ShopWarehouseStaffVo;
+import edu.travel.vo.ShopWarehouseVo;
 import edu.travel.warehouse.entity.ShopWarehouse;
+import edu.travel.warehouse.service.ShopWarehouseService;
 import edu.travel.web.BaseController;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
+/**
+ * 库房表
+ */
 
 @RestController
 @RequestMapping("/shopWarehouse")
-public class ShopWarehouseController extends BaseController<ShopWarehouse> {
+public class ShopWarehouseController extends BaseController<ShopWarehouse> implements ShopWarehouseRemoteController {
+    /**
+     * 库房表控制层
+     */
+    @Autowired
+    private ShopWarehouseService shopWarehouseService;
+
+    /**
+     * 树形结构查询(连表)
+     */
+    @GetMapping("/getWarehouseCountryForm")
+    public RPCBaseResponse<List<ShopWarehouseVo>> getWarehouseCountryForm(ShopWarehouseDto dto) {
+        return shopWarehouseService.getWarehouseCountryForm(dto);
+    }
+
+    /**
+     * 分页动态查询(连表)
+     */
+    @GetMapping("/getWarehouseCountryPage")
+    public RPCBaseResponse<IPage<ShopWarehouseVo>> getWarehouseCountryPage(ShopWarehouseDto dto) {
+        return shopWarehouseService.getWarehouseCountryPageForm(dto);
+    }
+
+    /**
+     * 库房关联人员(角色)查询
+     */
+    @GetMapping("/getWarehouseTenantRole")
+    public RPCBaseResponse<List<ShopWarehouseStaffVo>> getWarehouseTenantRole(String id) {
+        return shopWarehouseService.getWarehouseTenantRole(id);
+    }
+
+    /**
+     * 查询库房详情
+     */
+    @Override
+    @GetMapping("/getWarehouseFormId")
+    public RPCBaseResponse<ShopWarehouseVo> getFormId(String id) {
+        RPCBaseResponse<ShopWarehouse> shopWarehouseRPCBaseResponse = super.getId(id);
+        RPCBaseResponse<ShopWarehouseVo> shopWarehouseVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(shopWarehouseRPCBaseResponse, shopWarehouseVoRPCBaseResponse);
+        return shopWarehouseVoRPCBaseResponse;
+    }
+
+    /**
+     * 更新库房信息
+     */
+    @Override
+    @PostMapping("/updateWarehouseFormId")
+    public RPCBaseResponse<ShopWarehouseVo> updateTargetFormId(@RequestBody ShopWarehouseDto entity) {
+        ShopWarehouse shopWarehouse = new ShopWarehouse();
+        BeanUtils.copyProperties(entity, shopWarehouse);
+        RPCBaseResponse<ShopWarehouse> shopWarehouseRPCBaseResponse = super.updateTargetById(shopWarehouse);
+        RPCBaseResponse<ShopWarehouseVo> shopWarehouseVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(shopWarehouseRPCBaseResponse, shopWarehouseVoRPCBaseResponse);
+        return shopWarehouseVoRPCBaseResponse;
+    }
+
+    /**
+     * 新增库房信息
+     */
+    @Override
+    @PostMapping("/saveWarehouseForm")
+    public RPCBaseResponse<ShopWarehouseVo> saveFormTarget(@RequestBody ShopWarehouseDto entity) {
+        ShopWarehouse shopWarehouse = new ShopWarehouse();
+        BeanUtils.copyProperties(entity, shopWarehouse);
+        RPCBaseResponse<ShopWarehouse> shopWarehouseRPCBaseResponse = super.saveTarget(shopWarehouse);
+        RPCBaseResponse<ShopWarehouseVo> shopWarehouseVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(shopWarehouseRPCBaseResponse, shopWarehouseVoRPCBaseResponse);
+        return shopWarehouseVoRPCBaseResponse;
+    }
+
+    /**
+     * 删除库房信息
+     */
+    @Override
+    @PostMapping("/deleteWarehouseFormId")
+    public RPCBaseResponse<ShopWarehouseVo> deleteTargetFormId(@RequestBody List<String> ids) {
+        RPCBaseResponse<ShopWarehouse> shopWarehouseRPCBaseResponse = super.deleteTargetById(ids);
+        RPCBaseResponse<ShopWarehouseVo> shopWarehouseVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(shopWarehouseRPCBaseResponse, shopWarehouseVoRPCBaseResponse);
+        return shopWarehouseVoRPCBaseResponse;
+    }
 
+    /**
+     * 查询所有库房信息
+     */
+    @Override
+    @GetMapping("/getWarehouseForm")
+    public RPCBaseResponse<List<ShopWarehouseVo>> getAllForm() {
+        RPCBaseResponse<List<ShopWarehouse>> shopWarehouseRPCBaseResponse = super.listAll();
+        RPCBaseResponse<List<ShopWarehouseVo>> shopWarehouseVoRPCBaseResponse = new RPCBaseResponse<>();
+        BeanUtils.copyProperties(shopWarehouseRPCBaseResponse, shopWarehouseVoRPCBaseResponse);
+        return shopWarehouseVoRPCBaseResponse;
+    }
 }

+ 18 - 0
pom.xml

@@ -185,4 +185,22 @@
 
     </dependencies>
   </dependencyManagement>
+
+  <build>
+    <pluginManagement> <!-- 使用 pluginManagement 确保子模块继承插件配置 -->
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>3.8.1</version>
+          <configuration>
+            <source>1.8</source>
+            <target>1.8</target>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+
 </project>