Forráskód Böngészése

编辑用户信息时,直接删除主部门导致用户无法登入bug修改

wy 7 hónapja
szülő
commit
88e88f7899

+ 1 - 2
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/domain/PartyEmployee.java

@@ -1078,8 +1078,7 @@ public class PartyEmployee extends AbstractDomain<String, PartyEmployeePo> {
 			// 设置员工-岗位关系
 			if(positionVo.getIsMainPost()){
 				// 记录主岗位关系
-				savePartyRel(positionVo.getId(), 
-						PartyType.POSITION, userId, PartyType.EMPLOYEE, PartyRelType.MAIN_POST);
+				savePartyRel(positionVo.getId(), PartyType.POSITION, userId, PartyType.EMPLOYEE, PartyRelType.MAIN_POST);
 			}
 			else{
                 partyRelRepository.newInstance().deleteByMSB(positionVo.getId(), userId, PartyRelType.MAIN_POST);

+ 13 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/PartyRelRepository.java

@@ -19,6 +19,19 @@ import com.lc.ibps.org.party.persistence.entity.PartyRelPo;
  * </pre>
  */
 public interface PartyRelRepository extends IRepository<String, PartyRelPo,PartyRel>{
+
+
+	/**
+	 * 根据用户id查询ibps_party_rel表中是否有主部门信息的数据
+	 *
+	 */
+	public List<PartyRelPo> getBySubIdBiz(String id);
+
+	/**
+	 * 更具ids删除rel表的数据,ids格式(xxx,xxx,xx...)
+	 * @param ids
+	 */
+	public void remoBySubId(String ids);
 	
 	/**
 	 * 

+ 12 - 0
ibps-common-root/modules/org-biz/src/main/java/com/lc/ibps/org/party/repository/impl/PartyRelRepositoryImpl.java

@@ -50,6 +50,18 @@ public class PartyRelRepositoryImpl extends AbstractRepository<String, PartyRelP
 		return CacheKeyConstants.Region.REGION_IBPS_PARTY;
 	}
 
+
+	@Override
+	public List<PartyRelPo> getBySubIdBiz(String id){
+		return findByKey("getBySubIdBiz", "getBySubIdBiz",
+				b().a("subPid", id).p());
+	}
+	@Override
+	public void remoBySubId(String ids){
+		findByKey("remoBySubId", "remoBySubId",
+				b().a("ids", ids).p());
+	}
+
     @Override
 	public List<PartyRelPo> queryPositionRoleRel(String id, Page page) {
     	DefaultQueryFilter queryFilter = new DefaultQueryFilter();

+ 18 - 0
ibps-model-root/modules/org-model/src/main/resources/com/lc/ibps/org/party/persistence/mapping/PartyRel.map.xml

@@ -146,6 +146,14 @@
 		BIZ_ = #{biz,jdbcType=VARCHAR}
 	</delete>
 
+	<delete id="remoBySubId" parameterType="java.util.Map">
+		DELETE FROM IBPS_PARTY_REL
+		WHERE
+		<if test="@o.Ognl@isNotEmpty(ids)">
+		      FIND_IN_SET(ID_, #{ids,jdbcType=VARCHAR})
+		</if>
+	</delete>
+
 	<!-- use getByMainIdSubIdBiz instead -->
 	<select id="getByMSB" parameterType="java.util.Map" resultMap="PartyRel">
 		SELECT <include refid="columns"/>
@@ -178,6 +186,16 @@
 		AND SUB_PID_=#{subPid,jdbcType=VARCHAR}
 		AND BIZ_ =#{biz,jdbcType=VARCHAR}
 	</select>
+
+
+	<select id="getBySubIdBiz" parameterType="java.util.Map" resultMap="PartyRel">
+		SELECT <include refid="columns"/> FROM IBPS_PARTY_REL
+		WHERE
+		SUB_PID_ = #{subPid,jdbcType=VARCHAR}
+		AND MAIN_TYPE_ = 'position'
+		AND BIZ_ = 'mainPost'
+	</select>
+
 	
 	<select id="findByMainPidOrSubPid" parameterType="java.util.Map" resultMap="PartyRel">
 		SELECT <include refid="columns"/> FROM IBPS_PARTY_REL

+ 11 - 0
ibps-provider-root/modules/provider-platform-default/src/main/java/com/lc/ibps/org/provider/PartyEmployeeProvider.java

@@ -18,6 +18,7 @@ import com.lc.ibps.base.core.util.JacksonUtil;
 import com.lc.ibps.base.core.util.string.StringUtil;
 import com.lc.ibps.base.framework.id.UniqueIdUtil;
 import com.lc.ibps.base.framework.request.signature.annotation.Signature;
+import com.lc.ibps.base.framework.table.ICommonDao;
 import com.lc.ibps.cloud.entity.APIPageList;
 import com.lc.ibps.cloud.entity.APIRequest;
 import com.lc.ibps.cloud.entity.APIRequestParameter;
@@ -104,6 +105,9 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 	private PartyLevelRepository partyLevelRepository;
 	@Resource
 	private IPartyUserService defaultPartyUserService;
+
+
+	private ICommonDao<?> commonDao = AppUtil.getBean(ICommonDao.class);
 	
 	/**
 	 * 员工列表
@@ -945,6 +949,13 @@ public class PartyEmployeeProvider extends GenericProvider implements IPartyEmpl
 		try{
 			PartyEmployee partyEmployee = partyEmployeeRepository.newInstance(partyEmployeePo);
 			PartyEmlpoyeeValidator.checkNullAndIllegal(partyEmployeePo);
+			//真正创建用户或者修改用户的时候,先判断主部门表当中是否有用户信息,若有,需要先删除,否则修改后用户无法登入
+			List<PartyRelPo> relList = partyRelRepository.getBySubIdBiz(partyEmployee.getId());
+			if(relList.size()>0){
+				//先删除rel表中的数据,防止有多主部门信息
+				String ids = relList.stream().map(PartyRelTbl::getId).collect(Collectors.joining(","));
+				partyRelRepository.remoBySubId(ids);
+			}
 			partyEmployee.updateByCascade(partyEmployeeVo);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.org.provider.PartyEmployeeProvider.save.update"));
 			result.addVariable("id", partyEmployeePo.getId());