Ver código fonte

学校功能

TRX 1 ano atrás
pai
commit
011ebae87a

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

@@ -41,7 +41,7 @@ public class UserCountModel extends SuperModel {
 
     private String sexStr;
 
-    public String getSexStr(){
+    public String getSexStr() {
         if (sex != null) {
             return sex.getRemark();
         }
@@ -54,6 +54,21 @@ public class UserCountModel extends SuperModel {
     @Schema(description = "用户状态")
     UserState state = UserState.Normal;
 
+    private String stateStr;
+
+    public String getStateStr() {
+        if (state != null) {
+            return state.getRemark();
+        }
+        return "";
+    }
+
     @Schema(description = "可登录端类型")
     UserLoginType loginType = UserLoginType.All;
+
+    @Schema(description = "是否已修改了密码 (登录时提示)")
+    private Boolean isUpdatedPsw = Boolean.FALSE;
+
+    @Schema(description = "是否登录过")
+    private Boolean isLogined = Boolean.FALSE;
 }

+ 3 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoModel.java

@@ -29,6 +29,9 @@ public class CardInfoModel extends SuperModel {
     @Schema(description = "卡片Rfid")
     private String cardRfid;
 
+    @Schema(description = "卡片的iccid")
+    private String iccid;
+
     @Schema(description = "卡片状态")
     private CardState cardState;
 

+ 4 - 1
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardInfoParam.java

@@ -27,8 +27,11 @@ public class CardInfoParam extends SuperParam {
     @Schema(description = "卡片Rfid")
     private String cardRfid;
 
+    @Schema(description = "卡片的iccid")
+    private String iccid;
+
     @Schema(description = "卡片状态")
-    private CardState cardState;
+    private CardState cardState = CardState.Enable;
 
     @Schema(description = "所属用户userId", hidden = true)
     private String userId;

+ 24 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/CardLossParam.java

@@ -0,0 +1,24 @@
+package com.zhongshu.card.client.model.school;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 卡片挂失的param
+ *
+ * @author TRX
+ * @date 2024/6/14
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardLossParam {
+    @Schema(description = "数据ID")
+    private String id;
+    @Schema(description = "卡片iccid")
+    private String iccid;
+    @Schema(description = "密码")
+    private String passWord;
+}

+ 1 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/org/UserAccountService.java

@@ -26,6 +26,7 @@ public interface UserAccountService {
     // 删除机构用户
     ResultContent deleteOrgUser(DelUserCountParam param);
 
+    // 修改用户状态
     ResultContent updateOrgUserState(UpdateUserStateParam param);
 
     // 当前用户修改密码

+ 17 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/CardInfoService.java

@@ -2,6 +2,7 @@ package com.zhongshu.card.client.service.school;
 
 import com.zhongshu.card.client.model.school.CardInfoModel;
 import com.zhongshu.card.client.model.school.CardInfoParam;
+import com.zhongshu.card.client.model.school.CardLossParam;
 import com.zhongshu.card.client.ret.ResultContent;
 
 import java.util.List;
@@ -12,10 +13,26 @@ import java.util.List;
  */
 public interface CardInfoService {
 
+    // 添加编辑卡片
     ResultContent addCardInfo(CardInfoParam param);
 
     ResultContent<List<CardInfoModel>> getCurrentUserOrgAll();
 
     List<CardInfoModel> getUserOrgAllCard(String userId, String oid);
 
+    // 删除卡片
+    ResultContent deleteCardInfo(String id);
+
+    // 卡片挂失(挂失自己的)
+    ResultContent cardLossById(CardLossParam param);
+
+    // 通过iccid挂失被人的
+    ResultContent cardLossByIccId(CardLossParam param);
+
+    // 卡片启用
+    ResultContent cardEnableById(CardLossParam param);
+
+    // 查询卡片详情
+    ResultContent<CardInfoModel> getCardDetail(String id);
+
 }

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

@@ -8,8 +8,11 @@ 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.CardInfoParam;
+import com.zhongshu.card.client.model.school.CardLossParam;
 import com.zhongshu.card.client.model.school.SchoolUserModel;
 import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.service.school.CardInfoService;
 import com.zhongshu.card.client.service.school.SchoolUserService;
 import com.zhongshu.card.server.core.service.org.RoleServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
@@ -36,10 +39,10 @@ import java.util.List;
 public class CardController {
 
     @Autowired
-    RoleServiceImpl roleService;
+    SchoolUserService schoolUserService;
 
     @Autowired
-    SchoolUserService schoolUserService;
+    CardInfoService cardInfoService;
 
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "得到当前用户所在校园的所有卡片", description = "得到当前用户所在校园的所有卡片")
@@ -55,4 +58,46 @@ public class CardController {
         return schoolUserService.getUserOrgAllCard(param);
     }
 
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "用户添加-编辑卡片信息", description = "用户添加-编辑卡片信息")
+    @RequestMapping(value = {"addCardInfo"}, method = {RequestMethod.POST})
+    public ResultContent addCardInfo(@RequestBody CardInfoParam param) {
+        return cardInfoService.addCardInfo(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "删除卡片", description = "用户添加-编辑卡片信息")
+    @RequestMapping(value = {"deleteCardInfo"}, method = {RequestMethod.POST})
+    public ResultContent deleteCardInfo(@RequestBody IDParam param) {
+        return cardInfoService.deleteCardInfo(param.getId());
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "挂失卡片(通过数据ID挂失自己的)", description = "挂失卡片(通过数据ID挂失自己的)")
+    @RequestMapping(value = {"cardLossById"}, method = {RequestMethod.POST})
+    public ResultContent cardLossById(@RequestBody CardLossParam param) {
+        return cardInfoService.cardLossById(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "挂失卡片(通过卡片iccid挂失别人的)", description = "挂失卡片(通过卡片iccid挂失别人的)")
+    @RequestMapping(value = {"cardLossByIccId"}, method = {RequestMethod.POST})
+    public ResultContent cardLossByIccId(@RequestBody CardLossParam param) {
+        return cardInfoService.cardLossByIccId(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "卡片启用", description = "卡片启用")
+    @RequestMapping(value = {"cardEnableById"}, method = {RequestMethod.POST})
+    public ResultContent cardEnableById(@RequestBody CardLossParam param) {
+        return cardInfoService.cardEnableById(param);
+    }
+
+    @ResourceAuth(value = "user", type = AuthType.User)
+    @Operation(summary = "卡片详情", description = "卡片详情")
+    @RequestMapping(value = {"getCardDetail"}, method = {RequestMethod.POST})
+    public ResultContent<CardInfoModel> getCardDetail(@RequestBody IDParam param) {
+        return cardInfoService.getCardDetail(param.getId());
+    }
+
 }

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

@@ -77,13 +77,12 @@ public class SchoolUserController {
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "添加-编辑校园端用户", description = "添加-编辑校园端用户")
+    @Operation(summary = "添加-编辑校园端用户(包含卡片信息)", description = "添加-编辑校园端用户")
     @RequestMapping(value = {"addOrUpdateSchoolUser"}, method = {RequestMethod.POST})
     public ResultContent addOrUpdateSchoolUser(@RequestBody SchoolUserCountParam param) {
         return schoolUserService.addOrUpdateSchoolUser(param);
     }
 
-
     @ResourceAuth(value = "user", type = AuthType.User)
     @Operation(summary = "删除校园端用户", description = "删除校园端用户")
     @RequestMapping(value = {"deleteSchoolUser"}, method = {RequestMethod.POST})
@@ -92,7 +91,7 @@ public class SchoolUserController {
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "得到校园用户详情", description = "得到用户详情")
+    @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

@@ -17,6 +17,8 @@ public interface CardInfoDao extends MongoDao<CardInfo> {
 
     CardInfo findTopById(String id);
 
+    CardInfo findTopByIccid(String iccid);
+
     // 查询用户code的卡片
     CardInfo findTopByCodeAndOidAndUserAccount(String code, String oid, UserAccount userAccount);
 

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

@@ -39,6 +39,9 @@ public class CardInfo extends SuperMain {
     @Schema(description = "卡片Rfid")
     private String cardRfid;
 
+    @Schema(description = "卡片的iccid")
+    private String iccid;
+
     @Schema(description = "卡片状态")
     private CardState cardState;
 

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

@@ -330,7 +330,12 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         if (!param.getPassWord().equals(param.getConfirmPass())) {
             return ResultContent.buildFail(String.format("密码和验证密码不一致"));
         }
-        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(param.getUserId(), param.getOldPass());
+        if (param.getOldPass().equals(param.getPassWord())) {
+            return ResultContent.buildFail(String.format("原密码和新证密码不能一致"));
+        }
+
+        String userId = param.getUserId();
+        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getOldPass());
         if (resultContent.getState() == ResultState.Success) {
             com.github.microservice.auth.client.content.ResultContent<Void> resultContent1 = userService.updateLoginPassword(param.getUserId(), param.getPassWord());
             if (resultContent1.getState() != ResultState.Success) {
@@ -339,6 +344,28 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
         } else {
             return ResultContent.buildFail(resultContent.getMsg());
         }
+        // 标记已修改过密码
+        UserAccount temp = userCountDao.findTopByUserId(userId);
+        temp.setIsUpdatedPsw(Boolean.TRUE);
+        userCountDao.save(temp);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 编辑当前用户头像
+     *
+     * @param url
+     * @return
+     */
+    public ResultContent updateUserHead(String url) {
+        String userId = getCurrentUserId();
+        Assert.hasText(userId, "当前用户userId为空");
+        UserAccount account = userCountDao.findTopByUserId(userId);
+        if (ObjectUtils.isEmpty(account)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, userId));
+        }
+        account.setProfilePic(url);
+        userCountDao.save(account);
         return ResultContent.buildSuccess();
     }
 

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

@@ -1,9 +1,14 @@
 package com.zhongshu.card.server.core.service.school;
 
+import com.github.microservice.auth.client.content.ResultState;
+import com.github.microservice.auth.client.service.UserService;
 import com.zhongshu.card.client.model.school.CardInfoModel;
 import com.zhongshu.card.client.model.school.CardInfoParam;
+import com.zhongshu.card.client.model.school.CardLossParam;
 import com.zhongshu.card.client.ret.ResultContent;
+import com.zhongshu.card.client.ret.ResultMessage;
 import com.zhongshu.card.client.service.school.CardInfoService;
+import com.zhongshu.card.client.utils.type.school.CardState;
 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.UserCountDao;
@@ -17,6 +22,7 @@ import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -41,6 +47,9 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     @Autowired
     UserCountDao userCountDao;
 
+    @Autowired
+    UserService userService;
+
     /**
      * 添加或修改卡片信息
      *
@@ -50,6 +59,7 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
     @Override
     public ResultContent addCardInfo(CardInfoParam param) {
         initDefaultUserAndOid(param);
+
         CardInfo cardInfo = null;
         if (StringUtils.isNotEmpty(param.getId())) {
             cardInfo = cardInfoDao.findTopById(param.getId());
@@ -67,6 +77,11 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 得到当前用户所在 学校的所有卡片
+     *
+     * @return
+     */
     @Override
     public ResultContent<List<CardInfoModel>> getCurrentUserOrgAll() {
         String userId = getCurrentUserId();
@@ -84,6 +99,111 @@ public class CardInfoServiceImpl extends SuperService implements CardInfoService
         return models;
     }
 
+    /**
+     * 删除卡片
+     *
+     * @param id
+     * @return
+     */
+    public ResultContent deleteCardInfo(String id) {
+        Assert.hasText(id, "id不能为空");
+        CardInfo cardInfo = cardInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        cardInfoDao.delete(cardInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 通过卡片ID挂失 (当前用户挂失自己的卡片)
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent cardLossById(CardLossParam param) {
+        Assert.hasText(param.getPassWord(), "密码不能为空");
+        Assert.hasText(param.getId(), "id不能为空");
+        String userId = getCurrentUserId();
+        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
+        if (resultContent.getState() != ResultState.Success) {
+            return ResultContent.buildFail("密码错误");
+        }
+        CardInfo cardInfo = cardInfoDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        cardInfo.setCardState(CardState.Loss);
+        cardInfoDao.save(cardInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 通过卡片的iccid挂失 (帮别人挂失)
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent cardLossByIccId(CardLossParam param) {
+        Assert.hasText(param.getPassWord(), "密码不能为空");
+        Assert.hasText(param.getIccid(), "iccid不能为空");
+        String userId = getCurrentUserId();
+        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
+        if (resultContent.getState() != ResultState.Success) {
+            return ResultContent.buildFail("密码错误");
+        }
+        CardInfo cardInfo = cardInfoDao.findTopByIccid(param.getIccid());
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format("iccid不存在:%s", param.getIccid()));
+        }
+        cardInfo.setCardState(CardState.Loss);
+        cardInfoDao.save(cardInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 卡片启用
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent cardEnableById(CardLossParam param) {
+        Assert.hasText(param.getPassWord(), "密码不能为空");
+        Assert.hasText(param.getId(), "id不能为空");
+        String userId = getCurrentUserId();
+        com.github.microservice.auth.client.content.ResultContent<Void> resultContent = userService.checkLoginPassword(userId, param.getPassWord());
+        if (resultContent.getState() != ResultState.Success) {
+            return ResultContent.buildFail("密码错误");
+        }
+        CardInfo cardInfo = cardInfoDao.findTopById(param.getId());
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, param.getId()));
+        }
+        cardInfo.setCardState(CardState.Enable);
+        cardInfoDao.save(cardInfo);
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 通过ID查询卡片详情
+     *
+     * @param id
+     * @return
+     */
+    @Override
+    public ResultContent<CardInfoModel> getCardDetail(String id) {
+        Assert.hasText(id, "id不能为空");
+        CardInfo cardInfo = cardInfoDao.findTopById(id);
+        if (ObjectUtils.isEmpty(cardInfo)) {
+            return ResultContent.buildFail(String.format(ResultMessage.DATA_NOT_EXIST, id));
+        }
+        CardInfoModel model = toModel(cardInfo);
+        return ResultContent.buildSuccess(model);
+    }
+
     public CardInfoModel toModel(CardInfo entity) {
         CardInfoModel model = null;
         if (ObjectUtils.isNotEmpty(entity)) {

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

@@ -201,19 +201,20 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
             if (cardInfo.getCardType() == null) {
                 return ResultContent.buildFail("卡片类型不能为空");
             }
-            if (StringUtils.isEmpty(cardInfo.getCode())) {
-                return ResultContent.buildFail("卡片号码不能为空");
+            if (StringUtils.isEmpty(cardInfo.getIccid())) {
+                return ResultContent.buildFail("iccid不能为空");
             }
-            if (map.containsKey(cardInfo.getCode())) {
-                return ResultContent.buildFail(String.format("卡片号码已存在:%s", cardInfo.getCode()));
+            if (map.containsKey(cardInfo.getIccid())) {
+                return ResultContent.buildFail(String.format("iccid已存在:%s", cardInfo.getIccid()));
             }
-            map.put("code", cardInfo.getCode());
+            map.put(cardInfo.getIccid(), cardInfo.getIccid());
         }
 
         ResultContent resultContent = userAccountService.update(param);
         if (resultContent.isFailed()) {
             return resultContent;
         }
+
         OrganizationUser organizationUser = (OrganizationUser) resultContent.getContent();
         // 维护卡片信息
         String userId = organizationUser.getUserId();
@@ -255,6 +256,8 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
         return ResultContent.buildSuccess(model);
     }
 
+    //-------------------------------卡片信息维护 start-------------------
+
     /**
      * 查询用户的所有卡片
      *
@@ -282,6 +285,8 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
         return ResultContent.buildSuccess(cardInfos);
     }
 
+    //-------------------------------卡片信息维护 end---------------------
+
     /**
      * 删除校园端用户
      *