From 469357d1d9aa83648130e4e78ef567bf317da3fd Mon Sep 17 00:00:00 2001
From: Mlxa0324 <mlx950324@163.com>
Date: Sat, 15 Oct 2022 00:12:53 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=99=A2=E6=A0=A1=E6=97=B6?=
 =?UTF-8?q?=E5=80=99=EF=BC=8C=E5=88=9B=E5=BB=BA=E9=99=A2=E6=A0=A1=E7=AE=A1?=
 =?UTF-8?q?=E7=90=86=E5=91=98=E7=94=A8=E6=88=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../ibeetl/admin/core/enums/MenuEnums.java    |  3 +-
 .../admin/core/service/CoreUserService.java   | 38 +++++++++++++++++--
 .../jlw/entity/UniversitiesColleges.java      |  6 +--
 .../ibeetl/jlw/entity/dto/CreateUserDTO.java  | 33 ++++++++++++++++
 .../service/UniversitiesCollegesService.java  | 34 +++++++++++++++++
 .../web/UniversitiesCollegesController.java   |  6 ++-
 .../jlw/universitiesColleges/add.html         |  2 +-
 7 files changed, 112 insertions(+), 10 deletions(-)
 create mode 100644 web/src/main/java/com/ibeetl/jlw/entity/dto/CreateUserDTO.java

diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/enums/MenuEnums.java b/admin-core/src/main/java/com/ibeetl/admin/core/enums/MenuEnums.java
index 2d4f99d7..a562786e 100644
--- a/admin-core/src/main/java/com/ibeetl/admin/core/enums/MenuEnums.java
+++ b/admin-core/src/main/java/com/ibeetl/admin/core/enums/MenuEnums.java
@@ -7,12 +7,13 @@ package com.ibeetl.admin.core.enums;
 public enum MenuEnums {
 
     // 岗位类型
-    JT_01("操作岗位"),
+    JT_01("管理岗位"),
     JT_02("操作岗位"),
 
     // 管理岗位子类型
     JT_S_01("系统管理员"),
     JT_S_02("教师"),
+    JT_S_04("院校管理员"),
 
     // 操作岗位子类型
     JT_S_03("学生");
diff --git a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java
index 732e99ab..5df824f7 100644
--- a/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java
+++ b/admin-core/src/main/java/com/ibeetl/admin/core/service/CoreUserService.java
@@ -1,24 +1,29 @@
 package com.ibeetl.admin.core.service;
 
+import cn.hutool.core.lang.Assert;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ReflectUtil;
 import com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService;
 import com.ibeetl.admin.core.dao.CoreOrgDao;
 import com.ibeetl.admin.core.dao.CoreUserDao;
 import com.ibeetl.admin.core.entity.CoreOrg;
 import com.ibeetl.admin.core.entity.CoreUser;
+import com.ibeetl.admin.core.enums.MenuEnums;
 import com.ibeetl.admin.core.rbac.UserLoginInfo;
 import com.ibeetl.admin.core.util.PlatformException;
 import com.ibeetl.admin.core.util.enums.DelFlagEnum;
-import com.ibeetl.admin.core.util.enums.GeneralStateEnum;
 import org.beetl.sql.core.SQLManager;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.lang.reflect.Method;
+import java.util.Date;
 import java.util.List;
 import java.util.function.Consumer;
 
+import static com.ibeetl.admin.core.util.enums.GeneralStateEnum.ENABLE;
+
 @Service
 @Transactional
 public class CoreUserService {
@@ -37,13 +42,13 @@ public class CoreUserService {
 		CoreUser query = new CoreUser();
 		query.setCode(userName);
 		query.setPassword(passwordEncryptService.password(password));
-		query.setState(GeneralStateEnum.ENABLE.getValue());
+		query.setState(ENABLE.getValue());
 		CoreUser user =userDao.createLambdaQuery().andEq(CoreUser::getCode,userName).
 		    andEq(CoreUser::getPassword, passwordEncryptService.password(password)).single();
 		if(user==null) {
 		    throw new PlatformException("用户"+userName+"不存在或者密码错误");
 		}
-		if(!user.getState().equals(GeneralStateEnum.ENABLE.getValue())){
+		if(!user.getState().equals(ENABLE.getValue())){
 		    throw new PlatformException("用户"+userName+"已经失效");
 		}
 		if(user.getDelFlag()==DelFlagEnum.DELETED.getValue()) {
@@ -57,6 +62,33 @@ public class CoreUserService {
 		return loginInfo;
 		
 	}
+
+	/**
+	 * 新增用户 (指定权限)
+	 *
+	 * @param userCode	用户Code
+	 * @param password	登录密码(明文传入)
+	 * @param orgId		组织ID
+	 * @param jobType0	岗位
+	 * @param jobType1	岗位子类型
+	 */
+	public Long createUserBySomeParams(String userCode, String password, Long orgId, MenuEnums jobType0, MenuEnums jobType1 ) {
+		Assert.isTrue(ObjectUtil.isAllNotEmpty(userCode, password, orgId, jobType0, jobType1), "所有参数均为必传!");
+
+		CoreUser user = new CoreUser();
+		user.setName(userCode);
+		user.setCode(userCode);
+		user.setPassword(passwordEncryptService.password(password));
+		user.setState(ENABLE.getValue());
+		user.setCreateTime(new Date());
+		user.setDelFlag(0);
+		user.setJobType0(jobType0.name());
+		user.setJobType1(jobType1.name());
+		user.setState(ENABLE.getValue());
+		user.setOrgId(orgId);
+		userDao.insert(user);
+		return user.getId();
+	}
 	
 	public  List<CoreOrg> getUserOrg(long userId,long orgId){
 		List<CoreOrg> orgs =  orgDao.queryOrgByUser(userId);
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/UniversitiesColleges.java b/web/src/main/java/com/ibeetl/jlw/entity/UniversitiesColleges.java
index 735b108d..f0609f47 100644
--- a/web/src/main/java/com/ibeetl/jlw/entity/UniversitiesColleges.java
+++ b/web/src/main/java/com/ibeetl/jlw/entity/UniversitiesColleges.java
@@ -70,7 +70,7 @@ public class UniversitiesColleges extends BaseEntity{
 
     // 院校默认管理员用户ID
     @Dict(type = "core_user.CODE.1=1")
-    private String universitiesCdollegesDefaultAdminUserId;
+    private Long universitiesCdollegesDefaultAdminUserId;
 
 //    @FetchSql("select * from core_user where id = #universitiesCdollegesDefaultAdminUserId# ")
 //    private CoreUser defaultAdminUser;
@@ -263,11 +263,11 @@ public class UniversitiesColleges extends BaseEntity{
         this.universitiesCollegesAuthCode = universitiesCollegesAuthCode;
     }
 
-    public String getUniversitiesCdollegesDefaultAdminUserId() {
+    public Long getUniversitiesCdollegesDefaultAdminUserId() {
         return universitiesCdollegesDefaultAdminUserId;
     }
 
-    public void setUniversitiesCdollegesDefaultAdminUserId(String universitiesCdollegesDefaultAdminUserId) {
+    public void setUniversitiesCdollegesDefaultAdminUserId(Long universitiesCdollegesDefaultAdminUserId) {
         this.universitiesCdollegesDefaultAdminUserId = universitiesCdollegesDefaultAdminUserId;
     }
 
diff --git a/web/src/main/java/com/ibeetl/jlw/entity/dto/CreateUserDTO.java b/web/src/main/java/com/ibeetl/jlw/entity/dto/CreateUserDTO.java
new file mode 100644
index 00000000..474773da
--- /dev/null
+++ b/web/src/main/java/com/ibeetl/jlw/entity/dto/CreateUserDTO.java
@@ -0,0 +1,33 @@
+package com.ibeetl.jlw.entity.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author mlx
+ * @date 2022/10/14
+ * @modified
+ */
+@Data
+public class CreateUserDTO {
+
+    @NotBlank(message = "用户Code不能为空!")
+    private String userCode;
+
+    @NotBlank(message = "用户密码不能为空!")
+    private String password;
+
+//    @NotNull(message = "用户机构ID不能为空!")
+//    private Long orgId;
+
+//    @NotNull(message = "岗位不能为空!")
+//    private MenuEnums jobType0;
+//
+//    @NotNull(message = "子岗位不能为空!")
+//    private MenuEnums jobType1;
+}
diff --git a/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesService.java b/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesService.java
index 5c97fc73..b9644a6a 100644
--- a/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesService.java
+++ b/web/src/main/java/com/ibeetl/jlw/service/UniversitiesCollegesService.java
@@ -5,15 +5,18 @@ import cn.hutool.core.util.RandomUtil;
 import com.ibeetl.admin.console.service.OrgConsoleService;
 import com.ibeetl.admin.core.entity.CoreOrg;
 import com.ibeetl.admin.core.service.CoreBaseService;
+import com.ibeetl.admin.core.service.CoreUserService;
 import com.ibeetl.jlw.dao.UniversitiesCollegesDao;
 import com.ibeetl.jlw.entity.SchoolClass;
 import com.ibeetl.jlw.entity.UniversitiesColleges;
+import com.ibeetl.jlw.entity.dto.CreateUserDTO;
 import com.ibeetl.jlw.web.query.SchoolClassQuery;
 import com.ibeetl.jlw.web.query.UniversitiesCollegesQuery;
 import org.beetl.sql.core.SqlId;
 import org.beetl.sql.core.engine.PageQuery;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -21,12 +24,16 @@ import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+import static com.ibeetl.admin.core.enums.MenuEnums.JT_01;
+import static com.ibeetl.admin.core.enums.MenuEnums.JT_S_04;
+
 /**
  * UniversitiesColleges Service
  */
 
 @Service
 @Transactional
+@Validated
 public class UniversitiesCollegesService extends CoreBaseService<UniversitiesColleges>{
 
     @Resource private UniversitiesCollegesDao universitiesCollegesDao;
@@ -34,6 +41,7 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
     @Resource private SchoolClassService schoolClassService;
 
     @Resource private OrgConsoleService orgConsoleService;
+    @Resource private CoreUserService coreUserService;
 
     public PageQuery<UniversitiesColleges>queryByCondition(PageQuery query){
         PageQuery ret =  universitiesCollegesDao.queryByCondition(query);
@@ -69,6 +77,9 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
         coreOrg.setCreateTime(new Date());
         orgConsoleService.insert(coreOrg);
 
+        // 机构ID
+        universitiesColleges.setOrgId(coreOrg.getId());
+
         UniversitiesColleges u = new UniversitiesColleges();
         u.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
         u.setOrgId(coreOrg.getId());
@@ -79,6 +90,29 @@ public class UniversitiesCollegesService extends CoreBaseService<UniversitiesCol
         return true;
     }
 
+    /**
+     * 添加院校信息,添加机构信息,修改院校的授权码
+     * 默认创建院校管理员权限的用户
+     *
+     * @param universitiesColleges
+     * @param dto
+     */
+    public void addAndCreateCoreUser(UniversitiesColleges universitiesColleges, @Validated CreateUserDTO dto) {
+        // 添加院校信息,添加机构信息,修改院校的授权码
+        add(universitiesColleges);
+
+        // 默认创建院校管理员权限的用户
+        Long defaultAdminUserId = coreUserService.createUserBySomeParams(
+                dto.getUserCode(), dto.getPassword(), universitiesColleges.getOrgId(), JT_01, JT_S_04);
+
+        // 用户添加成功后,将用户ID 回传给该学校的默认管理员字段
+        UniversitiesColleges u = new UniversitiesColleges();
+        u.setUniversitiesCollegesId(universitiesColleges.getUniversitiesCollegesId());
+        u.setUniversitiesCdollegesDefaultAdminUserId(defaultAdminUserId);
+        universitiesCollegesDao.updateTemplateById(u);
+
+    }
+
     public boolean edit(UniversitiesColleges universitiesColleges){
 
         universitiesCollegesDao.updateTemplateById(universitiesColleges);
diff --git a/web/src/main/java/com/ibeetl/jlw/web/UniversitiesCollegesController.java b/web/src/main/java/com/ibeetl/jlw/web/UniversitiesCollegesController.java
index f57d165d..fff2b237 100644
--- a/web/src/main/java/com/ibeetl/jlw/web/UniversitiesCollegesController.java
+++ b/web/src/main/java/com/ibeetl/jlw/web/UniversitiesCollegesController.java
@@ -10,6 +10,7 @@ import com.ibeetl.admin.core.service.CoreUserService;
 import com.ibeetl.admin.core.util.HttpRequestLocal;
 import com.ibeetl.admin.core.web.JsonResult;
 import com.ibeetl.jlw.entity.UniversitiesColleges;
+import com.ibeetl.jlw.entity.dto.CreateUserDTO;
 import com.ibeetl.jlw.service.UniversitiesCollegesService;
 import com.ibeetl.jlw.web.query.UniversitiesCollegesQuery;
 import org.apache.commons.logging.Log;
@@ -110,13 +111,14 @@ public class UniversitiesCollegesController{
     @PostMapping(MODEL + "/add.json")
     @Function("universitiesColleges.add")
     @ResponseBody
-    public JsonResult add(@Validated(ValidateConfig.ADD.class)UniversitiesColleges universitiesColleges, BindingResult result){
+    public JsonResult add(@Validated(ValidateConfig.ADD.class)UniversitiesColleges universitiesColleges,
+                          @Validated CreateUserDTO createUserDTO, BindingResult result){
         if(result.hasErrors()){
             return JsonResult.failMessage(result);
         }else{
             universitiesColleges.setAddTime(new Date());
             universitiesColleges.setUniversitiesCollegesStatus(1);
-            universitiesCollegesService.add(universitiesColleges);
+            universitiesCollegesService.addAndCreateCoreUser(universitiesColleges, createUserDTO);
             platformService.clearOrgCache();
             return JsonResult.success();
         }
diff --git a/web/src/main/resources/templates/jlw/universitiesColleges/add.html b/web/src/main/resources/templates/jlw/universitiesColleges/add.html
index 9d141f44..315f182b 100644
--- a/web/src/main/resources/templates/jlw/universitiesColleges/add.html
+++ b/web/src/main/resources/templates/jlw/universitiesColleges/add.html
@@ -95,7 +95,7 @@
             <div class="layui-inline">
                 <label class="layui-form-label"><span class="req">*</span>用户名:</label>
                 <div class="layui-input-inline">
-                    <input type="text" name="userName" value="${universitiesColleges.universitiesCdollegesDefaultAdminUserIdText!}" class="layui-input" >
+                    <input type="text" name="userCode" value="${universitiesColleges.universitiesCdollegesDefaultAdminUserIdText!}" class="layui-input" >
                 </div>
             </div>
             <div class="layui-inline">