TRX 1 年之前
父節點
當前提交
4b6c26ccb4
共有 14 個文件被更改,包括 361 次插入84 次删除
  1. 49 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSimpleModel.java
  2. 5 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RegisterUserAccountParam.java
  3. 26 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterBindSchoolParam.java
  4. 33 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterResultModel.java
  5. 2 0
      FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterUserParam.java
  6. 5 3
      FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java
  7. 8 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/DepartmentController.java
  8. 1 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/OrganizationController.java
  9. 21 7
      FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/school/SchoolUserController.java
  10. 2 2
      FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Role.java
  11. 99 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/OrganizationUserServiceImpl.java
  12. 8 0
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/RoleServiceImpl.java
  13. 12 1
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/UserAccountServiceImpl.java
  14. 90 70
      FullCardServer/src/main/java/com/zhongshu/card/server/core/service/school/SchoolUserServiceImpl.java

+ 49 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/OrganizationUserSimpleModel.java

@@ -0,0 +1,49 @@
+package com.zhongshu.card.client.model.org;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.zhongshu.card.client.model.base.SuperModel;
+import com.zhongshu.card.client.model.school.DictInfoSimpleModel;
+import com.zhongshu.card.client.type.CertificateType;
+import com.zhongshu.card.client.type.OrganizationUserType;
+import com.zhongshu.card.client.type.Sex;
+import com.zhongshu.card.client.type.UserState;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 机构用户详情
+ *
+ * @author TRX
+ * @date 2024/6/6
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class OrganizationUserSimpleModel {
+
+    @Schema(description = "相关数据ID")
+    private String id;
+
+    @Schema(description = "机构oid")
+    private String oid;
+
+    @Schema(description = "机构名称")
+    private String orgName;
+
+    @Schema(description = "工号")
+    private String code;
+
+    @Schema(description = "角色信息")
+    private List<RoleModel> roles = new ArrayList<>();
+
+    @Schema(description = "部门信息")
+    private DepartmentModel department;
+
+    @Schema(description = "部门信息所有级")
+    private List<DepartmentModel> departments = new ArrayList<>();
+}

+ 5 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/org/RegisterUserAccountParam.java

@@ -3,6 +3,7 @@ package com.zhongshu.card.client.model.org;
 import com.zhongshu.card.client.type.Sex;
 import com.zhongshu.card.client.type.UserType;
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.Size;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.internal.build.AllowPrintStacktrace;
@@ -28,8 +29,12 @@ public class RegisterUserAccountParam {
     private String realName;
 
     @Schema(description = "证件号码")
+
     private String cardNumber;
 
+    @Schema(description = "学号/工号")
+    private String code;
+
     @Schema(description = "性别")
     private Sex sex;
 

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

@@ -0,0 +1,26 @@
+package com.zhongshu.card.client.model.school;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 注册时用户绑定学校
+ *
+ * @author TRX
+ * @date 2024/9/10
+ */
+@Data
+public class RegisterBindSchoolParam {
+
+    @Schema(description = "学号/工号")
+    private String code;
+
+    @Schema(description = "学校oid")
+    private String oid;
+
+    @Schema(description = "用户userId")
+    private String userId;
+
+    @Schema(description = "部门ID")
+    private String departmentId;
+}

+ 33 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterResultModel.java

@@ -0,0 +1,33 @@
+package com.zhongshu.card.client.model.school;
+
+import com.zhongshu.card.client.model.org.OrganizationUserSimpleModel;
+import com.zhongshu.card.client.model.org.UserCountModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 注册返回数据
+ *
+ * @author TRX
+ * @date 2024/9/10
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class RegisterResultModel {
+
+    @Schema(description = "学号/工号")
+    private String code;
+
+    @Schema(description = "用户信息")
+    private UserCountModel userInfo;
+
+    @Schema(description = "所在学校信息")
+    List<OrganizationUserSimpleModel> schools = new ArrayList<>();
+
+}

+ 2 - 0
FullCardClient/src/main/java/com/zhongshu/card/client/model/school/RegisterUserParam.java

@@ -1,6 +1,7 @@
 package com.zhongshu.card.client.model.school;
 
 import com.zhongshu.card.client.model.org.RegisterUserAccountParam;
+import io.swagger.v3.oas.annotations.Hidden;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -20,5 +21,6 @@ import java.util.List;
 public class RegisterUserParam extends RegisterUserAccountParam {
 
     @Schema(description = "卡片信息")
+    @Hidden
     private List<CardInfoParam> cardInfos;
 }

+ 5 - 3
FullCardClient/src/main/java/com/zhongshu/card/client/service/school/SchoolUserService.java

@@ -20,17 +20,16 @@ import java.util.List;
  */
 public interface SchoolUserService {
 
+    // 导入用户
     ResultContent<ImportResultModel> importSchoolUsers(HttpServletRequest request,
             HttpServletResponse response, MultipartFile file);
 
+    // 导出用户
     void exportSchoolUser(HttpServletRequest request, HttpServletResponse response,
             OrganizationUserSearch param);
 
     ResultContent addOrUpdateSchoolUser(SchoolUserCountParam param);
 
-    // c端用户注册
-    ResultContent register(RegisterUserParam param);
-
     ResultContent<SchoolUserModel> getSchoolUserDetail(OrgUserDetailParam param);
 
     ResultContent<List<CardInfoModel>> getUserOrgAllCard(OrgUserDetailParam param);
@@ -42,4 +41,7 @@ public interface SchoolUserService {
     ResultContent<List<CardInfoModel>> getCurrentUserAllCard();
 
     ResultContent deleteUser(String id);
+
+    // c端用户注册
+    ResultContent register(RegisterUserParam param);
 }

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/org/DepartmentController.java

@@ -11,6 +11,7 @@ import com.zhongshu.card.client.service.org.DepartmentService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -59,4 +60,11 @@ public class DepartmentController {
         return this.departmentService.deleteDepartment(param.getId());
     }
 
+    @Operation(summary = "得到机构部门树-未登录", description = "得到机构部门树未登录")
+    @RequestMapping(value = "getOrgDepartmentTree", method = {RequestMethod.POST})
+    public ResultContent getOrgDepartmentTree(@RequestBody OidModel param) {
+        Assert.hasText(param.getOid(), "oid不能为空");
+        return this.departmentService.getDepartmentTree(param.getOid());
+    }
+
 }

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

@@ -102,7 +102,7 @@ public class OrganizationController {
         return organizationService.page(param, pageable);
     }
 
-    @Operation(summary = "得到可用的学校数据", description = "得到可用的学校数据")
+    @Operation(summary = "得到所有可用的学校数据", description = "得到可用的学校数据")
     @RequestMapping(value = {"getUsableSchool"}, method = {RequestMethod.POST})
     public ResultContent<List<OrganizationSimpleModel>> getUsableSchool(
             @Parameter(required = false) OrganizationSearchParam param) {

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

@@ -3,17 +3,19 @@ package com.zhongshu.card.server.core.controller.school;
 import com.github.microservice.auth.client.constant.AuthConstant;
 import com.github.microservice.auth.security.annotations.ResourceAuth;
 import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
 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.org.SchoolUserCountParam;
 import com.zhongshu.card.client.model.school.ImportResultModel;
+import com.zhongshu.card.client.model.school.RegisterBindSchoolParam;
 import com.zhongshu.card.client.model.school.RegisterUserParam;
 import com.zhongshu.card.client.model.school.SchoolUserModel;
-import com.github.microservice.net.ResultContent;
 import com.zhongshu.card.client.service.org.UserAccountService;
 import com.zhongshu.card.client.service.school.SchoolUserService;
+import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -27,6 +29,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;
 
 /**
@@ -44,6 +47,9 @@ public class SchoolUserController {
     @Autowired
     UserAccountService userAccountService;
 
+    @Autowired
+    OrganizationUserServiceImpl organizationUserService;
+
     @ResourceAuth(value = "schoolUserManager", type = AuthType.Platform, remark = "人员管理_人员列表_1_Menu")
     @ResourceAuth(value = "schoolUserManager", type = AuthType.Project, remark = "人员管理_人员列表_1_Menu")
     @ResourceAuth(value = "schoolUserManager", type = AuthType.School, remark = "人员管理_人员列表_1_Menu")
@@ -68,12 +74,6 @@ public class SchoolUserController {
         return userAccountService.pageOrgUser(param, pageable);
     }
 
-    @Operation(summary = "注册用户c端用户(包含卡片信息)", description = "注册用户c端用户")
-    @RequestMapping(value = {"registerUser"}, method = {RequestMethod.POST})
-    public ResultContent<SchoolUserModel> registerUser(@RequestBody RegisterUserParam param) {
-        return schoolUserService.register(param);
-    }
-
     @ResourceAuth(value = "user", type = AuthType.User)
     @RequestMapping(value = "importSchoolUsers", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, method = RequestMethod.POST)
     @Operation(summary = "导入校园用户", description = "导入校园用户")
@@ -116,4 +116,18 @@ public class SchoolUserController {
         return schoolUserService.getSchoolUserDetail(param);
     }
 
+    //-----------------------小程序c端用户管理 start--------------------
+
+    @Operation(summary = "注册用户c端用户 第一步", description = "注册用户c端用户")
+    @RequestMapping(value = {"registerUser"}, method = {RequestMethod.POST})
+    public ResultContent<SchoolUserModel> registerUser(@RequestBody @Valid RegisterUserParam param) {
+        return schoolUserService.register(param);
+    }
+
+    @Operation(summary = "注册用户c端用户 第二步 用户绑定学校", description = "注册用户c端用户 第二步")
+    @RequestMapping(value = {"bindUser2School"}, method = {RequestMethod.POST})
+    public ResultContent<SchoolUserModel> bindUser2School(@RequestBody @Valid RegisterBindSchoolParam param) {
+        return organizationUserService.bindUser2School(param);
+    }
+
 }

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/domain/org/Role.java

@@ -31,10 +31,10 @@ public class Role extends SuperMain {
     private String code;
 
     @Schema(description = "角色类型")
-    RoleType roleType;
+    private RoleType roleType;
 
     @Schema(description = "默认角色的类型")
-    RoleDefaultType roleDefaultType;
+    private RoleDefaultType roleDefaultType;
 
     @Schema(description = "是否管理角色")
     @Indexed

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

@@ -0,0 +1,99 @@
+package com.zhongshu.card.server.core.service.org;
+
+import com.github.microservice.auth.security.type.AuthType;
+import com.github.microservice.net.ResultContent;
+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.server.core.service.base.SuperService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author TRX
+ * @date 2024/9/10
+ */
+@Slf4j
+@Service
+public class OrganizationUserServiceImpl extends SuperService {
+
+    @Autowired
+    private OrganizationUserDao organizationUserDao;
+
+    @Autowired
+    private RoleServiceImpl roleServiceImpl;
+
+    @Autowired
+    private DepartmentServiceImpl departmentService;
+
+    @Autowired
+    private DepartmentDao departmentDao;
+
+    /**
+     * 得到用户所在的机构简单数据
+     *
+     * @param userAccount
+     * @param authType
+     * @return
+     */
+    public List<OrganizationUserSimpleModel> getUserOrgans(UserAccount userAccount, AuthType authType) {
+        List<OrganizationUserSimpleModel> models = new ArrayList<>();
+        if (userAccount != null && authType != null) {
+            List<OrganizationUser> list = organizationUserDao.findByUserAndAuthType(userAccount, authType);
+            if (ObjectUtils.isNotEmpty(list)) {
+                models = list.stream().map(this::toModel).collect(Collectors.toList());
+            }
+        }
+        return models;
+    }
+
+    /**
+     * 绑定用户到机构
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent bindUser2School(RegisterBindSchoolParam param) {
+
+
+        return ResultContent.buildSuccess();
+    }
+
+
+    public OrganizationUserSimpleModel toModel(OrganizationUser entity) {
+        OrganizationUserSimpleModel model = null;
+        if (ObjectUtils.isNotEmpty(entity)) {
+            model = new OrganizationUserSimpleModel();
+
+            model.setId(entity.getId());
+            model.setCode(entity.getCode());
+            Organization organization = entity.getOrganization();
+            model.setOid(organization.getOid());
+            model.setOrgName(organization.getName());
+
+            model.setRoles(roleServiceImpl.toModels(entity.getRoles()));
+
+            // 部门信息
+            if (ObjectUtils.isNotEmpty(entity.getDepartment())) {
+                DepartmentModel departmentModel = departmentService.toModel(entity.getDepartment());
+                model.setDepartment(departmentModel);
+                List<DepartmentModel> departmentModels = departmentService.getParents(entity.getDepartment().getId());
+                model.setDepartments(departmentModels);
+            }
+        }
+        return model;
+    }
+
+}

+ 8 - 0
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/org/RoleServiceImpl.java

@@ -7,6 +7,7 @@ import com.github.microservice.auth.client.model.RoleGroupModel;
 import com.github.microservice.auth.client.service.AuthResourcesNameService;
 import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.components.data.base.util.PageEntityUtil;
+import com.google.common.collect.Lists;
 import com.zhongshu.card.client.model.org.*;
 import com.github.microservice.net.ResultContent;
 import com.github.microservice.net.ResultMessage;
@@ -436,6 +437,13 @@ public class RoleServiceImpl extends SuperService {
         return ResultContent.buildSuccess(auth);
     }
 
+    public List<RoleModel> toModels(List<Role> roles) {
+        if (ObjectUtils.isNotEmpty(roles)) {
+            return roles.stream().map(this::toModel).collect(Collectors.toList());
+        }
+        return Lists.newArrayList();
+    }
+
     public RoleModel toModel(Role role) {
         RoleModel roleModel = new RoleModel();
         if (ObjectUtils.isNotEmpty(role)) {

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

@@ -252,6 +252,7 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
      */
     @Override
     public ResultContent<String> registerUserAccount(RegisterUserAccountParam param) {
+        // 电话号码为登录名
         String loginName = param.getPhone();
         UserAccount userAccount = userCountDao.findTopByLoginName(loginName);
         if (ObjectUtils.isEmpty(userAccount)) {
@@ -273,7 +274,8 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
 
             if (StringUtils.isEmpty(userId)) {
                 //权限中心:添加用户
-                com.github.microservice.auth.client.content.ResultContent<String> addModelResult = userService.add(UserAuthModel.builder().loginType(LoginType.Phone).loginValue(loginName).passWord(passWord).build());
+                com.github.microservice.auth.client.content.ResultContent<String> addModelResult = userService.add(
+                        UserAuthModel.builder().loginType(LoginType.Phone).loginValue(loginName).passWord(passWord).build());
                 if (addModelResult.getState() != ResultState.Success) {
                     return ResultContent.buildFail(String.format("权限中心添加用户出错:%s", addModelResult.getMsg()));
                 }
@@ -295,6 +297,15 @@ public class UserAccountServiceImpl extends SuperService implements UserAccountS
             userAccount.setSpellCode(CommonUtil.getPinyin(param.getName()));
             userAccount.setIsUpdatedPsw(Boolean.FALSE);
             userCountDao.save(userAccount);
+        } else {
+            // 编辑
+            BeanUtils.copyProperties(param, userAccount);
+            String realName = param.getRealName();
+            if (StringUtils.isEmpty(realName)) {
+                realName = param.getName();
+            }
+            userAccount.setRealName(realName);
+            userCountDao.save(userAccount);
         }
         return ResultContent.buildSuccess(userAccount.getUserId());
     }

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

@@ -2,6 +2,8 @@ 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.auth.client.service.OrganizationUserService;
+import com.github.microservice.auth.security.type.AuthType;
 import com.github.microservice.core.util.bean.BeanUtil;
 import com.zhongshu.card.client.model.org.*;
 import com.zhongshu.card.client.model.school.*;
@@ -19,6 +21,8 @@ import com.zhongshu.card.server.core.domain.org.OrganizationUser;
 import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.school.CardInfo;
 import com.zhongshu.card.server.core.service.base.SuperService;
+import com.zhongshu.card.server.core.service.org.OrganizationUserServiceImpl;
+import com.zhongshu.card.server.core.service.org.UserAccountServiceImpl;
 import com.zhongshu.card.server.core.util.BeanUtils;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import com.zhongshu.card.server.core.util.ExcelUtils;
@@ -53,7 +57,7 @@ import java.util.stream.Collectors;
 public class SchoolUserServiceImpl extends SuperService implements SchoolUserService {
 
     @Autowired
-    UserAccountService userAccountService;
+    UserAccountServiceImpl userAccountService;
 
     @Autowired
     OrganizationUserDao organizationUserDao;
@@ -70,6 +74,9 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
     @Autowired
     UserCountDao userCountDao;
 
+    @Autowired
+    OrganizationUserServiceImpl organizationUserService;
+
     /**
      * 导入 学校用户excel
      *
@@ -244,75 +251,6 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
         return ResultContent.buildSuccess();
     }
 
-    /**
-     * 注册用户
-     *
-     * @param param
-     * @return
-     */
-    @Override
-    public ResultContent register(RegisterUserParam param) {
-        Assert.hasText(param.getPhone(), "phone不能为空");
-        Assert.hasText(param.getCardNumber(), "证件号码不能为空");
-        Assert.hasText(param.getName(), "姓名不能为空");
-        String phone = param.getPhone();
-        if (!ValidateUtils.isPhoneNumber(phone)) {
-            return ResultContent.buildFail("电话号码格式不正确");
-        }
-        // 保存卡片信息
-        List<CardInfoParam> cardInfos = param.getCardInfos();
-
-        if (ObjectUtils.isNotEmpty(cardInfos)) {
-            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("code不能为空");
-                }
-                if (map.containsKey(cardInfo.getCode())) {
-                    return ResultContent.buildFail(String.format("code已存在:%s", cardInfo.getCode()));
-                }
-                map.put(cardInfo.getCode(), cardInfo.getCode());
-
-                CardInfo cardInfo1 = cardInfoDao.findByCode(cardInfo.getCode());
-                if (ObjectUtils.isNotEmpty(cardInfo1)) {
-                    return ResultContent.buildFail(String.format("卡号code已存在:%s", cardInfo.getCode()));
-                }
-            }
-        }
-
-        UserAccount userAccount = userCountDao.findTopByLoginName(phone);
-        if (ObjectUtils.isNotEmpty(userAccount)) {
-            return ResultContent.buildFail(String.format("登录名已存在:%s", phone));
-        }
-        String cardNumber = param.getCardNumber();
-        if (!ValidateUtils.isIDCard(cardNumber)) {
-            return ResultContent.buildFail("身份证号码格式不正确");
-        }
-
-        // 注册用户
-        RegisterUserAccountParam addParam = new RegisterUserAccountParam();
-        BeanUtils.copyProperties(param, addParam);
-        addParam.setUserType(UserType.ConsumerUser);
-        ResultContent<String> resultContent = userAccountService.registerUserAccount(addParam);
-        if (resultContent.isFailed()) {
-            return ResultContent.buildFail(resultContent.getMsg());
-        }
-
-        // 添加卡片
-        String userId = resultContent.getContent();
-        if (ObjectUtils.isNotEmpty(cardInfos)) {
-            for (CardInfoParam cardInfo : cardInfos) {
-                cardInfo.setUserId(userId);
-                cardInfo.setOid("");
-                cardInfoService.addCardInfo(cardInfo);
-            }
-        }
-        return ResultContent.buildSuccess();
-    }
-
     /**
      * 查询校园端用户详情
      *
@@ -406,4 +344,86 @@ public class SchoolUserServiceImpl extends SuperService implements SchoolUserSer
         return ResultContent.buildSuccess();
     }
 
+    //-----------------------小程序c端用户管理 start--------------------
+
+    /**
+     * 注册用户
+     *
+     * @param param
+     * @return
+     */
+    @Override
+    public ResultContent register(RegisterUserParam param) {
+        Assert.hasText(param.getName(), "姓名不能为空");
+        Assert.hasText(param.getPhone(), "phone不能为空");
+        Assert.hasText(param.getCardNumber(), "证件号码不能为空");
+        String phone = param.getPhone();
+        if (!ValidateUtils.isPhoneNumber(phone)) {
+            return ResultContent.buildFail("电话号码格式不正确");
+        }
+
+        // 保存卡片信息
+        List<CardInfoParam> cardInfos = param.getCardInfos();
+        if (ObjectUtils.isNotEmpty(cardInfos)) {
+            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("code不能为空");
+                }
+                if (map.containsKey(cardInfo.getCode())) {
+                    return ResultContent.buildFail(String.format("code已存在:%s", cardInfo.getCode()));
+                }
+                map.put(cardInfo.getCode(), cardInfo.getCode());
+
+                CardInfo cardInfo1 = cardInfoDao.findByCode(cardInfo.getCode());
+                if (ObjectUtils.isNotEmpty(cardInfo1)) {
+                    return ResultContent.buildFail(String.format("卡号code已存在:%s", cardInfo.getCode()));
+                }
+            }
+        }
+
+        String cardNumber = param.getCardNumber();
+        if (!ValidateUtils.isIDCard(cardNumber)) {
+            return ResultContent.buildFail("身份证号码格式不正确");
+        }
+
+        // 注册用户
+        RegisterUserAccountParam addParam = new RegisterUserAccountParam();
+        BeanUtils.copyProperties(param, addParam);
+        addParam.setUserType(UserType.ConsumerUser);
+        ResultContent<String> resultContent = userAccountService.registerUserAccount(addParam);
+        if (resultContent.isFailed()) {
+            return ResultContent.buildFail(resultContent.getMsg());
+        }
+
+        // 添加卡片
+        String userId = resultContent.getContent();
+        UserAccount userAccount = userCountDao.findTopByUserId(userId);
+        if (ObjectUtils.isNotEmpty(cardInfos)) {
+            for (CardInfoParam cardInfo : cardInfos) {
+                cardInfo.setUserId(userId);
+                cardInfo.setOid("");
+                cardInfoService.addCardInfo(cardInfo);
+            }
+        }
+
+        // 返回用户所在学校的信息
+        RegisterResultModel registerResult = new RegisterResultModel();
+        registerResult.setCode(param.getCode());
+        UserCountModel userCountModel = userAccountService.toModel(userAccount);
+        registerResult.setUserInfo(userCountModel);
+
+        // 返回用户所有的学校信息
+        List<OrganizationUserSimpleModel> schools = organizationUserService.getUserOrgans(userAccount, AuthType.School);
+        registerResult.setSchools(schools);
+        if (ObjectUtils.isNotEmpty(schools)) {
+            registerResult.setCode(schools.get(0).getCode());
+        }
+        return ResultContent.buildSuccess(registerResult);
+    }
+
+
 }