TRX 1 éve
szülő
commit
bb15d81cb7

+ 1 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrgUserDetailParam.java

@@ -14,6 +14,6 @@ public class OrgUserDetailParam {
     @Schema(description = "用户UserId")
     private String userId;
 
-    @Schema(description = "机构ID")
+    @Schema(description = "机构ID", hidden = true)
     private String oid;
 }

+ 22 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/SchoolUserCountParam.java

@@ -0,0 +1,22 @@
+package com.zhongshu.card.client.model.org;
+
+import com.zhongshu.card.client.model.base.SuperParam;
+import com.zhongshu.card.client.model.school.CardInfoParam;
+import com.zhongshu.card.client.utils.type.OrganizationUserType;
+import com.zhongshu.card.client.utils.type.Sex;
+import com.zhongshu.card.client.utils.type.UserState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 校园端 用户 维护
+ *
+ * @author TRX
+ * @date 2024/5/31
+ */
+@Data
+public class SchoolUserCountParam extends UserCountAddParam {
+    private List<CardInfoParam> cardInfos;
+}

+ 15 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/SchoolUserModel.java

@@ -0,0 +1,15 @@
+package com.zhongshu.card.client.model.school;
+
+import com.zhongshu.card.client.model.org.OrganizationUserModel;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author TRX
+ * @date 2024/6/13
+ */
+@Data
+public class SchoolUserModel extends OrganizationUserModel {
+    private List<CardInfoModel> cardInfos;
+}

+ 16 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java

@@ -1,12 +1,18 @@
 package com.zhongshu.card.client.service.school;
 
+import com.zhongshu.card.client.model.org.OrgUserDetailParam;
 import com.zhongshu.card.client.model.org.OrganizationUserSearch;
+import com.zhongshu.card.client.model.org.SchoolUserCountParam;
+import com.zhongshu.card.client.model.school.CardInfoModel;
 import com.zhongshu.card.client.model.school.ImportUserModel;
+import com.zhongshu.card.client.model.school.SchoolUserModel;
 import com.zhongshu.card.client.ret.ResultContent;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.List;
+
 /**
  * @author TRX
  * @date 2024/6/12
@@ -18,4 +24,14 @@ public interface SchoolUserService {
 
     void exportSchoolUser(HttpServletRequest request, HttpServletResponse response,
             OrganizationUserSearch param);
+
+    ResultContent addOrUpdateSchoolUser(SchoolUserCountParam param);
+
+    ResultContent<SchoolUserModel> getSchoolUserDetail(OrgUserDetailParam param);
+
+    ResultContent<List<CardInfoModel>> getUserOrgAllCard(OrgUserDetailParam param);
+
+    ResultContent<List<CardInfoModel>> getCurrentUserOrgAll();
+
+    ResultContent deleteUser(String id);
 }

+ 23 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/CardController.java

@@ -3,10 +3,14 @@ package com.zhongshu.card.server.core.controller.school;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
 import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.org.OrgUserDetailParam;
 import com.zhongshu.card.client.model.org.RoleAddParam;
 import com.zhongshu.card.client.model.org.RoleModel;
 import com.zhongshu.card.client.model.org.RoleSearchParam;
+import com.zhongshu.card.client.model.school.CardInfoModel;
+import com.zhongshu.card.client.model.school.SchoolUserModel;
 import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.service.school.SchoolUserService;
 import com.zhongshu.card.server.core.service.org.RoleServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -20,17 +24,35 @@ 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/5
  */
 @RestController
 @RequestMapping("/school/card")
-@Tag(name = "学校-卡务中心")
+@Tag(name = "学校-卡片管理")
 public class CardController {
 
     @Autowired
     RoleServiceImpl roleService;
 
+    @Autowired
+    SchoolUserService schoolUserService;
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到当前用户所在校园的所有卡片", description = "得到当前用户所在校园的所有卡片")
+    @RequestMapping(value = {"getCurrentUserOrgAll"}, method = {RequestMethod.GET})
+    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
+        return schoolUserService.getCurrentUserOrgAll();
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到指定用户在学校的所有卡片", description = "得到指定用户在学校的所有卡片")
+    @RequestMapping(value = {"getUserOrgAllCard"}, method = {RequestMethod.POST})
+    public ResultContent<List<CardInfoModel>> getUserOrgAllCard(@RequestBody OrgUserDetailParam param) {
+        return schoolUserService.getUserOrgAllCard(param);
+    }
 
 }

+ 17 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/SchoolUserController.java

@@ -2,10 +2,13 @@ package com.zhongshu.card.server.core.controller.school;
 
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.IDParam;
+import com.zhongshu.card.client.model.org.OrgUserDetailParam;
 import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.OrganizationUserSearch;
 import com.zhongshu.card.client.model.school.FileParam;
 import com.zhongshu.card.client.model.school.ImportUserModel;
+import com.zhongshu.card.client.model.school.SchoolUserModel;
 import com.zhongshu.card.client.ret.ResultContent;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.service.school.SchoolUserService;
@@ -72,4 +75,18 @@ public class SchoolUserController {
         return userAccountService.pageOrgUser(param, pageable);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "删除校园端用户", description = "删除校园端用户")
+    @RequestMapping(value = {"deleteSchoolUser"}, method = {RequestMethod.POST})
+    public ResultContent<SchoolUserModel> deleteUser(@RequestBody IDParam param) {
+        return schoolUserService.deleteUser(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "得到校园用户详情", description = "得到用户详情")
+    @RequestMapping(value = {"getSchoolUserDetail"}, method = {RequestMethod.POST})
+    public ResultContent<SchoolUserModel> getSchoolUserDetail(@RequestBody OrgUserDetailParam param) {
+        return schoolUserService.getSchoolUserDetail(param);
+    }
+
 }

+ 2 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/CardInfoDao.java

@@ -22,4 +22,6 @@ public interface CardInfoDao extends MongoDao<CardInfo> {
 
     // 查询用户所有的卡片
     List<CardInfo> findTopByUserIdAndOid(String userId, String oid);
+
+    void deleteByUserIdAndOid(String userId, String oid);
 }

+ 5 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/school/CardInfo.java

@@ -49,8 +49,13 @@ public class CardInfo extends SuperMain {
     @Schema(description = "所属用户UserId")
     private String userId;
 
+    @Schema(description = "用户名称")
+    private String userName;
+
     @Schema(description = "所属机构")
     @DBRef(lazy = true)
     private Organization organization;
 
+    @Schema(description = "校园名称")
+    private String orgName;
 }

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserAccountServiceImpl.java

@@ -99,7 +99,7 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      * @return
      */
     @Override
-    public ResultContent update(UserCountAddParam param) {
+    public ResultContent<OrganizationUser> update(UserCountAddParam param) {
         String oid = param.getOid();
         if (StringUtils.isEmpty(oid)) {
             oid = getCurrentOid();
@@ -224,7 +224,7 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             log.error("权限中心:绑定机构和用户关系出错:{}", resultContent.getMsg());
         }
 
-        return ResultContent.buildSuccess();
+        return ResultContent.buildSuccess(organizationUser);
     }
 
     public ResultContent<OrganizationUserModel> getOrgUserDetail(OrgUserDetailParam param) {

+ 1 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/CardInfoServiceImpl.java

@@ -55,6 +55,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
             cardInfo = cardInfoDao.findTopById(param.getId());
         }
         if (ObjectUtils.isEmpty(cardInfo)) {
+            param.setId(null);
             cardInfo = new CardInfo();
         }
         BeanUtils.copyProperties(param, cardInfo);

+ 120 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/SchoolUserServiceImpl.java

@@ -3,14 +3,14 @@ package com.zhongshu.card.server.core.service.school;
 import cn.afterturn.easypoi.excel.ExcelImportUtil;
 import cn.afterturn.easypoi.excel.entity.ImportParams;
 import com.github.microservice.core.util.bean.BeanUtil;
-import com.zhongshu.card.client.model.org.OrganizationUserSearch;
-import com.zhongshu.card.client.model.org.UserCountAddParam;
-import com.zhongshu.card.client.model.school.ExcelUserParam;
-import com.zhongshu.card.client.model.school.ImportUserModel;
+import com.zhongshu.card.client.model.org.*;
+import com.zhongshu.card.client.model.school.*;
 import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.ret.ResultMessage;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.service.school.SchoolUserService;
 import com.zhongshu.card.client.utils.type.Sex;
+import com.zhongshu.card.server.core.dao.CardInfoDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
 import com.zhongshu.card.server.core.domain.org.Organization;
@@ -57,6 +57,12 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
     @Autowired
     OrganizationDao organizationDao;
 
+    @Autowired
+    CardInfoServiceImpl cardInfoService;
+
+    @Autowired
+    CardInfoDao cardInfoDao;
+
     /**
      * 导入 学校用户excel
      *
@@ -181,4 +187,114 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
         ExcelUtils.commonExecuteExcel(request, response, execlParam);
     }
 
+    /**
+     * 编辑或新增加学校用户信息
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent addOrUpdateSchoolUser(SchoolUserCountParam param) {
+        List<CardInfoParam> cardInfos = param.getCardInfos();
+        HashMap<String, String> map = new HashMap<>();
+        for (CardInfoParam cardInfo : cardInfos) {
+            if (cardInfo.getCardType() == null) {
+                return ResultContent.buildFail("卡片类型不能为空");
+            }
+            if (StringUtils.isEmpty(cardInfo.getCode())) {
+                return ResultContent.buildFail("卡片号码不能为空");
+            }
+            if (map.containsKey(cardInfo.getCode())) {
+                return ResultContent.buildFail(String.format("卡片号码已存在:%s", cardInfo.getCode()));
+            }
+            map.put("code", cardInfo.getCode());
+        }
+        ResultContent resultContent = userAccountService.update(param);
+        if (resultContent.isFailed()) {
+            return resultContent;
+        }
+        OrganizationUser organizationUser = (OrganizationUser) resultContent.getContent();
+        // 维护卡片信息
+        String userId = organizationUser.getUserId();
+        String oid = organizationUser.getOid();
+        cardInfoDao.deleteByUserIdAndOid(userId, oid);
+        for (CardInfoParam cardInfo : cardInfos) {
+            cardInfo.setUserId(userId);
+            cardInfo.setOid(oid);
+            cardInfoService.addCardInfo(cardInfo);
+        }
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 查询校园端用户详情
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<SchoolUserModel> getSchoolUserDetail(OrgUserDetailParam param) {
+        SchoolUserModel model = new SchoolUserModel();
+        if (StringUtils.isEmpty(param.getOid())) {
+            param.setOid(getCurrentOid());
+        }
+        Assert.hasText(param.getUserId(), "userId不能为空");
+        Assert.hasText(param.getOid(), "oid不能为空");
+
+        ResultContent<OrganizationUserModel> resultContent = userAccountService.getOrgUserDetail(param);
+        if (resultContent.isFailed()) {
+            return ResultContent.buildFail(resultContent.getMsg());
+        }
+        OrganizationUserModel userModel = resultContent.getContent();
+        BeanUtils.copyProperties(userModel, model);
+
+        // 查询卡片信息
+        List<CardInfoModel> cardInfos = cardInfoService.getUserOrgAllCard(param.getUserId(), param.getOid());
+        model.setCardInfos(cardInfos);
+        return ResultContent.buildSuccess(model);
+    }
+
+    /**
+     * 查询用户的所有卡片
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent<List<CardInfoModel>> getUserOrgAllCard(OrgUserDetailParam param) {
+        if (StringUtils.isEmpty(param.getOid())) {
+            param.setOid(getCurrentOid());
+        }
+        Assert.hasText(param.getUserId(), "userId不能为空");
+        Assert.hasText(param.getOid(), "oid不能为空");
+        List<CardInfoModel> cardInfos = cardInfoService.getUserOrgAllCard(param.getUserId(), param.getOid());
+        return ResultContent.buildSuccess(cardInfos);
+    }
+
+    @Override
+    public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
+        String userId = getCurrentUserId();
+        String oid = getCurrentOid();
+        Assert.hasText(userId, "userId不能为空");
+        Assert.hasText(oid, "oid不能为空");
+        List<CardInfoModel> cardInfos = cardInfoService.getUserOrgAllCard(userId, oid);
+        return ResultContent.buildSuccess(cardInfos);
+    }
+
+    /**
+     * 删除校园端用户
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResultContent deleteUser(String id) {
+        Assert.hasText(id, "id不能为空");
+        OrganizationUser organizationUser = organizationUserDao.findTopById(id);
+        if (ObjectUtils.isEmpty(organizationUser)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        organizationUserDao.delete(organizationUser);
+        return ResultContent.buildSuccess();
+    }
+
 }