TRX 1 jaar geleden
bovenliggende
commit
1304608e87

+ 10 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationModel.java

@@ -50,4 +50,14 @@ public class OrganizationModel extends SuperModel {
 
     @Schema(description = "状态")
     private OrganizationState state;
+
+    private String stateStr;
+
+    public String getStateStr(){
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
 }

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSearch.java

@@ -1,5 +1,6 @@
 package com.zhongshu.card.client.model.org;
 
+import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.SuperSearch;
 import com.zhongshu.card.client.utils.type.UserState;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -29,4 +30,7 @@ public class OrganizationUserSearch extends SuperSearch {
 
     @Schema(description = "是否是企业管理员")
     private Boolean isAdmin;
+
+    @Schema(description = "企业类型")
+    private AuthType authType;
 }

+ 4 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/org/OrganizationService.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
+import java.util.List;
+
 public interface OrganizationService {
 
     public ResultContent addOrganization(OrganizationAddParam param);
@@ -25,6 +27,8 @@ public interface OrganizationService {
 
     public ResultContent<Page<OrganizationModel>> pageProject(OrganizationSearchParam param, Pageable pageable);
 
+    public ResultContent<List<OrganizationModel>> getUserOrgList(OrganizationUserSearch param);
+
     public ResultContent buildCode(AuthType authType);
 
     ResultContent initSuperOrganization();

+ 70 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/IndexController.java

@@ -1,22 +1,37 @@
 package com.zhongshu.card.server.core.controller.org;
 
+import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.client.model.LoginTokenModel;
+import com.github.microservice.auth.security.annotations.ResourceAuth;
+import com.github.microservice.auth.security.helper.AuthHelper;
+import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.org.LoginParam;
+import com.zhongshu.card.client.model.org.OrganizationModel;
+import com.zhongshu.card.client.model.org.OrganizationSearchParam;
+import com.zhongshu.card.client.model.org.OrganizationUserSearch;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.ret.ResultState;
+import com.zhongshu.card.client.service.org.OrganizationService;
+import com.zhongshu.card.client.utils.type.UserState;
 import com.zhongshu.card.server.core.service.org.IndexService;
 import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.Cookie;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.web.PageableDefault;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/6/4
@@ -29,6 +44,12 @@ public class IndexController {
     @Autowired
     IndexService indexService;
 
+    @Autowired
+    OrganizationService organizationService;
+
+    @Autowired
+    AuthHelper authHelper;
+
     /**
      * 登录
      *
@@ -38,7 +59,6 @@ public class IndexController {
     @Operation(summary = "登录--web端登录使用", description = "登录--web端登录使用")
     @RequestMapping(value = "login", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
     public ResultContent login(@RequestBody LoginParam param, HttpServletRequest request, HttpServletResponse response) {
-
         ResultContent result = indexService.login(param);
         if (result != null && result.getState() == ResultState.Success) {
             LoginTokenModel tokenModel = (LoginTokenModel) result.getContent();
@@ -52,4 +72,53 @@ public class IndexController {
         return result;
     }
 
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的平台数据列表", description = "查询用户加入的 平台数据列表")
+    @RequestMapping(value = {"getUserPlatform"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserPlatform() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Platform);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 项目数据列表", description = "查询用户加入的 项目数据列表")
+    @RequestMapping(value = {"getUserProject"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserProject() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Project);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 学校数据列表", description = "查询用户加入的 学校数据列表")
+    @RequestMapping(value = {"getUserSchool"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserSchool() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.School);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 商家数据列表", description = "查询用户加入的 商家数据列表")
+    @RequestMapping(value = {"getUserShop"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserShop() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Shop);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
+
+    @ResourceAuth(value = "user",type = AuthType.User)
+    @Operation(summary = "查询用户加入的 企业数据列表", description = "查询用户加入的 企业数据列表")
+    @RequestMapping(value = {"getUserEnterprise"}, method = {RequestMethod.GET})
+    public ResultContent<List<OrganizationModel>> getUserEnterprise() {
+        OrganizationUserSearch param = new OrganizationUserSearch();
+        param.setAuthType(AuthType.Enterprise);
+        param.setState(UserState.Normal);
+        return organizationService.getUserOrgList(param);
+    }
 }

+ 7 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/org/OrganizationUserDao.java

@@ -1,12 +1,16 @@
 package com.zhongshu.card.server.core.dao.org;
 
+import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.mongo.mongo.dao.MongoDao;
 import com.zhongshu.card.client.utils.type.OrganizationState;
+import com.zhongshu.card.client.utils.type.UserState;
 import com.zhongshu.card.server.core.dao.org.extend.OrganizationUserDaoExtend;
 import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/3/21
@@ -25,4 +29,7 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
     long countByUserAndState(UserAccount user, OrganizationState state);
 
     void deleteByOrganization(Organization organization);
+
+    // 查询用户所在结构
+    List<OrganizationUser> findByUserAndAuthTypeAndState(UserAccount userAccount, AuthType authType, UserState state);
 }

+ 30 - 3
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationServiceImpl.java

@@ -41,8 +41,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 机构管理
@@ -165,7 +167,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
      */
     @Override
     public ResultContent update(OrganizationUpdateParam param) {
-        Organization organization =  organizationDao.findTopById(param.getId());
+        Organization organization = organizationDao.findTopById(param.getId());
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
         }
@@ -183,6 +185,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
 
     /**
      * 删除机构
+     *
      * @param oid
      * @return
      */
@@ -193,7 +196,7 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         if (ObjectUtils.isEmpty(organization)) {
             return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, oid));
         }
-        if(organization.getAuthType() == AuthType.Platform) {
+        if (organization.getAuthType() == AuthType.Platform) {
             return ResultContent.buildFail(String.format("该类型数据不能删除: %s", organization.getAuthType().getRemark()));
         }
         String currentOid = getCurrentOid();
@@ -258,12 +261,36 @@ public class OrganizationServiceImpl extends SuperService implements Organizatio
         return ResultContent.buildSuccess(PageEntityUtil.toPageModel(page, this::toProjectModel));
     }
 
+    /**
+     * 查询用户加入的机构列表
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent<List<OrganizationModel>> getUserOrgList(OrganizationUserSearch param) {
+        List<OrganizationModel> models = new ArrayList<>();
+        String userId = param.getUserId();
+        if (StringUtils.isEmpty(userId)) {
+            userId = getCurrentUserId();
+        }
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+        List<OrganizationUser> list = organizationUserDao.findByUserAndAuthTypeAndState(userAccount, param.getAuthType(), param.getState());
+        if (ObjectUtils.isNotEmpty(list)) {
+            models = list.stream().map(it -> {
+                return toModel(it.getOrganization());
+            }).collect(Collectors.toList());
+        }
+        return ResultContent.buildSuccess(models);
+    }
+
     /**
      * 生成编码
+     *
      * @param authType
      * @return
      */
-    public ResultContent buildCode(AuthType authType){
+    public ResultContent buildCode(AuthType authType) {
         String code = NextNoUtil.getNextNo(authType.getCode().toUpperCase());
         return ResultContent.buildSuccess(code);
     }