Browse Source

Merge branch 'dev'

master
sunyuchao 5 years ago
parent
commit
2edd94ac13
  1. 6
      epmet-module/epmet-job/epmet-job-server/pom.xml
  2. 12
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java
  3. 24
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java
  4. 31
      epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java
  5. 4
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.4__addNewRuleTemplate.sql
  6. 4
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.5__editResiGroupRuleCode.sql
  7. 4
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.6__editResiGroupRuleUpLimitDesc.sql
  8. 2
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.7__updateAllRuleLimitDesc.sql
  9. 13
      epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.8__updateRuleDesc.sql
  10. 16
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  11. 4
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkRecordServiceImpl.java
  12. 2
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.10__add_colum_to_share_link_visit.sql
  13. 0
      epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.9__issue_share.sql
  14. 18
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java
  15. 5
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/FileDTO.java
  16. 25
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ShareLinkTypeFormDTO.java
  17. 45
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/TopicEventFormDTO.java
  18. 6
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/DraftDetailResultDTO.java
  19. 31
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MemberRelationBetweenGroupAndGridResultDTO.java
  20. 2
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicBelongGroupResultDTO.java
  21. 20
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
  22. 17
      epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
  23. 16
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java
  24. 3
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
  25. 14
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
  26. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java
  27. 17
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicShareLinkRecordController.java
  28. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/TopicDraftScanTaskDao.java
  29. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
  30. 12
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java
  31. 9
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java
  32. 11
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkRecordService.java
  33. 2
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkVisitRecordService.java
  34. 21
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java
  35. 160
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
  36. 23
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java
  37. 328
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java
  38. 75
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkRecordServiceImpl.java
  39. 7
      epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java
  40. 2
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicAttachmentDao.xml
  41. 5
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml
  42. 16
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/TopicDraftDao.xml
  43. 17
      epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/TopicDraftScanTaskDao.xml

6
epmet-module/epmet-job/epmet-job-server/pom.xml

@ -79,6 +79,12 @@
<artifactId>feign-httpclient</artifactId> <artifactId>feign-httpclient</artifactId>
<version>10.3.0</version> <version>10.3.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>resi-group-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

12
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java

@ -0,0 +1,12 @@
package com.epmet.service;
import com.epmet.commons.tools.utils.Result;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/12/29 17:45
*/
public interface TopicAutoAuditService {
Result autoAudit();
}

24
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java

@ -0,0 +1,24 @@
package com.epmet.service.impl;
import com.epmet.commons.tools.utils.Result;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.TopicAutoAuditService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/12/29 17:46
*/
@Service
public class TopicAutoAuditServiceImpl implements TopicAutoAuditService {
@Autowired
private ResiGroupOpenFeignClient resiGroupOpenFeignClient;
@Override
public Result autoAudit() {
return resiGroupOpenFeignClient.autoAudit();
}
}

31
epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java

@ -0,0 +1,31 @@
package com.epmet.task;
import com.epmet.commons.tools.utils.Result;
import com.epmet.service.TopicAutoAuditService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author zhaoqifeng
* @dscription
* @date 2020/12/29 17:43
*/
@Slf4j
@Component("topicAutoAuditTask")
public class TopicAutoAuditTask implements ITask {
@Autowired
private TopicAutoAuditService topicAutoAuditService;
@Override
public void run(String params) {
log.info("TopicAutoAuditTask定时任务正在执行,参数为:{}", params);
Result result = topicAutoAuditService.autoAudit();
if (result.success()) {
log.info("TopicAutoAuditTask定时任务执行成功");
} else {
log.error("TopicAutoAuditTask定时任务执行失败:" + result.getMsg());
}
}
}

4
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.4__addNewRuleTemplate.sql

@ -23,13 +23,13 @@ INSERT INTO point_rule_default (
VALUES VALUES
( (
'3','发布话题', '3','发布话题',
'对小组内话题进行15字以上评论','publish_one_topic', '楼院小组内通过我有话说功能发布话题','publish_one_topic',
'1','plus', '1','plus',
15,'每天上限为15分',null,'day',5,'time','0','0',0,'APP_USER',now(),'APP_USER',now() 15,'每天上限为15分',null,'day',5,'time','0','0',0,'APP_USER',now(),'APP_USER',now()
), ),
( (
'4','参与话题', '4','参与话题',
'楼院小组内通过我有话说功能发布话题','participate_one_topic', '对小组内话题进行15字以上评论','participate_one_topic',
'1','plus', '1','plus',
6,'每天上限为6分',null,'day',2,'time','0','0',0,'APP_USER',now(),'APP_USER',now() 6,'每天上限为6分',null,'day',2,'time','0','0',0,'APP_USER',now(),'APP_USER',now()
), ),

4
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.5__editResiGroupRuleCode.sql

@ -0,0 +1,4 @@
update `point_rule_default` set event_code = 'invite_new_into_group' where event_code = 'invite_new_resident_into_group';
update `point_rule_default` set event_code = 'invite_resi_into_group' where event_code = 'invite_resident_into_group';
update `point_rule_default` set event_code = 'topic_to_issue' where event_code = 'topic_shifted_to_issue';
update `point_rule_default` set event_code = 'topic_to_project' where event_code = 'topic_shifted_to_project';

4
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.6__editResiGroupRuleUpLimitDesc.sql

@ -0,0 +1,4 @@
update `point_rule_default` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限' where event_code = 'publish_one_topic';
update `point_rule_default` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限' where event_code = 'participate_one_topic';
update `point_rule_default` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限' where event_code = 'shift_topic_to_issue';
update `point_rule_default` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限' where event_code = 'invite_resi_into_group';

2
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.7__updateAllRuleLimitDesc.sql

@ -0,0 +1,2 @@
update `point_rule_default` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限';
update `point_rule` set up_limit_desc = '每日该项所得积分总和上限,为0时表示没有积分上限'

13
epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.8__updateRuleDesc.sql

@ -0,0 +1,13 @@
update `point_rule_default` set rule_desc = '通过话题/议题分享链接邀请新用户入组,且注册居民成功入组' where event_code = 'invite_new_into_group' and rule_name = '邀请新人入组';
update `point_rule_default` set rule_desc = '通过话题/议题分享链接邀请已注册用户入组,且通过入组审核' where event_code = 'invite_resi_into_group' and rule_name = '邀请入组';
update `point_rule_default` set rule_desc = '小组中发布的话题被组长转为议题,又被网格员转为项目' where event_code = 'topic_to_project' and rule_name = '话题被转为项目';
update `point_rule` set rule_desc = '通过话题/议题分享链接邀请新用户入组,且注册居民成功入组' where event_code = 'invite_new_into_group' and rule_name = '邀请新人入组';
update `point_rule` set rule_desc = '通过话题/议题分享链接邀请已注册用户入组,且通过入组审核' where event_code = 'invite_resi_into_group' and rule_name = '邀请入组';
update `point_rule` set rule_desc = '小组中发布的话题被组长转为议题,又被网格员转为项目' where event_code = 'topic_to_project' and rule_name = '话题被转为项目';

16
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -1,5 +1,6 @@
package com.epmet.service.impl; package com.epmet.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.client.utils.StringUtils; import com.alibaba.nacos.client.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -7,6 +8,7 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant; import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.EventEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
@ -26,6 +28,8 @@ import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao; import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dto.*; import com.epmet.dto.*;
import com.epmet.dto.form.*; import com.epmet.dto.form.*;
import com.epmet.dto.form.IssueAuditionFormDTO;
import com.epmet.dto.form.IssueShiftedFromTopicFormDTO;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.IssueEntity; import com.epmet.entity.IssueEntity;
import com.epmet.entity.IssueProcessEntity; import com.epmet.entity.IssueProcessEntity;
@ -40,10 +44,8 @@ import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO;
import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO; import com.epmet.resi.group.dto.group.result.GroupShiftProjectListResultDTO;
import com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO; import com.epmet.resi.group.dto.group.result.GroupVotingListResultDTO;
import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO; import com.epmet.resi.group.dto.topic.form.GovTopicIssueInfoFormDTO;
import com.epmet.resi.group.dto.topic.form.ResiTopicTurnIssueFromDTO;
import com.epmet.resi.group.dto.topic.form.TopicIdListFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicInfoFormDTO;
import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO; import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; import com.epmet.resi.group.feign.ResiGroupOpenFeignClient;
import com.epmet.service.*; import com.epmet.service.*;
@ -862,6 +864,14 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
}catch(RenException e){ }catch(RenException e){
logger.error(e.getInternalMsg()); logger.error(e.getInternalMsg());
} }
//7:发送话题转议题积分事件
TopicEventFormDTO eventParam = new TopicEventFormDTO();
eventParam.setTopicId(entity.getSourceId());
eventParam.setEvent(EventEnum.TOPIC_SHIFTED_TO_PROJECT);
if(!resiGroupOpenFeignClient.sendEvent(eventParam).success()){
logger.warn("com.epmet.service.impl.IssueServiceImpl.shiftProject,话题被转为项目积分事件发送失败,参数:{}", JSON.toJSONString(formDTO));
}
} }
/** /**

4
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkRecordServiceImpl.java

@ -127,10 +127,10 @@ public class IssueShareLinkRecordServiceImpl extends BaseServiceImpl<IssueShareL
} }
IssueShareLinkRecordEntity entity = new IssueShareLinkRecordEntity(); IssueShareLinkRecordEntity entity = new IssueShareLinkRecordEntity();
entity.setCustomerId(issueInfo.getCustomerId()); entity.setCustomerId(issueInfo.getCustomerId());
if (StringUtils.isBlank(topicInfo.getData().getGroupId())){ if (StringUtils.isBlank(topicInfo.getData().getGridId())){
throw new RenException(IssueShareConstant.TOPIC_BELONG_GROUP_NULL); throw new RenException(IssueShareConstant.TOPIC_BELONG_GROUP_NULL);
} }
entity.setGridId(topicInfo.getData().getGroupId()); entity.setGridId(topicInfo.getData().getGridId());
entity.setIssueId(formDTO.getIssueId()); entity.setIssueId(formDTO.getIssueId());
entity.setShareUserId(tokenDto.getUserId()); entity.setShareUserId(tokenDto.getUserId());
entity.setInviteContent(null); entity.setInviteContent(null);

2
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.10__add_colum_to_share_link_visit.sql

@ -0,0 +1,2 @@
ALTER TABLE `issue_share_link_visit_record`
ADD COLUMN `IF_JOIN_GROUP` tinyint(1) DEFAULT '0' COMMENT '是否同意进组,1是0否,在注册完居民之后,是否同意入组,如果同意发送入组申请,不同意此项默认为0';

0
epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.7__issue_share.sql → epmet-module/gov-issue/gov-issue-server/src/main/resources/db/migration/V0.0.9__issue_share.sql

18
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java

@ -95,10 +95,10 @@ public interface TopicConstant {
String REJECTED = "rejected"; String REJECTED = "rejected";
String APPROVED = "approved"; String APPROVED = "approved";
String SUBMIT = "submit"; String SUBMIT = "submit";
String IMAGE = " image"; String IMAGE = "image";
String VIDEO = " video"; String VIDEO = "video";
String VOICE = " voice"; String VOICE = "voice";
String DOC = " doc"; String DOC = "doc";
String GROUP_INFO_FAILURE = "根据groupId未查询到组信息......"; String GROUP_INFO_FAILURE = "根据groupId未查询到组信息......";
@ -107,4 +107,14 @@ public interface TopicConstant {
String COMMENT_TOPIC_FAILURE = "评论话题加分失败......"; String COMMENT_TOPIC_FAILURE = "评论话题加分失败......";
String GET_CUSTOMER_ID_FAILURE = "查询客户ID失败......"; String GET_CUSTOMER_ID_FAILURE = "查询客户ID失败......";
/**
* 字段 附件类型 小写 驼峰
*/
String FIELD_TOPIC_ATTACHMENT_TYPE_HUMP = "attachmentType";
/**
* 字段 附件类型 大写 下划线
*/
String FIELD_TOPIC_ATTACHMENT_TYPE = "ATTACHMENT_TYPE";
} }

5
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/FileDTO.java

@ -1,5 +1,6 @@
package com.epmet.resi.group.dto.topic.form; package com.epmet.resi.group.dto.topic.form;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -15,10 +16,14 @@ import java.io.Serializable;
public class FileDTO implements Serializable { public class FileDTO implements Serializable {
private static final long serialVersionUID = -3930520724652521552L; private static final long serialVersionUID = -3930520724652521552L;
@JsonIgnore
private String name; private String name;
private String url; private String url;
@JsonIgnore
private String type; private String type;
@JsonIgnore
private String format; private String format;
@JsonIgnore
private Integer size; private Integer size;
private Integer duration; private Integer duration;
} }

25
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/ShareLinkTypeFormDTO.java

@ -0,0 +1,25 @@
package com.epmet.resi.group.dto.topic.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Description 分享链接类型和Id入参
* @ClassName ShareLinkTypefFormDTO
* @Auth wangc
* @Date 2020-12-29 14:53
*/
@Data
public class ShareLinkTypeFormDTO implements Serializable {
@NotBlank(message = "链接Id不能为空")
private String id;
@NotBlank(message = "链接类型不能为空")
private String type;
@NotBlank(message = "用户Id不能为空")
private String userId;
}

45
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/form/TopicEventFormDTO.java

@ -0,0 +1,45 @@
package com.epmet.resi.group.dto.topic.form;
import com.epmet.commons.tools.enums.EventEnum;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Description 话题相关积分入参dto
* @ClassName TopicEventFormDTO
* @Auth wangc
* @Date 2021-01-04 16:37
*/
@Data
public class TopicEventFormDTO implements Serializable {
private static final long serialVersionUID = 2297474207576464905L;
/**
* 话题Id
*/
@NotBlank(message = "话题Id不能为空")
private String topicId;
/**
* 话题作者Id
*/
//private String topicAuthorId;
/**
* 议题发起人Id
*/
private String issuePublisherId;
/**
* 事件枚举
*/
@NotNull(message = "楼院小组事件枚举类型不能为空")
private EventEnum event;
/**
* 后续相关参数可再添加
*/
}

6
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/DraftDetailResultDTO.java

@ -1,5 +1,6 @@
package com.epmet.resi.group.dto.topic.result; package com.epmet.resi.group.dto.topic.result;
import com.epmet.resi.group.dto.topic.form.FileDTO;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
@ -16,6 +17,7 @@ import java.util.List;
public class DraftDetailResultDTO implements Serializable { public class DraftDetailResultDTO implements Serializable {
private static final long serialVersionUID = -7445417689558651158L; private static final long serialVersionUID = -7445417689558651158L;
private String groupId;
/** /**
* 话题草稿id * 话题草稿id
*/ */
@ -54,6 +56,6 @@ public class DraftDetailResultDTO implements Serializable {
/** /**
* 音频附件集合 * 音频附件集合
*/ */
private List<String> voiceList; private List<FileDTO> voiceList;
private List<String> videoList; private List<FileDTO> videoList;
} }

31
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MemberRelationBetweenGroupAndGridResultDTO.java

@ -0,0 +1,31 @@
package com.epmet.resi.group.dto.topic.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 通过链接进入小程序的用户与链接所在的小组与网格的关系
* @ClassName MemberRelationBetweenGroupAndGridResultDTO
* @Auth wangc
* @Date 2020-12-29 14:58
*/
@Data
public class MemberRelationBetweenGroupAndGridResultDTO implements Serializable {
private static final long serialVersionUID = -5389490307870064071L;
/**
* 是否存在入组待审核记录true存在false不存在
*/
private Boolean awaitAudit = false;
/**
* 是否在群内标志已经在群内:true, 不在群内:false
*/
private Boolean inGroup = false;
/**
* 此人有没有加入所在小组所属网格下的任何一个小组true加入false未加入
*/
private Boolean inAnyGroup = false;
}

2
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicBelongGroupResultDTO.java

@ -18,4 +18,6 @@ public class TopicBelongGroupResultDTO implements Serializable {
private static final long serialVersionUID = 8180287697221964032L; private static final long serialVersionUID = 8180287697221964032L;
private String groupId; private String groupId;
private String gridId;
} }

20
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java

@ -164,4 +164,24 @@ public interface ResiGroupOpenFeignClient {
*/ */
@PostMapping("resi/group/topicsharelinkvisitrecord/checkinviterelationship") @PostMapping("resi/group/topicsharelinkvisitrecord/checkinviterelationship")
Result<String> checkInviteRelationship(@RequestBody SharableTopicAndInviteeFormDTO param); Result<String> checkInviteRelationship(@RequestBody SharableTopicAndInviteeFormDTO param);
/**
* 自动审核
* @author zhaoqifeng
* @date 2020/12/30 10:11
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("resi/group/topicdraft/autoAudit")
Result autoAudit();
/**
* @Description 根据事件枚举发送积分事件
* @param param
* @return void
* @author wangc
* @date 2021.01.04 16:41
*/
@PostMapping("resi/group/topic/sendevent")
Result sendEvent(@RequestBody TopicEventFormDTO param);
} }

17
epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java

@ -110,4 +110,21 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien
public Result<String> checkInviteRelationship(SharableTopicAndInviteeFormDTO param) { public Result<String> checkInviteRelationship(SharableTopicAndInviteeFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectTopicBelongGroup", param); return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "selectTopicBelongGroup", param);
} }
/**
* 自动审核
*
* @return com.epmet.commons.tools.utils.Result
* @author zhaoqifeng
* @date 2020/12/30 10:11
*/
@Override
public Result autoAudit() {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "autoAudit");
}
@Override
public Result sendEvent(TopicEventFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "sendEvent",param);
}
} }

16
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java

@ -48,6 +48,7 @@ import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.member.entity.GroupMemeberOperationEntity; import com.epmet.modules.member.entity.GroupMemeberOperationEntity;
import com.epmet.modules.member.entity.ResiGroupMemberEntity; import com.epmet.modules.member.entity.ResiGroupMemberEntity;
import com.epmet.modules.member.redis.GroupMemeberOperationRedis; import com.epmet.modules.member.redis.GroupMemeberOperationRedis;
import com.epmet.modules.member.redis.ResiGroupMemberRedis;
import com.epmet.modules.member.service.GroupMemeberOperationService; import com.epmet.modules.member.service.GroupMemeberOperationService;
import com.epmet.modules.member.service.ResiGroupMemberService; import com.epmet.modules.member.service.ResiGroupMemberService;
import com.epmet.modules.topic.dao.ResiTopicDao; import com.epmet.modules.topic.dao.ResiTopicDao;
@ -64,6 +65,7 @@ import com.epmet.resi.group.dto.group.ResiGroupDTO;
import com.epmet.resi.group.dto.group.ResiGroupInfoRedisDTO; import com.epmet.resi.group.dto.group.ResiGroupInfoRedisDTO;
import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO; import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO;
import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO;
import com.epmet.resi.group.dto.member.form.JoinGroupByShareLinkFormDTO; import com.epmet.resi.group.dto.member.form.JoinGroupByShareLinkFormDTO;
import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO; import com.epmet.resi.group.dto.member.form.RemoveMemberFormDTO;
import com.epmet.resi.group.dto.member.result.JoinGroupApplyRealTimeResultDTO; import com.epmet.resi.group.dto.member.result.JoinGroupApplyRealTimeResultDTO;
@ -107,6 +109,8 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
@Autowired @Autowired
private ResiGroupRedis groupRedis; private ResiGroupRedis groupRedis;
@Autowired @Autowired
private ResiGroupMemberRedis memberRedis;
@Autowired
private EpmetUserOpenFeignClient userClient; private EpmetUserOpenFeignClient userClient;
@Autowired @Autowired
private TopicShareLinkVisitRecordDao topicShareLinkVisitRecordDao; private TopicShareLinkVisitRecordDao topicShareLinkVisitRecordDao;
@ -274,8 +278,12 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
groupMemeberOperation.setEnterGroupType(StringUtils.equals("topic",param.getShareLinkType()) ? ModuleConstant.ENTER_GROUP_TYPE_TOPIC_LINK : ModuleConstant.ENTER_GROUP_TYPE_ISSUE_LINK); groupMemeberOperation.setEnterGroupType(StringUtils.equals("topic",param.getShareLinkType()) ? ModuleConstant.ENTER_GROUP_TYPE_TOPIC_LINK : ModuleConstant.ENTER_GROUP_TYPE_ISSUE_LINK);
groupMemeberOperation.setGroupInvitationId(param.getShareLinkId()); groupMemeberOperation.setGroupInvitationId(param.getShareLinkId());
groupMemeberOperation.setOperateUserId(param.getUserId()); groupMemeberOperation.setOperateUserId(param.getUserId());
groupMemeberOperation.setOperateDes(StringUtils.equals("topic",param.getShareLinkType()) ? "通过话题分享链接申请入组" : "通过议题分享链接申请入组"); ResiGroupMemberInfoRedisDTO memberInfo = memberRedis.get(groupId, inviter);
if(null != memberInfo && StringUtils.isNotBlank(memberInfo.getUserShowName()))
groupMemeberOperation.setOperateDes(String.format("通过%s的",memberInfo.getUserShowName())
+ (StringUtils.equals("topic",param.getShareLinkType()) ? "话题" : "议题" )+ "分享加入小组");
else
groupMemeberOperation.setOperateDes(StringUtils.equals("topic",param.getShareLinkType()) ? "通过话题分享申请入组" : "通过议题分享申请入组" );
//入组审核开关是开启状态则需要组长审核 //入组审核开关是开启状态则需要组长审核
if (StringUtils.equals(GroupStateConstant.AUDIT_SWITCH_OPEN , resiGroupDTO.getAuditSwitch())) { if (StringUtils.equals(GroupStateConstant.AUDIT_SWITCH_OPEN , resiGroupDTO.getAuditSwitch())) {
groupMemeberOperation.setOperateStatus(MemberStateConstant.UNDER_AUDITTING); groupMemeberOperation.setOperateStatus(MemberStateConstant.UNDER_AUDITTING);
@ -289,7 +297,6 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
UserRoleDTO userRoleDTO = getUserRoleDTO(userRoleResponse.getData()); UserRoleDTO userRoleDTO = getUserRoleDTO(userRoleResponse.getData());
//新增一条邀请入群、直接审核通过的入群记录 //新增一条邀请入群、直接审核通过的入群记录
groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED); groupMemeberOperation.setOperateStatus(MemberStateConstant.APPROVED);
groupMemeberOperation.setOperateDes("通过分享链接入组,入组审核开关关闭,直接入组");
save(groupMemeberOperation); save(groupMemeberOperation);
result.setStatus("entered"); result.setStatus("entered");
//发送积分事件 //发送积分事件
@ -333,10 +340,11 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl<GroupMemeb
Result<List<UserBaseInfoResultDTO>> userResponse = userClient.queryUserBaseInfo(userParam); Result<List<UserBaseInfoResultDTO>> userResponse = userClient.queryUserBaseInfo(userParam);
if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){ if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){
UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO); UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO);
pointEventMsg.setRemark( new StringBuilder("邀请").append("加入") pointEventMsg.setRemark( new StringBuilder("邀请")
.append(user.getStreet()).append("-").append(user.getSurname()) .append(user.getStreet()).append("-").append(user.getSurname())
.append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" : .append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" :
StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士") StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士")
.append("加入")
.append(resiGroupDTO.getGroupName()).append("小组").toString()); .append(resiGroupDTO.getGroupName()).append("小组").toString());
} }
pointEventMsgList.add(pointEventMsg); pointEventMsgList.add(pointEventMsg);

3
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java

@ -545,10 +545,11 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl<ResiGroupMemberD
Result<List<UserBaseInfoResultDTO>> userResponse = userOpenFeignClient.queryUserBaseInfo(userParam); Result<List<UserBaseInfoResultDTO>> userResponse = userOpenFeignClient.queryUserBaseInfo(userParam);
if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){ if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){
UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO); UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO);
pointEventMsg.setRemark( new StringBuilder("邀请").append("加入") pointEventMsg.setRemark( new StringBuilder("邀请")
.append(user.getStreet()).append("-").append(user.getSurname()) .append(user.getStreet()).append("-").append(user.getSurname())
.append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" : .append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" :
StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士") StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士")
.append("加入")
.append(resiGroupDTO.getGroupName()).append("小组").toString()); .append(resiGroupDTO.getGroupName()).append("小组").toString());
} }

14
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java

@ -402,4 +402,18 @@ public class ResiTopicController {
return new Result<TopicAttachmentResultDTO>().ok(topicService.topicAttachmentList(formDTO)); return new Result<TopicAttachmentResultDTO>().ok(topicService.topicAttachmentList(formDTO));
} }
/**
* @Description 根据事件枚举发送积分事件
* @param param
* @return void
* @author wangc
* @date 2021.01.04 16:41
*/
@PostMapping("sendevent")
public Result sendEvent(@RequestBody TopicEventFormDTO param){
ValidatorUtils.validateEntity(param);
topicService.sendTopicPointEventByEventType(param);
return new Result();
}
} }

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java

@ -180,4 +180,16 @@ public class TopicDraftController {
formDTO.setUserId(tokenDto.getUserId()); formDTO.setUserId(tokenDto.getUserId());
return new Result<List<MyAuditingListResultDTO>>().ok(topicDraftService.myAuditingList(formDTO)); return new Result<List<MyAuditingListResultDTO>>().ok(topicDraftService.myAuditingList(formDTO));
} }
/**
* 自动审核
* @author zhaoqifeng
* @date 2020/12/30 10:11
* @return com.epmet.commons.tools.utils.Result
*/
@PostMapping("autoAudit")
public Result autoAudit() {
topicDraftService.autoAudit();
return new Result();
}
} }

17
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicShareLinkRecordController.java

@ -10,11 +10,14 @@ import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup; import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup; import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.modules.topic.service.TopicShareLinkRecordService; import com.epmet.modules.topic.service.TopicShareLinkRecordService;
import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService;
import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO; import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO;
import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO; import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO;
import com.epmet.resi.group.dto.topic.form.ShareLinkTypeFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO; import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO; import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO;
import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO; import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO;
import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO; import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO; import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -108,4 +111,18 @@ public class TopicShareLinkRecordController {
return new Result<TopicVisitResultDTO>().ok(topicShareLinkRecordService.topicVisit(formDTO,tokenDto)); return new Result<TopicVisitResultDTO>().ok(topicShareLinkRecordService.topicVisit(formDTO,tokenDto));
} }
/**
* @Description 根据链接信息查询被邀请人在组/网格内的状态
* @param param
* @return com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO
* @author wangc
* @date 2020.12.29 15:01
*/
@PostMapping("getstatus")
public Result<MemberRelationBetweenGroupAndGridResultDTO> getStatus(@LoginUser TokenDto token, @RequestBody ShareLinkTypeFormDTO param){
param.setUserId(token.getUserId());
ValidatorUtils.validateEntity(param);
return new Result<MemberRelationBetweenGroupAndGridResultDTO>().ok(topicShareLinkRecordService.getStatusByLinkAndInvitee(param));
}
} }

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/TopicDraftScanTaskDao.java

@ -19,7 +19,9 @@ package com.epmet.modules.topic.dao;
import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.modules.topic.entity.TopicDraftScanTaskEntity; import com.epmet.modules.topic.entity.TopicDraftScanTaskEntity;
import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/** /**
* 话题附件检测任务表 * 话题附件检测任务表
@ -29,5 +31,15 @@ import org.apache.ibatis.annotations.Mapper;
*/ */
@Mapper @Mapper
public interface TopicDraftScanTaskDao extends BaseDao<TopicDraftScanTaskEntity> { public interface TopicDraftScanTaskDao extends BaseDao<TopicDraftScanTaskEntity> {
void updateByTask(TopicDraftScanTaskEntity entity); void updateByTask(TopicDraftScanTaskEntity entity);
/**
* 获取检测任务信息
* @author zhaoqifeng
* @date 2020/12/29 14:30
* @param taskId
* @return com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO
*/
TopicDraftScanTaskDTO selectScanByTask(@Param("taskId") String taskId);
} }

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java

@ -331,4 +331,13 @@ public interface ResiTopicService extends BaseService<ResiTopicEntity> {
* @Description 获取话题附件信息 * @Description 获取话题附件信息
**/ **/
TopicAttachmentResultDTO topicAttachmentList(TopicAttachmentFormDTO formDTO); TopicAttachmentResultDTO topicAttachmentList(TopicAttachmentFormDTO formDTO);
/**
* @Description 根据事件枚举发送积分事件
* @param param
* @return void
* @author wangc
* @date 2021.01.04 16:41
*/
void sendTopicPointEventByEventType(TopicEventFormDTO param);
} }

12
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java

@ -94,4 +94,16 @@ public interface TopicDraftScanTaskService extends BaseService<TopicDraftScanTas
void delete(String[] ids); void delete(String[] ids);
void updateByTask(TopicDraftScanTaskDTO dto); void updateByTask(TopicDraftScanTaskDTO dto);
TopicDraftScanTaskDTO getScanByTask(String taskId);
/**
* 获取审核中的数据
* @author zhaoqifeng
* @date 2020/12/29 17:57
* @param draftId
* @param status
* @return java.util.List<com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO>
*/
List<TopicDraftScanTaskDTO> getScanTaskList(String draftId, String status);
} }

9
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java

@ -153,4 +153,13 @@ public interface TopicDraftService extends BaseService<TopicDraftEntity> {
* @Description 个人中心-我发表的话题-审核中列表 * @Description 个人中心-我发表的话题-审核中列表
**/ **/
List<MyAuditingListResultDTO> myAuditingList(MyAuditingListFormDTO formDTO); List<MyAuditingListResultDTO> myAuditingList(MyAuditingListFormDTO formDTO);
/**
* 自动审核
* @author zhaoqifeng
* @date 2020/12/29 17:51
* @param
* @return void
*/
void autoAudit();
} }

11
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkRecordService.java

@ -6,9 +6,11 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.modules.topic.entity.TopicShareLinkRecordEntity; import com.epmet.modules.topic.entity.TopicShareLinkRecordEntity;
import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO; import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO;
import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO; import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO;
import com.epmet.resi.group.dto.topic.form.ShareLinkTypeFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO; import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO; import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO;
import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO; import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO;
import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO; import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO; import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO;
@ -107,4 +109,13 @@ public interface TopicShareLinkRecordService extends BaseService<TopicShareLinkR
* @date 2020/12/18 下午3:34 * @date 2020/12/18 下午3:34
*/ */
TopicVisitResultDTO topicVisit(TopicVisitFormDTO formDTO,TokenDto tokenDto); TopicVisitResultDTO topicVisit(TopicVisitFormDTO formDTO,TokenDto tokenDto);
/**
* @Description 根据链接信息查询被邀请人在组/网格内的状态
* @param param
* @return com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO
* @author wangc
* @date 2020.12.29 15:01
*/
MemberRelationBetweenGroupAndGridResultDTO getStatusByLinkAndInvitee(ShareLinkTypeFormDTO param);
} }

2
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkVisitRecordService.java

@ -5,6 +5,8 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity; import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.resi.group.dto.topic.TopicShareLinkVisitRecordDTO; import com.epmet.resi.group.dto.topic.TopicShareLinkVisitRecordDTO;
import com.epmet.resi.group.dto.topic.form.SharableTopicAndInviteeFormDTO; import com.epmet.resi.group.dto.topic.form.SharableTopicAndInviteeFormDTO;
import com.epmet.resi.group.dto.topic.form.ShareLinkTypeFormDTO;
import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

21
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java

@ -43,6 +43,7 @@ import com.epmet.dto.result.UserResiInfoResultDTO;
import com.epmet.modules.comment.entity.ResiTopicCommentEntity; import com.epmet.modules.comment.entity.ResiTopicCommentEntity;
import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.constant.ResiGroupRedisKeys;
import com.epmet.modules.feign.EpmetUserFeignClient; import com.epmet.modules.feign.EpmetUserFeignClient;
import com.epmet.modules.group.redis.ResiGroupRedis;
import com.epmet.modules.member.dao.ResiGroupMemberDao; import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.member.redis.ResiGroupMemberRedis; import com.epmet.modules.member.redis.ResiGroupMemberRedis;
import com.epmet.modules.member.service.ResiGroupMemberService; import com.epmet.modules.member.service.ResiGroupMemberService;
@ -63,6 +64,7 @@ import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import com.epmet.resi.group.dto.topic.form.ResiPublishCommentFormDTO; import com.epmet.resi.group.dto.topic.form.ResiPublishCommentFormDTO;
import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO; import com.epmet.resi.group.dto.topic.result.IssueGridResultDTO;
import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO; import com.epmet.resi.mine.dto.from.MyPartProjectsFormDTO;
import com.google.common.base.CharMatcher;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
@ -97,6 +99,9 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
@Autowired @Autowired
ResiGroupMemberRedis resiGroupMemberRedis; ResiGroupMemberRedis resiGroupMemberRedis;
@Autowired
ResiGroupRedis groupRedis;
@Autowired @Autowired
ResiGroupMemberDao resiGroupMemberDao; ResiGroupMemberDao resiGroupMemberDao;
@ -229,7 +234,7 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
// 话题评论前3次,加积分【对小组内话题进行15字以上评论】 // 话题评论前3次,加积分【对小组内话题进行15字以上评论】
Integer commentCount = baseDao.selectCommentCountByUserId(tokenDto.getUserId()); Integer commentCount = baseDao.selectCommentCountByUserId(tokenDto.getUserId());
if (null != commentCount && commentCount <= NumConstant.THREE){ if (null == commentCount || commentCount <= NumConstant.THREE){
if (StringUtils.isNotBlank(commentContent) && commentContent.length() > NumConstant.FIFTEEN){ if (StringUtils.isNotBlank(commentContent) && commentContent.length() > NumConstant.FIFTEEN){
//mq的事件类型 //mq的事件类型
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
@ -248,6 +253,20 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl<ResiTopicCommen
pointEventMsg.setActionFlag(MqConstant.PLUS); pointEventMsg.setActionFlag(MqConstant.PLUS);
pointEventMsg.setIsCommon(false); pointEventMsg.setIsCommon(false);
pointEventMsg.setEventTag(mqBaseMsgDTO.getEventTag()); pointEventMsg.setEventTag(mqBaseMsgDTO.getEventTag());
//某某小组中评论话题“某某某…”
StringBuilder builder = new StringBuilder(groupRedis.get(topic.getGroupId()).getGroupName()).append("小组中评论");
String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent());
if(StringUtils.isNotBlank(content)){
builder.append("话题");
builder.append("\"");
builder.append(
content.length() > NumConstant.TEN ?
(content.substring(NumConstant.ZERO,NumConstant.TEN) + "…") :
content);
builder.append("\"");
}else builder.append("语音话题");
pointEventMsg.setRemark(builder.toString());
pointEventMsgList.add(pointEventMsg); pointEventMsgList.add(pointEventMsg);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList)); mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));

160
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java

@ -91,10 +91,12 @@ import com.epmet.resi.group.dto.topic.result.GovTopicIssueInfoResultDTO;
import com.epmet.resi.group.dto.topic.result.*; import com.epmet.resi.group.dto.topic.result.*;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.base.CharMatcher;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.jsoup.helper.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -697,6 +699,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>(); QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR); wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(TopicConstant.TOPIC_ID,topicId); wrapper.eq(TopicConstant.TOPIC_ID,topicId);
wrapper.eq(TopicConstant.FIELD_TOPIC_ATTACHMENT_TYPE,"image");
wrapper.orderByAsc(TopicConstant.SORT); wrapper.orderByAsc(TopicConstant.SORT);
List<ResiTopicAttachmentEntity> attachments = resiTopicAttachmentDao.selectList(wrapper); List<ResiTopicAttachmentEntity> attachments = resiTopicAttachmentDao.selectList(wrapper);
List<String> attachmentUrls = new ArrayList<>(); List<String> attachmentUrls = new ArrayList<>();
@ -1247,6 +1250,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>(); QueryWrapper<ResiTopicAttachmentEntity> wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR); wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(TopicConstant.TOPIC_ID,formDTO.getTopicId()); wrapper.eq(TopicConstant.TOPIC_ID,formDTO.getTopicId());
wrapper.eq(TopicConstant.FIELD_TOPIC_ATTACHMENT_TYPE,"image");
wrapper.orderByAsc(TopicConstant.SORT); wrapper.orderByAsc(TopicConstant.SORT);
List<ResiTopicAttachmentEntity> attachments = resiTopicAttachmentDao.selectList(wrapper); List<ResiTopicAttachmentEntity> attachments = resiTopicAttachmentDao.selectList(wrapper);
if (attachments.size() != NumConstant.ZERO){ if (attachments.size() != NumConstant.ZERO){
@ -1580,8 +1584,56 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
} }
//发送积分 //发送积分
ResiTopicEntity topic = baseDao.selectById(topicTurnIssueFromDTO.getTopicId());
//mq的事件类型
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
mqBaseMsgDTO.setEventClass("resi_group");
//事件code 因为楼院小组的事件回调统一入口,外层的EventTag不能够判断具体的事件
//因为可能会一次发送多个事件集合,需要对集合里的对象逐个判断
mqBaseMsgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag());
List<BasePointEventMsg> pointEventMsgList = new ArrayList<>();
//1.话题被转为议题 组内成员 //1.话题被转为议题 组内成员
BasePointEventMsg pointEventMsg = new BasePointEventMsg();
pointEventMsg.setCustomerId(groupCache.getCustomerId());
pointEventMsg.setUserId(group.getTopicAuthorId());
pointEventMsg.setActionFlag(MqConstant.PLUS);
pointEventMsg.setIsCommon(false);
pointEventMsg.setEventTag(EventEnum.TOPIC_SHIFTED_TO_ISSUE.getEventTag());
//某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为议题
String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent());
pointEventMsg.setRemark(new StringBuilder(groupCache.getGroupName()).append("小组中发布的")
.append(
StringUtils.isBlank(content)
|| StringUtils.equals("语音话题",content)? "语音话题" :
"话题\"" +
content
.substring(NumConstant.ZERO,content.length() < NumConstant.TEN ? content.length() : NumConstant.TEN)
+ (NumConstant.TEN > content.length() ? "\"" : "…\"")
).append("被转为议题").toString());
pointEventMsgList.add(pointEventMsg);
//2.转话题为议题 组长 //2.转话题为议题 组长
BasePointEventMsg pointEventMsg2 = new BasePointEventMsg();
pointEventMsg2.setCustomerId(groupCache.getCustomerId());
pointEventMsg2.setUserId(topicTurnIssueFromDTO.getUserId());
pointEventMsg2.setActionFlag(MqConstant.PLUS);
pointEventMsg2.setIsCommon(false);
pointEventMsg2.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag());
//将话题“某某某…” (前十个字后面省略号) 转为议题
pointEventMsg2.setRemark(new StringBuilder("将")
.append(
new StringBuilder(new StringBuilder(pointEventMsg.getRemark().replaceFirst(new StringBuilder(groupCache.getGroupName()).append("小组中发布的").toString(),""))
.reverse().toString()
.replaceFirst("题议为转被","")).reverse()
).append("转为议题").toString());
pointEventMsgList.add(pointEventMsg2);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));
if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(topicTurnIssueFromDTO));
}
} }
else { else {
ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class); ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class);
@ -1664,10 +1716,61 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
); );
resiGroupRedis.set(groupCache); resiGroupRedis.set(groupCache);
} }
//发送积分
//mq的事件类型
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
mqBaseMsgDTO.setEventClass("resi_group");
//事件code 因为楼院小组的事件回调统一入口,外层的EventTag不能够判断具体的事件
//因为可能会一次发送多个事件集合,需要对集合里的对象逐个判断
mqBaseMsgDTO.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag());
List<BasePointEventMsg> pointEventMsgList = new ArrayList<>();
//1.话题被转为议题 组内成员
BasePointEventMsg pointEventMsg = new BasePointEventMsg();
pointEventMsg.setCustomerId(groupCache.getCustomerId());
pointEventMsg.setUserId(group.getTopicAuthorId());
pointEventMsg.setActionFlag(MqConstant.PLUS);
pointEventMsg.setIsCommon(false);
pointEventMsg.setEventTag(EventEnum.TOPIC_SHIFTED_TO_ISSUE.getEventTag());
//某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为议题
String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent());
pointEventMsg.setRemark(new StringBuilder(groupCache.getGroupName()).append("小组中发布的")
.append(
StringUtils.isBlank(content)
|| StringUtils.equals("语音话题",content)? "语音话题" :
"话题\"" +
content
.substring(NumConstant.ZERO,content.length() < NumConstant.TEN ? content.length() : NumConstant.TEN)
+ (NumConstant.TEN > content.length() ? "\"" : "…\"")
).append("被转为议题").toString());
pointEventMsgList.add(pointEventMsg);
//2.转话题为议题 组长
BasePointEventMsg pointEventMsg2 = new BasePointEventMsg();
pointEventMsg2.setCustomerId(groupCache.getCustomerId());
pointEventMsg2.setUserId(param.getUserId());
pointEventMsg2.setActionFlag(MqConstant.PLUS);
pointEventMsg2.setIsCommon(false);
pointEventMsg2.setEventTag(EventEnum.SHIFT_TOPIC_TO_ISSUE.getEventTag());
//将话题“某某某…” (前十个字后面省略号) 转为议题
pointEventMsg2.setRemark(new StringBuilder("将")
.append(
new StringBuilder(new StringBuilder(pointEventMsg.getRemark().replaceFirst(new StringBuilder(groupCache.getGroupName()).append("小组中发布的").toString(),"")).reverse()
.toString().replaceFirst("题议为转被","")).reverse()
).append("转为议题").toString());
pointEventMsgList.add(pointEventMsg2);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));
if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(param));
}
} }
return issueInfo; return issueInfo;
} }
/** /**
* @Description 政府端查看议题详情时的话题相关信息 * @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO * @param govTopicIssueInfoFormDTO
@ -1896,6 +1999,61 @@ public class ResiTopicServiceImpl extends BaseServiceImpl<ResiTopicDao, ResiTopi
return resultDTO; return resultDTO;
} }
/**
* @Description 根据事件枚举发送积分事件
* @param param
* @return void
* @author wangc
* @date 2021.01.04 16:41
*/
@Override
public void sendTopicPointEventByEventType(TopicEventFormDTO param) {
ResiTopicEntity topic = baseDao.selectById(param.getTopicId());
if(null == topic){
log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.sendTopicPointEventByEventType,根据话题Id没有找到对应的话题信息,参数:{}",JSON.toJSONString(param
));
return;
}
ResiGroupInfoRedisDTO group = resiGroupRedis.get(topic.getGroupId());
if(null == group){
log.error("com.epmet.modules.topic.service.impl.ResiTopicServiceImpl.sendTopicPointEventByEventType,根据组Id没有找到对应的小组信息,组Id:{}",topic.getGroupId());
return;
}
//某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为项目
if(EventEnum.TOPIC_SHIFTED_TO_PROJECT == param.getEvent()){
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
mqBaseMsgDTO.setEventClass("resi_group");
mqBaseMsgDTO.setEventTag(EventEnum.TOPIC_SHIFTED_TO_PROJECT.getEventTag());
List<BasePointEventMsg> pointEventMsgList = new ArrayList<>();
//话题被转为项目 话题作者
BasePointEventMsg pointEventMsg = new BasePointEventMsg();
pointEventMsg.setCustomerId(group.getCustomerId());
pointEventMsg.setUserId(topic.getCreatedBy());
pointEventMsg.setActionFlag(MqConstant.PLUS);
pointEventMsg.setIsCommon(false);
pointEventMsg.setEventTag(EventEnum.TOPIC_SHIFTED_TO_PROJECT.getEventTag());
//某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为议题
String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent());
pointEventMsg.setRemark(new StringBuilder(group.getGroupName()).append("小组中发布的")
.append(
StringUtils.isBlank(content) ||
StringUtils.equals("语音话题",content) ? "语音话题" :
"话题\"" +
content
.substring(NumConstant.ZERO,content.length() < NumConstant.TEN ? content.length() : NumConstant.TEN)
+ (NumConstant.TEN > content.length() ? "\"" : "…\"")
).append("被转为项目").toString());
pointEventMsgList.add(pointEventMsg);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));
if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){
log.error("话题转议题事件发送失败,参数:{}",JSON.toJSONString(param));
}
}
}
} }

23
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.modules.topic.dao.TopicDraftScanTaskDao; import com.epmet.modules.topic.dao.TopicDraftScanTaskDao;
import com.epmet.modules.topic.entity.TopicDraftScanTaskEntity; import com.epmet.modules.topic.entity.TopicDraftScanTaskEntity;
import com.epmet.modules.topic.service.TopicDraftScanTaskService; import com.epmet.modules.topic.service.TopicDraftScanTaskService;
import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO; import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -102,4 +103,26 @@ public class TopicDraftScanTaskServiceImpl extends BaseServiceImpl<TopicDraftSca
baseDao.updateByTask(entity); baseDao.updateByTask(entity);
} }
@Override
public TopicDraftScanTaskDTO getScanByTask(String taskId) {
return baseDao.selectScanByTask(taskId);
}
/**
* 获取审核中的数据
*
* @return java.util.List<com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO>
* @author zhaoqifeng
* @date 2020/12/29 17:57
*/
@Override
public List<TopicDraftScanTaskDTO> getScanTaskList(String draftId, String status) {
QueryWrapper<TopicDraftScanTaskEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(draftId), "TOPIC_DRAFT_ID", draftId);
wrapper.eq(StringUtils.isNotBlank(status),"STATUS", status);
List<TopicDraftScanTaskEntity> entityList = baseDao.selectList(wrapper);
return ConvertUtils.sourceToTarget(entityList, TopicDraftScanTaskDTO.class);
}
} }

328
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java

@ -72,6 +72,7 @@ import com.epmet.resi.group.dto.topic.form.*;
import com.epmet.resi.group.dto.topic.result.DraftDetailResultDTO; import com.epmet.resi.group.dto.topic.result.DraftDetailResultDTO;
import com.epmet.resi.group.dto.topic.result.MyAuditingListResultDTO; import com.epmet.resi.group.dto.topic.result.MyAuditingListResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicAuditResultDTO; import com.epmet.resi.group.dto.topic.result.TopicAuditResultDTO;
import com.google.common.base.CharMatcher;
import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@ -239,6 +240,110 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
return list; return list;
} }
/**
* 自动审核
*
* @return void
* @author zhaoqifeng
* @date 2020/12/29 17:51
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void autoAudit() {
List<TopicDraftScanTaskDTO> taskList = topicDraftScanTaskService.getScanTaskList(null, TopicConstant.AUDITING);
if (CollectionUtils.isNotEmpty(taskList)) {
List<String> taskIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTaskId).collect(Collectors.toList());
List<String> draftIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTopicDraftId).collect(Collectors.toList());
Result<List<VoiceResultDTO>> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds);
if (voiceResults.success()) {
List<VoiceResultDTO> list = voiceResults.getData();
for (VoiceResultDTO item : list) {
TopicDraftScanTaskDTO taskDTO = topicDraftScanTaskService.getScanByTask(item.getTaskId());
if (TopicConstant.REVIEW.equals(item.getSuggestion())) {
//结果不确定
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
dto.setId(taskDTO.getTopicDraftAttachmentId());
dto.setStatus(TopicConstant.REVIEW);
dto.setReason(item.getLabelDesc());
topicDraftAttachmentService.update(dto);
taskDTO.setStatus(TopicConstant.REVIEW);
topicDraftScanTaskService.update(taskDTO);
} else if (TopicConstant.BLOCK.equals(item.getSuggestion())) {
//结果违规
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
dto.setId(taskDTO.getTopicDraftAttachmentId());
dto.setStatus(TopicConstant.BLOCK);
dto.setReason(item.getLabelDesc());
topicDraftAttachmentService.update(dto);
taskDTO.setStatus(TopicConstant.BLOCK);
topicDraftScanTaskService.update(taskDTO);
} else {
//审核通过
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
dto.setId(taskDTO.getTopicDraftAttachmentId());
dto.setStatus(TopicConstant.AUTO_PASSED);
dto.setReason(item.getLabelDesc());
topicDraftAttachmentService.update(dto);
taskDTO.setStatus(TopicConstant.AUTO_PASSED);
topicDraftScanTaskService.update(taskDTO);
}
}
//判断草稿是否审核完成
draftIds.forEach(draftId -> {
List<TopicDraftScanTaskDTO> tasks = topicDraftScanTaskService.getScanTaskList(draftId, null);
String status = TopicConstant.AUTO_PASSED;
for (TopicDraftScanTaskDTO task : tasks) {
if (TopicConstant.AUDITING.equals(task.getStatus())) {
status = TopicConstant.AUDITING;
break;
} else if(TopicConstant.BLOCK.equals(task.getStatus())) {
status = TopicConstant.BLOCK;
} else if(TopicConstant.REVIEW.equals(task.getStatus())) {
if (!TopicConstant.BLOCK.equals(status)) {
status = TopicConstant.REVIEW;
}
} else {
if (!TopicConstant.BLOCK.equals(status) && !TopicConstant.REVIEW.equals(status)) {
status = TopicConstant.AUTO_PASSED;
}
}
}
if (TopicConstant.BLOCK.equals(status)) {
//草稿状态更新为block
TopicDraftEntity draftEntity = new TopicDraftEntity();
draftEntity.setId(draftId);
draftEntity.setDraftStatus(TopicConstant.BLOCK);
draftEntity.setDraftReason("语音存在违规内容");
baseDao.updateById(draftEntity);
} else if(TopicConstant.REVIEW.equals(status)) {
//草稿状态更新为review
TopicDraftEntity draftEntity = new TopicDraftEntity();
draftEntity.setId(draftId);
draftEntity.setDraftStatus(TopicConstant.REVIEW);
draftEntity.setDraftReason("需要人工审核");
baseDao.updateById(draftEntity);
} else if(TopicConstant.AUTO_PASSED.equals(status)) {
//草稿状态更新为auto_passed
AuditDraftTopicFormDTO formDTO = new AuditDraftTopicFormDTO();
formDTO.setTopicDraftId(draftId);
formDTO.setAuditType(TopicConstant.AUTO_PASSED);
audit(null, formDTO);
}
});
}
}
}
/** /**
* 发布话题 * 发布话题
* *
@ -251,7 +356,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void createTopic(TokenDto tokenDto, CreateTopicFormDTO formDTO) { public void createTopic(TokenDto tokenDto, CreateTopicFormDTO formDTO) {
if(StringUtils.isEmpty(formDTO.getTopicContent()) && CollectionUtils.isEmpty(formDTO.getVideoList())) { if(StringUtils.isBlank(formDTO.getTopicContent()) && CollectionUtils.isEmpty(formDTO.getVoiceList())) {
//话题内容和语音不能同时为空 //话题内容和语音不能同时为空
log.error(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL); log.error(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL);
throw new RenException(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL); throw new RenException(ModuleConstant.TOPIC_CONTENT_AND_VOICE_IS_NULL);
@ -265,6 +370,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
TopicDraftEntity topic = ConvertUtils.sourceToTarget(formDTO,TopicDraftEntity.class); TopicDraftEntity topic = ConvertUtils.sourceToTarget(formDTO,TopicDraftEntity.class);
if (CollectionUtils.isNotEmpty(formDTO.getVoiceList()) && StringUtils.isBlank(formDTO.getTopicContent())) {
topic.setTopicContent("语音话题");
}
topic.setCreatedBy(tokenDto.getUserId()); topic.setCreatedBy(tokenDto.getUserId());
topic.setDraftStatus(TopicConstant.AUDITING); topic.setDraftStatus(TopicConstant.AUDITING);
topic.setIsSee(NumConstant.ZERO_STR); topic.setIsSee(NumConstant.ZERO_STR);
@ -278,9 +386,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
List<ImgTaskDTO> imageDTOList = new ArrayList<>(); List<ImgTaskDTO> imageDTOList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(formDTO.getImageList())){ if(CollectionUtils.isNotEmpty(formDTO.getImageList())){
TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
int sort = 0; int sort = 0;
for(String url : formDTO.getImageList()){ for(String url : formDTO.getImageList()){
TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
attachment.setCustomerId(formDTO.getCustomerId()); attachment.setCustomerId(formDTO.getCustomerId());
attachment.setAttachmentUrl(url); attachment.setAttachmentUrl(url);
attachment.setTopicDraftId(topic.getId()); attachment.setTopicDraftId(topic.getId());
@ -298,10 +406,10 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
} }
List<VoiceTaskDTO> voiceDTOList = new ArrayList<>(); List<VoiceTaskDTO> voiceDTOList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(formDTO.getVideoList())){ if(CollectionUtils.isNotEmpty(formDTO.getVoiceList())){
TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
int sort = 0; int sort = 0;
for(FileDTO file : formDTO.getVideoList()){ for(FileDTO file : formDTO.getVoiceList()){
TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
attachment.setCustomerId(formDTO.getCustomerId()); attachment.setCustomerId(formDTO.getCustomerId());
attachment.setAttachmentUrl(file.getUrl()); attachment.setAttachmentUrl(file.getUrl());
attachment.setTopicDraftId(topic.getId()); attachment.setTopicDraftId(topic.getId());
@ -309,6 +417,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
attachment.setAttachmentFormat(file.getUrl().substring(file.getUrl().lastIndexOf(".") + NumConstant.ONE).toLowerCase()); attachment.setAttachmentFormat(file.getUrl().substring(file.getUrl().lastIndexOf(".") + NumConstant.ONE).toLowerCase());
attachment.setSort(sort++); attachment.setSort(sort++);
attachment.setAttachmentType("voice"); attachment.setAttachmentType("voice");
attachment.setDuration(file.getDuration());
attachment.setStatus(TopicConstant.AUDITING); attachment.setStatus(TopicConstant.AUDITING);
topicDraftAttachmentService.save(attachment); topicDraftAttachmentService.save(attachment);
@ -428,68 +537,67 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
return taskEntity; return taskEntity;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
topicDraftScanTaskService.insertBatch(scanTaskEntityList); topicDraftScanTaskService.insertBatch(scanTaskEntityList);
//轮询 //轮询
threadPool.submit(() -> { // Result<List<VoiceResultDTO>> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds);
while (true) { // if (voiceResults.success()) {
Result<List<VoiceResultDTO>> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds); // boolean isAllPass = true;
if (voiceResults.success()) { // List<VoiceResultDTO> list = voiceResults.getData();
boolean isAllPass = true; // for (VoiceResultDTO item : list) {
List<VoiceResultDTO> list = voiceResults.getData(); // TopicDraftScanTaskDTO taskDTO = topicDraftScanTaskService.getScanByTask(item.getTaskId());
for (VoiceResultDTO item : list) { // if (TopicConstant.REVIEW.equals(item.getSuggestion())) {
if (TopicConstant.REVIEW.equals(item.getSuggestion())) { // //结果不确定
//结果不确定 // TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); // dto.setId(taskDTO.getTopicDraftAttachmentId());
dto.setId(item.getDataId()); // dto.setStatus(TopicConstant.REVIEW);
dto.setStatus(TopicConstant.REVIEW); // dto.setReason(item.getLabelDesc());
dto.setReason(item.getLabelDesc()); // topicDraftAttachmentService.update(dto);
topicDraftAttachmentService.update(dto); //
// taskDTO.setStatus(TopicConstant.REVIEW);
TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO(); // topicDraftScanTaskService.update(taskDTO);
taskDTO.setTaskId(item.getTaskId()); //
taskDTO.setStatus(TopicConstant.REVIEW); // TopicDraftEntity draftEntity = new TopicDraftEntity();
topicDraftScanTaskService.updateByTask(taskDTO); // draftEntity.setId(topic.getId());
isAllPass = false; // draftEntity.setDraftStatus(TopicConstant.REVIEW);
} else if (TopicConstant.BLOCK.equals(item.getSuggestion())) { // draftEntity.setDraftReason("需要人工审核");
//结果违规 // baseDao.updateById(draftEntity);
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); //
dto.setId(item.getDataId()); // isAllPass = false;
dto.setStatus(TopicConstant.BLOCK); // } else if (TopicConstant.BLOCK.equals(item.getSuggestion())) {
dto.setReason(item.getLabelDesc()); // //结果违规
topicDraftAttachmentService.update(dto); // TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
// dto.setId(taskDTO.getTopicDraftAttachmentId());
TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO(); // dto.setStatus(TopicConstant.BLOCK);
taskDTO.setTaskId(item.getTaskId()); // dto.setReason(item.getLabelDesc());
taskDTO.setStatus(TopicConstant.BLOCK); // topicDraftAttachmentService.update(dto);
topicDraftScanTaskService.updateByTask(taskDTO); //
isAllPass = false; // taskDTO.setStatus(TopicConstant.BLOCK);
} else { // topicDraftScanTaskService.update(taskDTO);
//审核通过 //
TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO(); // TopicDraftEntity draftEntity = new TopicDraftEntity();
dto.setId(item.getDataId()); // draftEntity.setId(topic.getId());
dto.setStatus(TopicConstant.AUTO_PASSED); // draftEntity.setDraftStatus(TopicConstant.BLOCK);
dto.setReason(item.getLabelDesc()); // draftEntity.setDraftReason(item.getLabelDesc());
topicDraftAttachmentService.update(dto); // baseDao.updateById(draftEntity);
//
TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO(); // isAllPass = false;
taskDTO.setTaskId(item.getTaskId()); // } else {
taskDTO.setStatus(TopicConstant.AUTO_PASSED); // //审核通过
topicDraftScanTaskService.updateByTask(taskDTO); // TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
} // dto.setId(taskDTO.getTopicDraftAttachmentId());
//审核通过,发布话题 // dto.setStatus(TopicConstant.AUTO_PASSED);
if(isAllPass) { // dto.setReason(item.getLabelDesc());
saveTopic(tokenDto, formDTO, topic.getId()); // topicDraftAttachmentService.update(dto);
} //
} // taskDTO.setStatus(TopicConstant.AUTO_PASSED);
break; // topicDraftScanTaskService.update(taskDTO);
} // }
try { // //审核通过,发布话题
Thread.sleep(600000); // if (isAllPass) {
} catch (InterruptedException e) { // saveTopic(tokenDto, formDTO, topic.getId());
e.printStackTrace(); // }
} // }
} //
}); // }
} }
} else { } else {
@ -560,6 +668,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
result.setReleaseTime(new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE).format(entity.getCreatedTime())); result.setReleaseTime(new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN_END_WITH_MINUTE).format(entity.getCreatedTime()));
result.setTopicContent(entity.getTopicContent()); result.setTopicContent(entity.getTopicContent());
result.setReleaseAddress(entity.getAddress()); result.setReleaseAddress(entity.getAddress());
result.setReason(entity.getDraftReason());
if (TopicConstant.AUDITING.equals(entity.getDraftStatus()) || TopicConstant.REVIEW.equals(entity.getDraftStatus())) { if (TopicConstant.AUDITING.equals(entity.getDraftStatus()) || TopicConstant.REVIEW.equals(entity.getDraftStatus())) {
result.setStatus(TopicConstant.AUDITING); result.setStatus(TopicConstant.AUDITING);
} else if (TopicConstant.BLOCK.equals(entity.getDraftStatus()) || TopicConstant.REJECTED.equals(entity.getDraftStatus())) { } else if (TopicConstant.BLOCK.equals(entity.getDraftStatus()) || TopicConstant.REJECTED.equals(entity.getDraftStatus())) {
@ -571,7 +680,13 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
result.setImageList(imageUrls); result.setImageList(imageUrls);
//3.查询话题音频附件 //3.查询话题音频附件
List<String> voiceUrls = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), TopicConstant.VOICE).stream().map(TopicDraftAttachmentDTO::getAttachmentUrl).collect(Collectors.toList()); List<FileDTO> voiceUrls =
topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), TopicConstant.VOICE).stream().map(item ->{
FileDTO fileDTO = new FileDTO();
fileDTO.setUrl(item.getAttachmentUrl());
fileDTO.setDuration(item.getDuration());
return fileDTO;
}).collect(Collectors.toList());
result.setVoiceList(voiceUrls); result.setVoiceList(voiceUrls);
//3.拿取用户信息 //3.拿取用户信息
@ -594,6 +709,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
* @date 2020/12/18 14:58 * @date 2020/12/18 14:58
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void deleteDraft(DraftDetailFormDTO formDTO) { public void deleteDraft(DraftDetailFormDTO formDTO) {
TopicDraftEntity entity = new TopicDraftEntity(); TopicDraftEntity entity = new TopicDraftEntity();
entity.setId(formDTO.getTopicDraftId()); entity.setId(formDTO.getTopicDraftId());
@ -610,35 +726,58 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
* @date 2020/12/18 15:06 * @date 2020/12/18 15:06
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void audit(TokenDto tokenDto, AuditDraftTopicFormDTO formDTO) { public void audit(TokenDto tokenDto, AuditDraftTopicFormDTO formDTO) {
TopicDraftEntity entity = new TopicDraftEntity(); TopicDraftEntity entity = new TopicDraftEntity();
entity.setId(formDTO.getTopicDraftId()); entity.setId(formDTO.getTopicDraftId());
entity.setDraftReason(formDTO.getReason()); entity.setDraftReason(formDTO.getReason());
entity.setDraftStatus(formDTO.getAuditType()); entity.setDraftStatus(formDTO.getAuditType());
baseDao.updateById(entity); baseDao.updateById(entity);
if (TopicConstant.APPROVED.equals(formDTO.getAuditType())) { if (TopicConstant.APPROVED.equals(formDTO.getAuditType()) || TopicConstant.AUTO_PASSED.equals(formDTO.getAuditType())) {
TopicDraftEntity draft = baseDao.selectById(formDTO.getTopicDraftId()); TopicDraftEntity draft = baseDao.selectById(formDTO.getTopicDraftId());
//将草稿存入话题表 //将草稿存入话题表
ResiTopicEntity resiTopic = ConvertUtils.sourceToTarget(entity, ResiTopicEntity.class); ResiTopicEntity resiTopic = ConvertUtils.sourceToTarget(draft, ResiTopicEntity.class);
resiTopic.setId(null); resiTopic.setId(null);
resiTopic.setStatus(TopicConstant.PUBLISHMENT); resiTopic.setStatus(TopicConstant.PUBLISHMENT);
resiTopic.setCreatedTime(null);
resiTopic.setUpdatedBy(draft.getCreatedBy());
resiTopic.setUpdatedTime(null);
resiTopicDao.insert(resiTopic); resiTopicDao.insert(resiTopic);
entity = new TopicDraftEntity();
entity.setId(formDTO.getTopicDraftId());
entity.setTopicId(resiTopic.getId());
baseDao.updateById(entity);
//将草稿附件存入附件表 //将草稿附件存入附件表
List<TopicDraftAttachmentDTO> attachmentList = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), null); List<TopicDraftAttachmentDTO> attachmentList = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), null);
List<ResiTopicAttachmentEntity> topicAttachments = ConvertUtils.sourceToTarget(attachmentList, ResiTopicAttachmentEntity.class); List<ResiTopicAttachmentEntity> topicAttachments = ConvertUtils.sourceToTarget(attachmentList, ResiTopicAttachmentEntity.class);
topicAttachments.forEach(item -> { topicAttachments.forEach(item -> {
item.setId(null); item.setId(null);
item.setTopicId(resiTopic.getId());
item.setCreatedBy(draft.getCreatedBy());
item.setUpdatedBy(draft.getCreatedBy());
}); });
resiTopicAttachmentDao.insertBatch(topicAttachments); resiTopicAttachmentDao.insertBatch(topicAttachments);
//将音频状态改为approved //将音频状态改为approved
List<TopicDraftAttachmentDTO> voiceList = if (TopicConstant.APPROVED.equals(formDTO.getAuditType())) {
attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList()); List<TopicDraftAttachmentDTO> voiceList =
if (CollectionUtils.isNotEmpty(voiceList)) { attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList());
voiceList.forEach(item -> item.setStatus(TopicConstant.APPROVED)); if (CollectionUtils.isNotEmpty(voiceList)) {
topicDraftAttachmentService.updateBatchById(ConvertUtils.sourceToTarget(voiceList, TopicDraftAttachmentEntity.class)); voiceList.forEach(item -> item.setStatus(TopicConstant.APPROVED));
topicDraftAttachmentService.updateBatchById(ConvertUtils.sourceToTarget(voiceList, TopicDraftAttachmentEntity.class));
}
} }
//发送积分 //发送积分
sendMqMsg(draft.getCreatedBy(), draft.getCustomerId()); StringBuilder breviary = new StringBuilder();
String content = CharMatcher.WHITESPACE.trimFrom(draft.getTopicContent());
if(!StringUtils.isBlank(content)){
breviary.append("\"");
breviary.append(content.length() > NumConstant.TEN ? (content.substring(NumConstant.TEN) + "…") : content);
breviary.append("\"");
}else {
breviary.append("话题");
}
sendMqMsg(draft.getCreatedBy(), draft.getCustomerId(),draft.getCreatedTime(),resiGroupRedis.get(draft.getGroupId()).getGroupName(),breviary.toString());
} }
//记录操作记录 //记录操作记录
entity = baseDao.selectById(formDTO.getTopicDraftId()); entity = baseDao.selectById(formDTO.getTopicDraftId());
@ -646,7 +785,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
operationDTO.setCustomerId(entity.getCustomerId()); operationDTO.setCustomerId(entity.getCustomerId());
operationDTO.setTopicDraftId(formDTO.getTopicDraftId()); operationDTO.setTopicDraftId(formDTO.getTopicDraftId());
operationDTO.setOperateType(formDTO.getAuditType()); operationDTO.setOperateType(formDTO.getAuditType());
operationDTO.setCreatedBy(tokenDto.getUserId()); operationDTO.setCreatedBy(null != tokenDto ? tokenDto.getUserId() : "APP_USER");
topicDraftOperationService.save(operationDTO); topicDraftOperationService.save(operationDTO);
} }
@ -671,6 +810,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
Date currentTime = new Date(); Date currentTime = new Date();
//2.创建话题 //2.创建话题
ResiTopicEntity topic = ConvertUtils.sourceToTarget(formDTO,ResiTopicEntity.class); ResiTopicEntity topic = ConvertUtils.sourceToTarget(formDTO,ResiTopicEntity.class);
if (CollectionUtils.isNotEmpty(formDTO.getVoiceList()) && StringUtils.isBlank(formDTO.getTopicContent())) {
topic.setTopicContent("语音话题");
}
topic.setCreatedBy(tokenDto.getUserId()); topic.setCreatedBy(tokenDto.getUserId());
topic.setStatus(TopicConstant.PUBLISHMENT); topic.setStatus(TopicConstant.PUBLISHMENT);
resiTopicDao.insertOne(topic); resiTopicDao.insertOne(topic);
@ -680,9 +822,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
throw new RenException(ModuleConstant.NO_PRIMARY_KEY_RETURNED); throw new RenException(ModuleConstant.NO_PRIMARY_KEY_RETURNED);
} }
if(CollectionUtils.isNotEmpty(formDTO.getImageList())){ if(CollectionUtils.isNotEmpty(formDTO.getImageList())){
ResiTopicAttachmentEntity attachment = new ResiTopicAttachmentEntity();
int sort = 0; int sort = 0;
for(String url : formDTO.getImageList()){ for(String url : formDTO.getImageList()){
ResiTopicAttachmentEntity attachment = new ResiTopicAttachmentEntity();
attachment.setAttachmentUrl(url); attachment.setAttachmentUrl(url);
attachment.setTopicId(topic.getId()); attachment.setTopicId(topic.getId());
attachment.setCreatedBy(tokenDto.getUserId()); attachment.setCreatedBy(tokenDto.getUserId());
@ -694,14 +836,15 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
if(CollectionUtils.isNotEmpty(formDTO.getVoiceList())){ if(CollectionUtils.isNotEmpty(formDTO.getVoiceList())){
ResiTopicAttachmentEntity attachment = new ResiTopicAttachmentEntity();
int sort = 0; int sort = 0;
for(FileDTO file : formDTO.getVoiceList()){ for(FileDTO file : formDTO.getVoiceList()){
ResiTopicAttachmentEntity attachment = new ResiTopicAttachmentEntity();
attachment.setAttachmentUrl(file.getUrl()); attachment.setAttachmentUrl(file.getUrl());
attachment.setTopicId(topic.getId()); attachment.setTopicId(topic.getId());
attachment.setCreatedBy(tokenDto.getUserId()); attachment.setCreatedBy(tokenDto.getUserId());
attachment.setAttachmentFormat(file.getUrl().substring(file.getUrl().lastIndexOf(".") + NumConstant.ONE).toLowerCase()); attachment.setAttachmentFormat(file.getUrl().substring(file.getUrl().lastIndexOf(".") + NumConstant.ONE).toLowerCase());
attachment.setSort(sort++); attachment.setSort(sort++);
attachment.setDuration(file.getDuration());
attachment.setAttachmentType("voice"); attachment.setAttachmentType("voice");
resiTopicAttachmentDao.insertOne(attachment); resiTopicAttachmentDao.insertOne(attachment);
} }
@ -747,12 +890,33 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
TopicDraftEntity draftEntity = new TopicDraftEntity(); TopicDraftEntity draftEntity = new TopicDraftEntity();
draftEntity.setId(draftId); draftEntity.setId(draftId);
draftEntity.setTopicId(topic.getId()); draftEntity.setTopicId(topic.getId());
draftEntity.setDraftStatus(TopicConstant.AUTO_PASSED);
baseDao.updateById(draftEntity); baseDao.updateById(draftEntity);
sendMqMsg(tokenDto.getUserId(), formDTO.getCustomerId());
TopicDraftEntity draft = baseDao.selectById(draftId);
StringBuilder breviary = new StringBuilder();
String content = CharMatcher.WHITESPACE.trimFrom(draft.getTopicContent());
if(!StringUtils.isBlank(content) && !StringUtils.equals("语音话题",content)){
breviary.append("话题\"");
breviary.append(content.length() > NumConstant.TEN ? (content.substring(NumConstant.ZERO,NumConstant.TEN) + "…") : content);
breviary.append("\"");
}else breviary.append("语音话题");
sendMqMsg(tokenDto.getUserId(), formDTO.getCustomerId(),draft.getCreatedTime(),resiGroupRedis.get(draft.getGroupId()).getGroupName(),breviary.toString());
} }
private void sendMqMsg(String userId, String customerId) { /**
* @Description 发送积分事件
* @param userId
* @param customerId
* @param targetDate 可为空
* @param groupName
* @param topicBreviary 话题内容摘要"内容…" 如果没有文字则是"语音话题"
* @return void
* @author wangc
* @date 2020.12.25 15:45
*/
private void sendMqMsg(String userId, String customerId, Date targetDate, String groupName, String topicBreviary) {
//6.发送积分 //6.发送积分
MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO(); MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO();
//mq的事件类型 //mq的事件类型
@ -765,6 +929,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
actPointEventMsg.setUserId(userId); actPointEventMsg.setUserId(userId);
actPointEventMsg.setActionFlag(MqConstant.PLUS); actPointEventMsg.setActionFlag(MqConstant.PLUS);
actPointEventMsg.setIsCommon(false); actPointEventMsg.setIsCommon(false);
actPointEventMsg.setRemark(new StringBuilder(groupName).append("小组中发布").append(topicBreviary).toString());
actPointEventMsg.setTargetDate(targetDate);
actPointEventMsg.setEventTag(EventEnum.PUBLISH_ONE_TOPIC.getEventTag());
actPointEventMsgList.add(actPointEventMsg); actPointEventMsgList.add(actPointEventMsg);
mqBaseMsgDTO.setMsg(JSON.toJSONString(actPointEventMsgList)); mqBaseMsgDTO.setMsg(JSON.toJSONString(actPointEventMsgList));
@ -838,5 +1005,4 @@ public class TopicDraftServiceImpl extends BaseServiceImpl<TopicDraftDao, TopicD
} }
} }
} }

75
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkRecordServiceImpl.java

@ -9,25 +9,37 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueShareLinkRecordDTO;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.modules.group.dao.ResiGroupDao;
import com.epmet.modules.group.entity.ResiGroupEntity;
import com.epmet.modules.member.dao.GroupMemeberOperationDao; import com.epmet.modules.member.dao.GroupMemeberOperationDao;
import com.epmet.modules.member.dao.ResiGroupMemberDao; import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.topic.dao.ResiTopicDao;
import com.epmet.modules.topic.dao.TopicShareLinkRecordDao; import com.epmet.modules.topic.dao.TopicShareLinkRecordDao;
import com.epmet.modules.topic.dao.TopicShareLinkVisitRecordDao; import com.epmet.modules.topic.dao.TopicShareLinkVisitRecordDao;
import com.epmet.modules.topic.entity.TopicShareLinkRecordEntity; import com.epmet.modules.topic.entity.TopicShareLinkRecordEntity;
import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity; import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.modules.topic.service.TopicShareLinkRecordService; import com.epmet.modules.topic.service.TopicShareLinkRecordService;
import com.epmet.modules.utils.ModuleConstant;
import com.epmet.resi.group.constant.TopicShareConstant; import com.epmet.resi.group.constant.TopicShareConstant;
import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO;
import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO; import com.epmet.resi.group.dto.topic.TopicShareLinkRecordDTO;
import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO; import com.epmet.resi.group.dto.topic.form.CreateUrlFormDTO;
import com.epmet.resi.group.dto.topic.form.ShareLinkTypeFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO; import com.epmet.resi.group.dto.topic.form.TopicBelongGroupFormDTO;
import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO; import com.epmet.resi.group.dto.topic.form.TopicVisitFormDTO;
import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO; import com.epmet.resi.group.dto.topic.result.CreateUrlResultDTO;
import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO; import com.epmet.resi.group.dto.topic.result.TopicBelongGroupResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO; import com.epmet.resi.group.dto.topic.result.TopicVisitResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
@ -40,6 +52,7 @@ import java.util.Map;
* @since v1.0.0 2020-12-18 * @since v1.0.0 2020-12-18
*/ */
@Service @Service
@Slf4j
public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl<TopicShareLinkRecordDao, TopicShareLinkRecordEntity> implements TopicShareLinkRecordService { public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl<TopicShareLinkRecordDao, TopicShareLinkRecordEntity> implements TopicShareLinkRecordService {
@Autowired @Autowired
@ -48,7 +61,12 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl<TopicShareL
private ResiGroupMemberDao resiGroupMemberDao; private ResiGroupMemberDao resiGroupMemberDao;
@Autowired @Autowired
private GroupMemeberOperationDao groupMemeberOperationDao; private GroupMemeberOperationDao groupMemeberOperationDao;
@Autowired
private GovIssueOpenFeignClient issueClient;
@Autowired
private ResiTopicDao topicDao;
@Autowired
private ResiGroupDao groupDao;
@Override @Override
public PageData<TopicShareLinkRecordDTO> page(Map<String, Object> params) { public PageData<TopicShareLinkRecordDTO> page(Map<String, Object> params) {
IPage<TopicShareLinkRecordEntity> page = baseDao.selectPage( IPage<TopicShareLinkRecordEntity> page = baseDao.selectPage(
@ -146,6 +164,7 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl<TopicShareL
} }
TopicBelongGroupResultDTO resultDTO = new TopicBelongGroupResultDTO(); TopicBelongGroupResultDTO resultDTO = new TopicBelongGroupResultDTO();
resultDTO.setGroupId(topicInfo.getGroupId()); resultDTO.setGroupId(topicInfo.getGroupId());
resultDTO.setGridId(topicInfo.getGridId());
return resultDTO; return resultDTO;
} }
@ -191,4 +210,58 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl<TopicShareL
return result; return result;
} }
/**
* @Description 根据链接信息查询被邀请人在组/网格内的状态
* @param param
* @return com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO
* @author wangc
* @date 2020.12.29 15:01
*/
@Override
public MemberRelationBetweenGroupAndGridResultDTO getStatusByLinkAndInvitee(ShareLinkTypeFormDTO param) {
MemberRelationBetweenGroupAndGridResultDTO relation = new MemberRelationBetweenGroupAndGridResultDTO();
String group = null;
if(StringUtils.equals("topic",param.getType())){
TopicShareLinkRecordEntity shareLinkInfo = baseDao.selectById(param.getId());
if(null != shareLinkInfo && StringUtils.isNotBlank(shareLinkInfo.getGroupId())) group = shareLinkInfo.getGroupId();
}
if(StringUtils.isBlank(group)){
Result<IssueShareLinkRecordDTO> issueShareLinkInfo = issueClient.shareLinkInfo(param.getId());
if(issueShareLinkInfo.success() && null != issueShareLinkInfo.getData()){
String issueId = issueShareLinkInfo.getData().getIssueId();
if(StringUtils.isNotBlank(issueId)){
group = topicDao.selectGroupIdByIssueId(issueId);
}
}
}
if(StringUtils.isBlank(group)) throw new RenException("根据分享链接Id没有找到对应的组Id");
String userId = param.getUserId();
GroupMemeberOperationDTO applyRecord = groupMemeberOperationDao.selectLatestRecord(group, userId);
if(null != applyRecord && StringUtils.equals(ModuleConstant.GROUP_STATUS_UNDER_AUDITTING,applyRecord.getOperateStatus())){
//under_auditing
relation.setAwaitAudit(true);
}
if(null != applyRecord && StringUtils.equals(ModuleConstant.AUDITING_OPERATION_APPROVAL,applyRecord.getOperateStatus())){
//approved
relation.setInGroup(true);
relation.setInAnyGroup(true);
}
if(!relation.getInAnyGroup()) {
ResiGroupEntity groupEntity = groupDao.selectById(group);
if(null == groupEntity || StringUtils.isBlank(groupEntity.getGridId()))
throw new RenException("没有找到相应的组记录");
List<String> groups = resiGroupMemberDao.getGroupIdByUserIdAndGridId(groupEntity.getGridId(), userId, NumConstant.ONE_STR);
if(!CollectionUtils.isEmpty(groups)){
relation.setInAnyGroup(true);
if(groups.contains(group)){
relation.setInGroup(true);
log.error("查出用户{}是组{}中成员,但是没有对应的入群记录",param.getUserId(),group);
}
}
}
return relation;
}
} }

7
epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java

@ -6,12 +6,18 @@ import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.feign.GovIssueOpenFeignClient;
import com.epmet.modules.member.dao.GroupMemeberOperationDao;
import com.epmet.modules.member.dao.ResiGroupMemberDao;
import com.epmet.modules.topic.dao.TopicShareLinkVisitRecordDao; import com.epmet.modules.topic.dao.TopicShareLinkVisitRecordDao;
import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity; import com.epmet.modules.topic.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService; import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService;
import com.epmet.resi.group.dto.topic.TopicShareLinkVisitRecordDTO; import com.epmet.resi.group.dto.topic.TopicShareLinkVisitRecordDTO;
import com.epmet.resi.group.dto.topic.form.SharableTopicAndInviteeFormDTO; import com.epmet.resi.group.dto.topic.form.SharableTopicAndInviteeFormDTO;
import com.epmet.resi.group.dto.topic.form.ShareLinkTypeFormDTO;
import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -107,5 +113,4 @@ public class TopicShareLinkVisitRecordServiceImpl extends BaseServiceImpl<TopicS
public TopicShareLinkVisitRecordEntity getByLinkIdAndInvitee(String linkId, String invitee) { public TopicShareLinkVisitRecordEntity getByLinkIdAndInvitee(String linkId, String invitee) {
return baseDao.selectRecordByLinkIdAndInvitee(linkId,invitee); return baseDao.selectRecordByLinkIdAndInvitee(linkId,invitee);
} }
} }

2
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicAttachmentDao.xml

@ -84,6 +84,7 @@
del_flag, del_flag,
revision, revision,
sort, sort,
duration,
created_by, created_by,
created_time, created_time,
updated_by, updated_by,
@ -100,6 +101,7 @@
#{item.delFlag}, #{item.delFlag},
#{item.revision}, #{item.revision},
#{item.sort}, #{item.sort},
#{item.duration},
#{item.createdBy}, #{item.createdBy},
now(), now(),
#{item.updatedBy}, #{item.updatedBy},

5
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/ResiTopicDao.xml

@ -137,6 +137,7 @@
RESI_TOPIC_ATTACHMENT attachment RESI_TOPIC_ATTACHMENT attachment
WHERE WHERE
attachment.DEL_FLAG = '0' attachment.DEL_FLAG = '0'
AND attachment.ATTACHMENT_TYPE = 'image'
GROUP BY attachment.TOPIC_ID GROUP BY attachment.TOPIC_ID
) attachement2 ) attachement2
ON ON
@ -176,6 +177,7 @@
RESI_TOPIC_ATTACHMENT attachment RESI_TOPIC_ATTACHMENT attachment
WHERE WHERE
attachment.DEL_FLAG = '0' attachment.DEL_FLAG = '0'
AND attachment.ATTACHMENT_TYPE = 'image'
GROUP BY attachment.TOPIC_ID GROUP BY attachment.TOPIC_ID
) attachement2 ) attachement2
ON ON
@ -225,6 +227,7 @@
RESI_TOPIC_ATTACHMENT attachment RESI_TOPIC_ATTACHMENT attachment
WHERE WHERE
attachment.DEL_FLAG = '0' attachment.DEL_FLAG = '0'
AND attachment.ATTACHMENT_TYPE = 'image'
GROUP BY attachment.TOPIC_ID GROUP BY attachment.TOPIC_ID
) attachement2 ) attachement2
ON ON
@ -427,6 +430,8 @@
topic.ID = attachment.TOPIC_ID topic.ID = attachment.TOPIC_ID
AND AND
attachment.DEL_FLAG = '0' attachment.DEL_FLAG = '0'
AND
attachment.ATTACHMENT_TYPE = 'image'
WHERE WHERE
topic.DEL_FLAG = '0' topic.DEL_FLAG = '0'
AND AND

16
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/TopicDraftDao.xml

@ -28,8 +28,13 @@
<select id="selectTopicDraftByGroup" resultType="com.epmet.resi.group.dto.topic.result.TopicAuditResultDTO"> <select id="selectTopicDraftByGroup" resultType="com.epmet.resi.group.dto.topic.result.TopicAuditResultDTO">
SELECT ID AS topicDraftId, SELECT ID AS topicDraftId,
TOPIC_CONTENT AS topicContent, TOPIC_CONTENT AS topicContent,
CREATED_BY AS userName, <if test="status == 'review'">
UNIX_TIMESTAMP(CREATED_TIME) AS releaseTime UNIX_TIMESTAMP(CREATED_TIME) AS releaseTime,
</if>
<if test="status == 'rejected'">
UNIX_TIMESTAMP(UPDATED_TIME) AS releaseTime,
</if>
CREATED_BY AS userName
FROM FROM
topic_draft topic_draft
WHERE WHERE
@ -41,6 +46,13 @@
<if test="status == 'rejected'"> <if test="status == 'rejected'">
AND (DRAFT_STATUS = 'block' OR DRAFT_STATUS = 'rejected') AND (DRAFT_STATUS = 'block' OR DRAFT_STATUS = 'rejected')
</if> </if>
ORDER BY
<if test="status == 'review'">
CREATED_TIME DESC
</if>
<if test="status == 'rejected'">
UPDATED_TIME DESC
</if>
</select> </select>
<select id="selectTopicDraftDetail" resultType="com.epmet.resi.group.dto.topic.result.DraftDetailResultDTO"> <select id="selectTopicDraftDetail" resultType="com.epmet.resi.group.dto.topic.result.DraftDetailResultDTO">

17
epmet-module/resi-group/resi-group-server/src/main/resources/mapper/topic/TopicDraftScanTaskDao.xml

@ -23,6 +23,23 @@
`STATUS` = #{status} `STATUS` = #{status}
WHERE TASK_ID = #{taskId} WHERE TASK_ID = #{taskId}
</update> </update>
<select id="selectScanByTask" resultType="com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO">
select ID,
CUSTOMER_ID,
TOPIC_DRAFT_ID,
TOPIC_DRAFT_ATTACHMENT_ID,
TASK_ID,
STATUS,
ATTACHMENT_TYPE,
DEL_FLAG,
REVISION,
CREATED_BY,
CREATED_TIME,
UPDATED_BY,
UPDATED_TIME
from topic_draft_scan_task
where TASK_ID = #{taskId}
</select>
</mapper> </mapper>
Loading…
Cancel
Save