Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

周箭河 5 rokov pred
rodič
commit
9d23842c6f

+ 9 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/dao/OrganizationDao.java

@@ -18,4 +18,13 @@ public interface OrganizationDao extends BaseDAO<Integer, Organization> {
      */
     List<Organization> getByTenant(@Param("tenantId") String tenantId);
 
+    /**
+     * @describe 获取指定单位及其所有下级单位的编号
+     * @author Joburgess
+     * @date 2020.06.28
+     * @param parentOrganIdTag:
+     * @return java.util.List<java.lang.Integer>
+     */
+    List<Integer> getSelfAndChildOrganIds(@Param("parentOrganIdTag") String parentOrganIdTag);
+
 }

+ 21 - 9
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/Organization.java

@@ -2,6 +2,7 @@ package com.keao.edu.user.entity;
 
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.user.enums.SettlementTypeEnum;
+import com.keao.edu.user.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -29,13 +30,16 @@ public class Organization {
 	@ApiModelProperty(value = "分润金额",required = false)
 	private java.math.BigDecimal shareProfitAmount;
 
+	@ApiModelProperty(value = "层级")
+	private Integer level;
+
 	@ApiModelProperty(value = "上级合作单位编号")
 	private Integer parentOrganId;
 
-	private Integer parentOrganIdTag;
+	private String parentOrganIdTag;
 
 	@ApiModelProperty(value = "是否允许排考")
-	private Integer isAllowArrangeExam;
+	private YesOrNoEnum isAllowArrangeExam;
 	
 	/**  */
 	private java.util.Date createTime;
@@ -44,17 +48,17 @@ public class Organization {
 	private java.util.Date updateTime;
 
 	@ApiModelProperty(value = "是否删除",required = false)
-	private Integer delFlag;
+	private YesOrNoEnum delFlag;
 
 	private String tenantId;
 
 	private SysUser sysUser;
 
-	public Integer getIsAllowArrangeExam() {
+	public YesOrNoEnum getIsAllowArrangeExam() {
 		return isAllowArrangeExam;
 	}
 
-	public void setIsAllowArrangeExam(Integer isAllowArrangeExam) {
+	public void setIsAllowArrangeExam(YesOrNoEnum isAllowArrangeExam) {
 		this.isAllowArrangeExam = isAllowArrangeExam;
 	}
 
@@ -66,6 +70,14 @@ public class Organization {
 		this.sysUser = sysUser;
 	}
 
+	public Integer getLevel() {
+		return level;
+	}
+
+	public void setLevel(Integer level) {
+		this.level = level;
+	}
+
 	public Integer getParentOrganId() {
 		return parentOrganId;
 	}
@@ -74,11 +86,11 @@ public class Organization {
 		this.parentOrganId = parentOrganId;
 	}
 
-	public Integer getParentOrganIdTag() {
+	public String getParentOrganIdTag() {
 		return parentOrganIdTag;
 	}
 
-	public void setParentOrganIdTag(Integer parentOrganIdTag) {
+	public void setParentOrganIdTag(String parentOrganIdTag) {
 		this.parentOrganIdTag = parentOrganIdTag;
 	}
 
@@ -90,11 +102,11 @@ public class Organization {
 		this.tenantId = tenantId;
 	}
 
-	public Integer getDelFlag() {
+	public YesOrNoEnum getDelFlag() {
 		return delFlag;
 	}
 
-	public void setDelFlag(Integer delFlag) {
+	public void setDelFlag(YesOrNoEnum delFlag) {
 		this.delFlag = delFlag;
 	}
 

+ 12 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/OrganizationService.java

@@ -3,6 +3,9 @@ package com.keao.edu.user.service;
 
 import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.entity.Organization;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface OrganizationService extends BaseService<Integer, Organization> {
 
@@ -17,4 +20,13 @@ public interface OrganizationService extends BaseService<Integer, Organization>
      * @param organization
      */
     void updateOrganization(Organization organization);
+
+    /**
+     * @describe 获取当前分部及其所有子分部编号
+     * @author Joburgess
+     * @date 2020.06.28
+     * @param organId:
+     * @return java.util.List<java.lang.Integer>
+     */
+    List<Integer> getSelfAndChildOrganIds(Integer organId);
 }

+ 40 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/OrganizationServiceImpl.java

@@ -1,17 +1,18 @@
 package com.keao.edu.user.service.impl;
 
 
+import com.keao.edu.auth.api.client.SysUserFeignService;
 import com.keao.edu.auth.api.entity.SysUser;
 import com.keao.edu.common.dal.BaseDAO;
 import com.keao.edu.common.exception.BizException;
 import com.keao.edu.common.service.impl.BaseServiceImpl;
-import com.keao.edu.common.tenant.TenantContextHolder;
 import com.keao.edu.im.api.client.ImFeignService;
 import com.keao.edu.im.api.entity.ImResult;
 import com.keao.edu.im.api.entity.ImUserModel;
 import com.keao.edu.user.dao.OrganizationDao;
 import com.keao.edu.user.dao.SysUserDao;
 import com.keao.edu.user.entity.Organization;
+import com.keao.edu.user.enums.YesOrNoEnum;
 import com.keao.edu.user.service.OrganizationService;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +20,10 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
 @Service
 public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organization> implements OrganizationService {
 	
@@ -27,6 +32,8 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	@Autowired
 	private ImFeignService imFeignService;
 	@Autowired
+	private SysUserFeignService sysUserFeignService;
+	@Autowired
 	private SysUserDao sysUserDao;
 
 	@Override
@@ -37,11 +44,21 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void add(Organization organ) {
+		//获取当前用的organ
+		SysUser queryUserInfo = sysUserFeignService.queryUserInfo();
+		Organization currentOrganization = organDao.get(queryUserInfo.getId());
+		//获取父级的organ
+		if(organ.getIsAllowArrangeExam() == YesOrNoEnum.YES){
+			if(currentOrganization.getIsAllowArrangeExam() == YesOrNoEnum.NO){
+				throw new BizException("无权创建可排考的合作单位");
+			}
+		}
 		SysUser sysUser = organ.getSysUser();
-		String tenantId = TenantContextHolder.getTenantId().toString();
+		String tenantId = queryUserInfo.getTenantId();
 		organ.setTenantId(tenantId);
 		sysUser.setTenantId(tenantId);
 		SysUser user = sysUserDao.queryByPhone(sysUser.getPhone());
+		organ.setParentOrganId(queryUserInfo.getId());
 		if(user != null && user.getId() != null){
 			Organization organization = organDao.get(user.getId());
 			if(organization == null){
@@ -57,6 +74,9 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 				user.setPhone(organ.getContactPhone());
 				sysUserDao.update(user);
 				return;
+			}else if(organization.getDelFlag() == YesOrNoEnum.YES){
+				organization.setDelFlag(YesOrNoEnum.NO);
+				organDao.update(organization);
 			}else{
 				throw new BizException("用户已存在");
 			}
@@ -67,6 +87,11 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		sysUser.setPhone(organ.getContactPhone());
 		sysUserDao.insert(sysUser);
 
+		if(StringUtils.isEmpty(currentOrganization.getParentOrganIdTag())){
+			organ.setParentOrganIdTag(queryUserInfo.getId().toString());
+		}else {
+			organ.setParentOrganIdTag(currentOrganization.getParentOrganIdTag() + "," + queryUserInfo.getId());
+		}
 		organ.setId(sysUser.getId());
 		organDao.insert(organ);
 		//新增用户角色
@@ -103,4 +128,17 @@ public class OrganizationServiceImpl extends BaseServiceImpl<Integer, Organizati
 		sysUserDao.update(sysUser);
 		imFeignService.update(new ImUserModel(sysUser.getId().toString(),sysUser.getRealName(),sysUser.getAvatar()));
 	}
+
+	@Override
+	public List<Integer> getSelfAndChildOrganIds(Integer organId) {
+		Organization organization = organDao.get(organId);
+		if(Objects.isNull(organization)){
+			throw new BizException("当前声部不存在");
+		}
+		List<Integer> selfAndChildOrganIds = organDao.getSelfAndChildOrganIds(organization.getLevel()<=0?organization.getId().toString():organization.getParentOrganIdTag());
+		if(null == selfAndChildOrganIds){
+			selfAndChildOrganIds= Collections.EMPTY_LIST;
+		}
+		return selfAndChildOrganIds;
+	}
 }

+ 19 - 10
edu-user/edu-user-server/src/main/resources/config/mybatis/OrganizationMapper.xml

@@ -11,11 +11,13 @@
 		<result column="name_" property="name" />
 		<result column="contact_name_" property="contactName" />
 		<result column="contact_phone_" property="contactPhone" />
+		<result column="level_" property="level"/>
 		<result column="parent_organ_id_" property="parentOrganId" />
 		<result column="parent_organ_id_tag_" property="parentOrganIdTag" />
 		<result column="settlement_type_" property="settlementType" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
+		<result column="del_flag_" property="delFlag" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
 		<result column="share_profit_amount_" property="shareProfitAmount" />
-		<result column="is_allow_arrange_exam_" property="isAllowArrangeExam" />
+		<result column="is_allow_arrange_exam_" property="isAllowArrangeExam" typeHandler="com.keao.edu.common.dal.CustomEnumTypeHandler"/>
 		<result column="create_time_" property="createTime" />
 		<result column="update_time_" property="updateTime" />
 		<result column="tenant_id_" property="tenantId" />
@@ -34,21 +36,21 @@
 	
 	<!-- 向数据库增加一条记录 -->
 	<insert id="insert" parameterType="com.keao.edu.user.entity.Organization" useGeneratedKeys="true" keyColumn="id" keyProperty="id">
-		INSERT INTO organization (id_,name_,contact_name_,contact_phone_,parent_organ_id_,parent_organ_id_tag_,settlement_type_,share_profit_amount_,is_allow_arrange_exam_,create_time_,update_time_,tenant_id_)
-		VALUES(#{id},#{name},#{contactName},#{contactPhone},#{parentOrganId},#{parentOrganIdTag},#{settlementType,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
-		#{shareProfitAmount},#{isAllowArrangeExam},NOW(),NOW(),#{tenantId})
+		INSERT INTO organization (id_,name_,contact_name_,contact_phone_,level_,parent_organ_id_,parent_organ_id_tag_,settlement_type_,share_profit_amount_,is_allow_arrange_exam_,create_time_,update_time_,tenant_id_)
+		VALUES(#{id},#{name},#{contactName},#{contactPhone},#{level},#{parentOrganId},#{parentOrganIdTag},#{settlementType,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
+		#{shareProfitAmount},#{isAllowArrangeExam,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},NOW(),NOW(),#{tenantId})
 	</insert>
 	
 	<!-- 根据主键查询一条记录 -->
 	<update id="update" parameterType="com.keao.edu.user.entity.Organization">
 		UPDATE organization
 		<set>
-			<if test="updateTime != null">
-				update_time_ = #{updateTime},
-			</if>
 			<if test="contactPhone != null">
 				contact_phone_ = #{contactPhone},
 			</if>
+			<if test="level != null">
+				level_ = #{level},
+			</if>
 			<if test="parentOrganId != null">
 				parent_organ_id_ = #{parentOrganId},
 			</if>
@@ -68,11 +70,15 @@
 				name_ = #{name},
 			</if>
 			<if test="isAllowArrangeExam != null">
-				is_allow_arrange_exam_ = #{isAllowArrangeExam},
+				is_allow_arrange_exam_ = #{isAllowArrangeExam,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
+			</if>
+			<if test="delFlag != null">
+				del_flag_ = #{delFlag,typeHandler=com.keao.edu.common.dal.CustomEnumTypeHandler},
 			</if>
 			<if test="tenantId != null">
 				tenant_id_ = #{tenantId},
 			</if>
+			update_time_ = NOW()
 		</set> WHERE id_ = #{id}
 	</update>
 	
@@ -84,10 +90,10 @@
 	<sql id="organQueryPage">
 		<where>
 			del_flag_ = 0 AND tenant_id_ = #{tenantId}
-			<if test="settlementType">
+			<if test="settlementType != null and settlementType != ''">
 				AND settlement_type_ = #{settlementType}
 			</if>
-			<if test="search">
+			<if test="search != null and search != ''">
 				AND (id_ = #{search} OR name_ LIKE CONCAT('%',#{search},'%')
 				OR contact_name_ LIKE CONCAT('%',#{search},'%')
 				OR contact_phone_ LIKE CONCAT('%',#{search},'%'))
@@ -111,4 +117,7 @@
 	<select id="getByTenant" resultMap="Organization">
 		SELECT * FROM organization WHERE tenant_id_ = #{tenantId} ORDER BY id_
 	</select>
+	<select id="getSelfAndChildOrganIds" resultType="int">
+		SELECT id_ FROM organization WHERE parent_organ_id_tag_ LIKE CONCAT(#{parentOrganIdTag}, '%');
+	</select>
 </mapper>