TRX 1 jaar geleden
bovenliggende
commit
fb20afab89

+ 26 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolQueryParam.java

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.school;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotEmpty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 卡池卡卡片搜索
+ *
+ * @author TRX
+ * @date 2024/9/10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardInfoPoolQueryParam {
+
+    @Schema(description = "学校oid")
+    @NotEmpty(message = "oid不能为空")
+    private String schoolOid;
+
+    @Schema(description = "搜索的卡号")
+    private String code;
+}

+ 43 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoPoolSimpleModel.java

@@ -0,0 +1,43 @@
+package com.zhongshu.card.client.model.school;
+
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.type.school.CardType;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author TRX
+ * @date 2024/7/30
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardInfoPoolSimpleModel {
+
+    @Schema(description = "数据ID")
+    private String id;
+
+    @Schema(description = "卡片名称")
+    private String name;
+
+    @Schema(description = "卡片类型")
+    private CardType cardType;
+
+    private String cardTypeStr;
+
+    public String getCardTypeStr() {
+        if (cardType == null) {
+            return cardType.getRemark();
+        }
+        return "";
+    }
+
+    @Schema(description = "卡片号码,唯一标识, 卡号")
+    private String code;
+
+    @Schema(description = "是否已使用")
+    private Boolean isUsed = Boolean.FALSE;
+
+}

+ 8 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterBindSchoolParam.java

@@ -1,8 +1,12 @@
 package com.zhongshu.card.client.model.school;
 
+import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
  * 注册时用户绑定学校
  *
@@ -23,4 +27,8 @@ public class RegisterBindSchoolParam {
 
     @Schema(description = "部门ID")
     private String departmentId;
+
+    @Schema(description = "")
+    @Hidden
+    private List<String> roleIds = new ArrayList<>();
 }

+ 9 - 10
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/CardInfoPoolController.java

@@ -22,6 +22,7 @@ import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.validation.Valid;
 import java.io.IOException;
 import java.util.List;
 
@@ -34,22 +35,13 @@ import java.util.List;
 @Tag(name = "学校-卡片池管理")
 public class CardInfoPoolController {
 
-    @Autowired
-    SchoolUserService schoolUserService;
-
-    @Autowired
-    CardInfoService cardInfoService;
-
-    @Autowired
-    AuthHelper authHelper;
-
     @Autowired
     CardInfoPoolService cardInfoPoolService;
 
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "保存卡片信息", description = "保存卡片信息 新增加编辑")
     @RequestMapping(value = {"saveCardInfoPool"}, method = {RequestMethod.POST})
-    public ResultContent<List<CardInfoModel>> saveCardInfoPool(@RequestBody CardInfoPoolParam param) {
+    public ResultContent saveCardInfoPool(@RequestBody CardInfoPoolParam param) {
         return cardInfoPoolService.saveCardInfoPool(param);
     }
 
@@ -95,4 +87,11 @@ public class CardInfoPoolController {
         return cardInfoPoolService.importCardPool(request, response, file);
     }
 
+    @Operation(summary = "搜索卡片", description = "搜索卡片")
+    @RequestMapping(value = {"queryPoolCard"}, method = {RequestMethod.POST})
+    public ResultContent<List<CardInfoPoolSimpleModel>> queryPoolCard(
+            @RequestBody @Valid CardInfoPoolQueryParam param) {
+        return cardInfoPoolService.queryPoolCard(param);
+    }
+
 }

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

@@ -23,6 +23,8 @@ public interface OrganizationUserDao extends MongoDao<OrganizationUser>, Organiz
 
     OrganizationUser findTopByOrganizationAndUserAndState(Organization organization, UserAccount user, UserState state);
 
+    OrganizationUser findTopByCodeAndOrganization(String code, Organization organization);
+
     // 用户是否存在
     Boolean existsByOrganizationAndUser(Organization organization, UserAccount user);
 

+ 3 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/dao/school/CardInfoPoolDao.java

@@ -23,5 +23,8 @@ public interface CardInfoPoolDao extends MongoDao<CardInfoPool>, CardInfoPoolDao
 
     CardInfoPool findTopByCodeAndProjectOid(String code, String projectOid);
 
+    // 模糊搜索10张卡片
+    List<CardInfoPool> findTop10BySchoolOidAndCodeLike(String schoolOid, String code);
+
     boolean existsByCodeAndProjectOid(String code, String projectOid);
 }

+ 52 - 5
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java

@@ -6,11 +6,10 @@ import com.zhongshu.card.client.model.org.DepartmentModel;
 import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import com.zhongshu.card.client.model.org.OrganizationUserSimpleModel;
 import com.zhongshu.card.client.model.school.RegisterBindSchoolParam;
-import com.zhongshu.card.server.core.dao.org.DepartmentDao;
-import com.zhongshu.card.server.core.dao.org.OrganizationUserDao;
-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 com.zhongshu.card.client.type.OrganizationUserType;
+import com.zhongshu.card.client.type.UserState;
+import com.zhongshu.card.server.core.dao.org.*;
+import com.zhongshu.card.server.core.domain.org.*;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -41,6 +40,15 @@ public class OrganizationUserServiceImpl extends SuperService {
     @Autowired
     private DepartmentDao departmentDao;
 
+    @Autowired
+    UserCountDao userCountDao;
+
+    @Autowired
+    OrganizationDao organizationDao;
+
+    @Autowired
+    RoleDao roleDao;
+
     /**
      * 得到用户所在的机构简单数据
      *
@@ -66,8 +74,47 @@ public class OrganizationUserServiceImpl extends SuperService {
      * @return
      */
     public ResultContent bindUser2School(RegisterBindSchoolParam param) {
+        UserAccount userAccount = userCountDao.findTopByUserId(param.getUserId());
+        if (ObjectUtils.isEmpty(userAccount)) {
+            return ResultContent.buildFail(String.format("用户不存在:%s", param.getUserId()));
+        }
+        Organization organization = organizationDao.findTopByOid(param.getOid());
+        if (ObjectUtils.isEmpty(organization)) {
+            return ResultContent.buildFail(String.format("机构不存在:%s", param.getOid()));
+        }
 
+        OrganizationUser schoolUser = organizationUserDao.findTopByOrganizationAndUser(organization, userAccount);
+        if (ObjectUtils.isEmpty(schoolUser)) {
+            OrganizationUser temp = organizationUserDao.findTopByCodeAndOrganization(param.getCode(), organization);
+            if (ObjectUtils.isNotEmpty(temp)) {
+                return ResultContent.buildFail(String.format("学号/工号已存在:%s", param.getCode()));
+            }
 
+            schoolUser = new OrganizationUser();
+            schoolUser.setOrganization(organization);
+            schoolUser.setUserId(param.getUserId());
+            schoolUser.setUser(userAccount);
+            schoolUser.setState(UserState.Normal);
+            schoolUser.setCode(param.getCode());
+            schoolUser.setPhone(userAccount.getPhone());
+            schoolUser.setName(userAccount.getName());
+            schoolUser.setUserType(OrganizationUserType.Consumer);
+            schoolUser.setCertificateType(userAccount.getCertificateType());
+            schoolUser.setCardNumber(userAccount.getCardNumber());
+            schoolUser.setAuthType(organization.getAuthType());
+
+            List<Role> roles = new ArrayList<>();
+            Department department = null;
+            if (ObjectUtils.isNotEmpty(param.getRoleIds())) {
+                roles = roleDao.findByOidAndIdIn(organization.getOid(), param.getRoleIds());
+            }
+            if (ObjectUtils.isNotEmpty(param.getDepartmentId())) {
+                department = departmentDao.findTopById(param.getDepartmentId());
+            }
+            schoolUser.setRoles(roles);
+            schoolUser.setDepartment(department);
+            organizationUserDao.save(schoolUser);
+        }
         return ResultContent.buildSuccess();
     }
 

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

@@ -3,6 +3,7 @@ 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.components.data.base.util.PageEntityUtil;
+import com.google.common.collect.Lists;
 import com.zhongshu.card.client.model.org.OidAboutInfo;
 import com.zhongshu.card.client.model.school.*;
 import com.github.microservice.net.ResultContent;
@@ -10,6 +11,7 @@ import com.github.microservice.net.ResultMessage;
 import com.zhongshu.card.client.type.school.CardType;
 import com.zhongshu.card.server.core.dao.org.OrganizationDao;
 import com.zhongshu.card.server.core.dao.school.CardInfoPoolDao;
+import com.zhongshu.card.server.core.domain.org.Organization;
 import com.zhongshu.card.server.core.domain.school.CardInfoPool;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.org.OrganizationServiceImpl;
@@ -29,6 +31,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author TRX
@@ -58,6 +61,10 @@ public class CardInfoPoolService extends SuperService {
         CardInfoPool entity = null;
         // 这是学校的oid
         String oid = param.getOid();
+        Organization organization = organizationDao.findTopByOid(oid);
+        if (ObjectUtils.isEmpty(organization)) {
+            return ResultContent.buildFail(String.format("机构不存在:%s", param.getOid()));
+        }
 
         OidAboutInfo oidAboutInfo = organizationService.getOidAboutOrgInfo(oid);
 
@@ -156,8 +163,7 @@ public class CardInfoPoolService extends SuperService {
      * @param file
      * @return
      */
-    public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request,
-            HttpServletResponse response, MultipartFile file) {
+    public ResultContent<ImportResultModel> importCardPool(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
         String oid = getCurrentOid();
         Assert.hasText(oid, "oid不能为空");
 
@@ -170,8 +176,7 @@ public class CardInfoPoolService extends SuperService {
         try {
             int startRow = 2;
             ImportParams params = new ImportParams();
-            List<CardInfoPoolImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(),
-                    CardInfoPoolImportParam.class, params);
+            List<CardInfoPoolImportParam> list = ExcelImportUtil.importExcel(file.getInputStream(), CardInfoPoolImportParam.class, params);
             model.setTotal(list.size());
 
             List<String> failDetails = new ArrayList<>();
@@ -221,6 +226,24 @@ public class CardInfoPoolService extends SuperService {
         return ResultContent.buildSuccess(model);
     }
 
+    /**
+     * 搜索卡片
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent<List<CardInfoPoolSimpleModel>> queryPoolCard(CardInfoPoolQueryParam param) {
+        if (StringUtils.isEmpty(param.getCode())) {
+            return ResultContent.buildSuccess(Lists.newArrayList());
+        }
+        List<CardInfoPool> list = cardInfoPoolDao.findTop10BySchoolOidAndCodeLike(param.getSchoolOid(), param.getCode());
+        List<CardInfoPoolSimpleModel> models = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(list)) {
+            models = list.stream().map(this::toSimpleModel).collect(Collectors.toList());
+        }
+        return ResultContent.buildSuccess(models);
+    }
+
     public CardInfoPoolModel toModel(CardInfoPool entity) {
         CardInfoPoolModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {
@@ -229,4 +252,14 @@ public class CardInfoPoolService extends SuperService {
         }
         return model;
     }
+
+    public CardInfoPoolSimpleModel toSimpleModel(CardInfoPool entity) {
+        CardInfoPoolSimpleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new CardInfoPoolSimpleModel();
+            BeanUtils.copyProperties(entity, model);
+        }
+        return model;
+    }
+
 }