| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -32,6 +32,7 @@ import com.epmet.commons.tools.scan.param.ImgTaskDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.scan.param.TextScanParamDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.scan.param.TextTaskDTO; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.scan.result.SyncScanResult; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.security.user.LoginUserUtil; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.ConvertUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.DateUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import com.epmet.commons.tools.utils.Result; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -77,6 +78,7 @@ import org.springframework.beans.factory.annotation.Autowired; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.beans.factory.annotation.Value; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.stereotype.Service; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.transaction.annotation.Transactional; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import org.springframework.util.CollectionUtils; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.text.SimpleDateFormat; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import java.util.*; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -134,6 +136,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Autowired | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private GroupEditSubmitRecordDao groupEditSubmitRecordDao; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Autowired | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private LoginUserUtil loginUserUtil; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						@Value("${openapi.scan.server.url}") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private String scanApiUrl; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -1056,11 +1061,15 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							GroupEditSubmitRecordEntity lre = groupEditSubmitRecordDao.getLatestEditSubmitRecord(groupId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (lre != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(lre.getAuditStatus())) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								// 在待审核状态,不允许再次提交编辑
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), "该组已提交编辑待审核,完成审核前不可再次提交"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), "该组已提交编辑,处于待审核状态,完成审核前不可再次提交"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 2.内容检查
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//scanGroupEditContent(groupName, groupIntroduction, groupHeadPhoto);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							scanGroupEditContent(groupName, groupIntroduction, groupHeadPhoto); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String app = loginUserUtil.getLoginUserApp(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String userId = loginUserUtil.getLoginUserId(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String messageText = generateGroupEditMessageText(app, userId, group.getCustomerId(), group.getGridId(), groupName); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 3.创建编辑提交记录
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							GroupEditSubmitRecordEntity editRecord = new GroupEditSubmitRecordEntity(); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1071,12 +1080,88 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							editRecord.setGroupIntroduction(groupIntroduction); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							editRecord.setGroupId(groupId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							editRecord.setGroupName(groupName); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							editRecord.setReadFlag(ReadFlagConstant.UN_READ); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							editRecord.setMessageText(messageText); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (groupEditSubmitRecordDao.insert(editRecord) == 0) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), EpmetErrorCode.GROUP_EDIT_ERROR.getMsg()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * 生成组信息编辑简介文本:xxx申请编辑组信息,请审核 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param app | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param userId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param customerId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param gridId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param groupName | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @return | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private String generateGroupEditMessageText(String app, String userId, String customerId, String gridId, String groupName) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							List<UserRoleResultDTO> resiRoles = getResiRoles(app, customerId, userId, gridId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							boolean isPartymember = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							boolean isWarmhearted = false; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							for (UserRoleResultDTO role : resiRoles) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if (EpmetRoleKeyConstant.WARMHEARTED.equals(role.getRoleKey())) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									isWarmhearted = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if (EpmetRoleKeyConstant.PARTYMEMBER.equals(role.getRoleKey())) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									isPartymember = true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (!isWarmhearted && isPartymember) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode(), "只有党员和热心居民才能创建和编辑小组"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String roleName = ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (isPartymember) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								roleName = ModuleConstant.PARTYMEMBER; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} else if (isWarmhearted) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								roleName = ModuleConstant.WAREMHEARTED_RESI; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							//3.获取居民注册信息
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							resiParam.setCustomerId(customerId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							resiParam.setUserId(userId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							Result<UserResiInfoResultDTO> resiResult = | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									epmetUserFeignClient.getUserResiInfoDTO(resiParam); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String userName = ""; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (resiResult.success() && null != resiResult.getData()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname()) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										+ (StringUtils.isBlank(resiResult.getData().getName()) ? "" : resiResult.getData().getName()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							userName = StringUtils.isBlank(userName) ? ModuleConstant.UNKNOWN : userName; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							return String.format(UserMessageConstant.EDIT_OF_GROUP_MESSAGE_TEMPLATE, roleName, userName, groupName); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * 查询居民的角色列表 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param app | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param customerId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param userId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param gridId | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @return | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private List<UserRoleResultDTO> getResiRoles(String app, String customerId, String userId, String gridId) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							userRoleFormDTO.setApp(app); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							userRoleFormDTO.setCustomerId(customerId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							userRoleFormDTO.setUserId(userId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							userRoleFormDTO.setGridId(gridId); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							Result<List<UserRoleResultDTO>> rolesResult = epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (! rolesResult.success()) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								logger.error("修改组信息:查询居民角色失败,详情:{}", rolesResult.getInternalMsg()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), "查询居民角色失败"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								List<UserRoleResultDTO> roles = rolesResult.getData(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								if (CollectionUtils.isEmpty(roles)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									roles = new ArrayList<>(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								return roles; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						/** | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * 内容检查 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param groupName | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1084,12 +1169,12 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 * @param groupHeadPhoto | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						 */ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
						private void scanGroupEditContent(String groupName, String groupIntroduction, String groupHeadPhoto) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 文本内容审核
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							TextTaskDTO taskDTO = new TextTaskDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							String content = groupName.concat("-").concat(groupIntroduction); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							taskDTO.setContent(content); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							textScanParamDTO.getTasks().add(taskDTO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							Result<SyncScanResult> textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							if (!textSyncScanResult.success()) { | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -1104,6 +1189,7 @@ public class ResiGroupServiceImpl extends BaseServiceImpl<ResiGroupDao, ResiGrou | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							// 图片内容审核
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							ImgTaskDTO task = new ImgTaskDTO(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							task.setDataId(UUID.randomUUID().toString().replace("-", "")); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							task.setUrl(groupHeadPhoto); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
							imgScanParamDTO.getTasks().add(task); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |