diff --git a/epmet-module/epmet-job/epmet-job-server/pom.xml b/epmet-module/epmet-job/epmet-job-server/pom.xml
index 01e91beca0..0aae470684 100644
--- a/epmet-module/epmet-job/epmet-job-server/pom.xml
+++ b/epmet-module/epmet-job/epmet-job-server/pom.xml
@@ -79,6 +79,12 @@
feign-httpclient
10.3.0
+
+ com.epmet
+ resi-group-client
+ 2.0.0
+ compile
+
diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/TopicAutoAuditService.java
new file mode 100644
index 0000000000..0102b54370
--- /dev/null
+++ b/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();
+}
diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/service/impl/TopicAutoAuditServiceImpl.java
new file mode 100644
index 0000000000..2e497497e0
--- /dev/null
+++ b/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();
+ }
+}
diff --git a/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java b/epmet-module/epmet-job/epmet-job-server/src/main/java/com/epmet/task/TopicAutoAuditTask.java
new file mode 100644
index 0000000000..6bc7bb3c4b
--- /dev/null
+++ b/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());
+ }
+ }
+}
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.4__addNewRuleTemplate.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.4__addNewRuleTemplate.sql
index 069008ec48..6c8838b5cf 100644
--- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.4__addNewRuleTemplate.sql
+++ b/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
(
'3','发布话题',
- '对小组内话题进行15字以上评论','publish_one_topic',
+ '楼院小组内通过我有话说功能发布话题','publish_one_topic',
'1','plus',
15,'每天上限为15分',null,'day',5,'time','0','0',0,'APP_USER',now(),'APP_USER',now()
),
(
'4','参与话题',
- '楼院小组内通过我有话说功能发布话题','participate_one_topic',
+ '对小组内话题进行15字以上评论','participate_one_topic',
'1','plus',
6,'每天上限为6分',null,'day',2,'time','0','0',0,'APP_USER',now(),'APP_USER',now()
),
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.5__editResiGroupRuleCode.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.5__editResiGroupRuleCode.sql
new file mode 100644
index 0000000000..4c3e4183f3
--- /dev/null
+++ b/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';
\ No newline at end of file
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.6__editResiGroupRuleUpLimitDesc.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.6__editResiGroupRuleUpLimitDesc.sql
new file mode 100644
index 0000000000..04ae7bf19d
--- /dev/null
+++ b/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';
\ No newline at end of file
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.7__updateAllRuleLimitDesc.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.7__updateAllRuleLimitDesc.sql
new file mode 100644
index 0000000000..a298e20369
--- /dev/null
+++ b/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时表示没有积分上限'
\ No newline at end of file
diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.8__updateRuleDesc.sql b/epmet-module/epmet-point/epmet-point-server/src/main/resources/db/migration/V0.0.8__updateRuleDesc.sql
new file mode 100644
index 0000000000..b56029ee46
--- /dev/null
+++ b/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 = '话题被转为项目';
\ No newline at end of file
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
index 3680e0cbfd..933906f4ad 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
+++ b/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;
+import com.alibaba.fastjson.JSON;
import com.alibaba.nacos.client.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.FieldConstant;
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.RenException;
import com.epmet.commons.tools.page.PageData;
@@ -26,6 +28,8 @@ import com.epmet.dao.IssueProcessDao;
import com.epmet.dao.IssueProjectRelationDao;
import com.epmet.dto.*;
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.entity.IssueEntity;
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.GroupVotingListResultDTO;
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.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.feign.ResiGroupOpenFeignClient;
import com.epmet.service.*;
@@ -862,6 +864,14 @@ public class IssueServiceImpl extends BaseServiceImpl imp
}catch(RenException e){
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));
+ }
}
/**
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkRecordServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkRecordServiceImpl.java
index 8f00023c0c..687ce57e47 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueShareLinkRecordServiceImpl.java
+++ b/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 voiceList;
- private List videoList;
+ private List voiceList;
+ private List videoList;
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MemberRelationBetweenGroupAndGridResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/MemberRelationBetweenGroupAndGridResultDTO.java
new file mode 100644
index 0000000000..e3b0446113
--- /dev/null
+++ b/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;
+}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicBelongGroupResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicBelongGroupResultDTO.java
index 275813b5c6..f9de2af12b 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/topic/result/TopicBelongGroupResultDTO.java
+++ b/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 String groupId;
+
+ private String gridId;
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
index ad9a19903f..fcb56f25ba 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/ResiGroupOpenFeignClient.java
+++ b/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")
Result 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);
}
diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
index 1b6f214fa0..b8f7f9e2d7 100644
--- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/feign/fallback/ResiGroupOpenFeignClientFallback.java
+++ b/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 checkInviteRelationship(SharableTopicAndInviteeFormDTO 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);
+ }
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java
index 8f4deee6c3..11760b07b3 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/GroupMemeberOperationServiceImpl.java
+++ b/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.ResiGroupMemberEntity;
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.ResiGroupMemberService;
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.member.GroupMemeberOperationDTO;
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.RemoveMemberFormDTO;
import com.epmet.resi.group.dto.member.result.JoinGroupApplyRealTimeResultDTO;
@@ -107,6 +109,8 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl> userResponse = userClient.queryUserBaseInfo(userParam);
if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){
UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO);
- pointEventMsg.setRemark( new StringBuilder("邀请").append("加入")
+ pointEventMsg.setRemark( new StringBuilder("邀请")
.append(user.getStreet()).append("-").append(user.getSurname())
.append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" :
StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士")
+ .append("加入")
.append(resiGroupDTO.getGroupName()).append("小组").toString());
}
pointEventMsgList.add(pointEventMsg);
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
index ae48951046..9207200b6e 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/member/service/impl/ResiGroupMemberServiceImpl.java
+++ b/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> userResponse = userOpenFeignClient.queryUserBaseInfo(userParam);
if(userResponse.success() && !CollectionUtils.isEmpty(userResponse.getData())){
UserBaseInfoResultDTO user = userResponse.getData().get(NumConstant.ZERO);
- pointEventMsg.setRemark( new StringBuilder("邀请").append("加入")
+ pointEventMsg.setRemark( new StringBuilder("邀请")
.append(user.getStreet()).append("-").append(user.getSurname())
.append(StringUtils.equals(NumConstant.ONE_STR,user.getGender()) ? "先生" :
StringUtils.equals(NumConstant.TWO_STR,user.getGender()) ? "女士" : "先生/女士")
+ .append("加入")
.append(resiGroupDTO.getGroupName()).append("小组").toString());
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
index d6e3bf75a6..ebd0bf7b0d 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/ResiTopicController.java
+++ b/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().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();
+ }
+
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java
index 89081680fd..1c99d983c3 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicDraftController.java
+++ b/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());
return new Result>().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();
+ }
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicShareLinkRecordController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicShareLinkRecordController.java
index d8e9614ff2..bd138b5583 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/controller/TopicShareLinkRecordController.java
+++ b/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.UpdateGroup;
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.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.TopicVisitFormDTO;
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.TopicVisitResultDTO;
import org.springframework.beans.factory.annotation.Autowired;
@@ -108,4 +111,18 @@ public class TopicShareLinkRecordController {
return new Result().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 getStatus(@LoginUser TokenDto token, @RequestBody ShareLinkTypeFormDTO param){
+ param.setUserId(token.getUserId());
+ ValidatorUtils.validateEntity(param);
+ return new Result().ok(topicShareLinkRecordService.getStatusByLinkAndInvitee(param));
+ }
+
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/TopicDraftScanTaskDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/TopicDraftScanTaskDao.java
index 15be6e2e7c..ea0029cb1b 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/dao/TopicDraftScanTaskDao.java
+++ b/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.modules.topic.entity.TopicDraftScanTaskEntity;
+import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* 话题附件检测任务表
@@ -29,5 +31,15 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface TopicDraftScanTaskDao extends BaseDao {
+
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);
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
index 347f960f6e..e73a3f8c4e 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/ResiTopicService.java
+++ b/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 {
* @Description 获取话题附件信息
**/
TopicAttachmentResultDTO topicAttachmentList(TopicAttachmentFormDTO formDTO);
+
+ /**
+ * @Description 根据事件枚举发送积分事件
+ * @param param
+ * @return void
+ * @author wangc
+ * @date 2021.01.04 16:41
+ */
+ void sendTopicPointEventByEventType(TopicEventFormDTO param);
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java
index 91ae43076d..003b716a97 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftScanTaskService.java
+++ b/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
+ */
+ List getScanTaskList(String draftId, String status);
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java
index 87b99bc51c..b6646cf19c 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicDraftService.java
+++ b/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 {
* @Description 个人中心-我发表的话题-审核中列表
**/
List myAuditingList(MyAuditingListFormDTO formDTO);
+
+ /**
+ * 自动审核
+ * @author zhaoqifeng
+ * @date 2020/12/29 17:51
+ * @param
+ * @return void
+ */
+ void autoAudit();
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkRecordService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkRecordService.java
index c52f23d862..ec3bd6000d 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/TopicShareLinkRecordService.java
+++ b/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.resi.group.dto.topic.TopicShareLinkRecordDTO;
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.TopicVisitFormDTO;
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.TopicVisitResultDTO;
@@ -107,4 +109,13 @@ public interface TopicShareLinkRecordService extends BaseService NumConstant.FIFTEEN){
//mq的事件类型
MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO();
@@ -248,6 +253,20 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl NumConstant.TEN ?
+ (content.substring(NumConstant.ZERO,NumConstant.TEN) + "…") :
+ content);
+ builder.append("\"");
+ }else builder.append("语音话题");
+
+ pointEventMsg.setRemark(builder.toString());
pointEventMsgList.add(pointEventMsg);
mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList));
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
index 03b37dc87d..aa4d42bac9 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicServiceImpl.java
+++ b/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.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import com.google.common.base.CharMatcher;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jsoup.helper.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -697,6 +699,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(TopicConstant.TOPIC_ID,topicId);
+ wrapper.eq(TopicConstant.FIELD_TOPIC_ATTACHMENT_TYPE,"image");
wrapper.orderByAsc(TopicConstant.SORT);
List attachments = resiTopicAttachmentDao.selectList(wrapper);
List attachmentUrls = new ArrayList<>();
@@ -1247,6 +1250,7 @@ public class ResiTopicServiceImpl extends BaseServiceImpl wrapper = new QueryWrapper<>();
wrapper.eq(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR);
wrapper.eq(TopicConstant.TOPIC_ID,formDTO.getTopicId());
+ wrapper.eq(TopicConstant.FIELD_TOPIC_ATTACHMENT_TYPE,"image");
wrapper.orderByAsc(TopicConstant.SORT);
List attachments = resiTopicAttachmentDao.selectList(wrapper);
if (attachments.size() != NumConstant.ZERO){
@@ -1580,8 +1584,56 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 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(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 {
ValidatorUtils.validateEntity(result, FirstTopicShiftedToIssueApplicationResultDTO.AllowAuditionGroup.class);
@@ -1664,10 +1716,61 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 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;
}
-
/**
* @Description 政府端查看议题详情时的话题相关信息
* @param govTopicIssueInfoFormDTO
@@ -1896,6 +1999,61 @@ public class ResiTopicServiceImpl extends BaseServiceImpl 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));
+ }
+ }
+ }
+
}
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java
index eeac8f4389..9890bf5c79 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftScanTaskServiceImpl.java
+++ b/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.entity.TopicDraftScanTaskEntity;
import com.epmet.modules.topic.service.TopicDraftScanTaskService;
+import com.epmet.resi.group.constant.TopicConstant;
import com.epmet.resi.group.dto.topic.TopicDraftScanTaskDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -102,4 +103,26 @@ public class TopicDraftScanTaskServiceImpl extends BaseServiceImpl
+ * @author zhaoqifeng
+ * @date 2020/12/29 17:57
+ */
+ @Override
+ public List getScanTaskList(String draftId, String status) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.eq(StringUtils.isNotBlank(draftId), "TOPIC_DRAFT_ID", draftId);
+ wrapper.eq(StringUtils.isNotBlank(status),"STATUS", status);
+ List entityList = baseDao.selectList(wrapper);
+ return ConvertUtils.sourceToTarget(entityList, TopicDraftScanTaskDTO.class);
+
+ }
+
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java
index edac718249..4ee3f577b9 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicDraftServiceImpl.java
+++ b/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.MyAuditingListResultDTO;
import com.epmet.resi.group.dto.topic.result.TopicAuditResultDTO;
+import com.google.common.base.CharMatcher;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -239,6 +240,110 @@ public class TopicDraftServiceImpl extends BaseServiceImpl taskList = topicDraftScanTaskService.getScanTaskList(null, TopicConstant.AUDITING);
+ if (CollectionUtils.isNotEmpty(taskList)) {
+ List taskIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTaskId).collect(Collectors.toList());
+ List draftIds = taskList.stream().map(TopicDraftScanTaskDTO :: getTopicDraftId).collect(Collectors.toList());
+ Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds);
+ if (voiceResults.success()) {
+ List 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 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 imageDTOList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(formDTO.getImageList())){
- TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
int sort = 0;
for(String url : formDTO.getImageList()){
+ TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
attachment.setCustomerId(formDTO.getCustomerId());
attachment.setAttachmentUrl(url);
attachment.setTopicDraftId(topic.getId());
@@ -298,10 +406,10 @@ public class TopicDraftServiceImpl extends BaseServiceImpl voiceDTOList = new ArrayList<>();
- if(CollectionUtils.isNotEmpty(formDTO.getVideoList())){
- TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
+ if(CollectionUtils.isNotEmpty(formDTO.getVoiceList())){
int sort = 0;
- for(FileDTO file : formDTO.getVideoList()){
+ for(FileDTO file : formDTO.getVoiceList()){
+ TopicDraftAttachmentDTO attachment = new TopicDraftAttachmentDTO();
attachment.setCustomerId(formDTO.getCustomerId());
attachment.setAttachmentUrl(file.getUrl());
attachment.setTopicDraftId(topic.getId());
@@ -309,6 +417,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl {
- while (true) {
- Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds);
- if (voiceResults.success()) {
- boolean isAllPass = true;
- List list = voiceResults.getData();
- for (VoiceResultDTO item : list) {
- if (TopicConstant.REVIEW.equals(item.getSuggestion())) {
- //结果不确定
- TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
- dto.setId(item.getDataId());
- dto.setStatus(TopicConstant.REVIEW);
- dto.setReason(item.getLabelDesc());
- topicDraftAttachmentService.update(dto);
-
- TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO();
- taskDTO.setTaskId(item.getTaskId());
- taskDTO.setStatus(TopicConstant.REVIEW);
- topicDraftScanTaskService.updateByTask(taskDTO);
- isAllPass = false;
- } else if (TopicConstant.BLOCK.equals(item.getSuggestion())) {
- //结果违规
- TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
- dto.setId(item.getDataId());
- dto.setStatus(TopicConstant.BLOCK);
- dto.setReason(item.getLabelDesc());
- topicDraftAttachmentService.update(dto);
-
- TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO();
- taskDTO.setTaskId(item.getTaskId());
- taskDTO.setStatus(TopicConstant.BLOCK);
- topicDraftScanTaskService.updateByTask(taskDTO);
- isAllPass = false;
- } else {
- //审核通过
- TopicDraftAttachmentDTO dto = new TopicDraftAttachmentDTO();
- dto.setId(item.getDataId());
- dto.setStatus(TopicConstant.AUTO_PASSED);
- dto.setReason(item.getLabelDesc());
- topicDraftAttachmentService.update(dto);
-
- TopicDraftScanTaskDTO taskDTO = new TopicDraftScanTaskDTO();
- taskDTO.setTaskId(item.getTaskId());
- taskDTO.setStatus(TopicConstant.AUTO_PASSED);
- topicDraftScanTaskService.updateByTask(taskDTO);
- }
- //审核通过,发布话题
- if(isAllPass) {
- saveTopic(tokenDto, formDTO, topic.getId());
- }
- }
- break;
- }
- try {
- Thread.sleep(600000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- });
+// Result> voiceResults = ScanContentUtils.voiceResults(scanApiUrl.concat(voiceResultsMethod), taskIds);
+// if (voiceResults.success()) {
+// boolean isAllPass = true;
+// List 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);
+//
+// TopicDraftEntity draftEntity = new TopicDraftEntity();
+// draftEntity.setId(topic.getId());
+// draftEntity.setDraftStatus(TopicConstant.REVIEW);
+// draftEntity.setDraftReason("需要人工审核");
+// baseDao.updateById(draftEntity);
+//
+// isAllPass = false;
+// } 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);
+//
+// TopicDraftEntity draftEntity = new TopicDraftEntity();
+// draftEntity.setId(topic.getId());
+// draftEntity.setDraftStatus(TopicConstant.BLOCK);
+// draftEntity.setDraftReason(item.getLabelDesc());
+// baseDao.updateById(draftEntity);
+//
+// isAllPass = false;
+// } 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);
+// }
+// //审核通过,发布话题
+// if (isAllPass) {
+// saveTopic(tokenDto, formDTO, topic.getId());
+// }
+// }
+//
+// }
}
} else {
@@ -560,6 +668,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl voiceUrls = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), TopicConstant.VOICE).stream().map(TopicDraftAttachmentDTO::getAttachmentUrl).collect(Collectors.toList());
+ List 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);
//3.拿取用户信息
@@ -594,6 +709,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl attachmentList = topicDraftAttachmentService.getFileList(formDTO.getTopicDraftId(), null);
List topicAttachments = ConvertUtils.sourceToTarget(attachmentList, ResiTopicAttachmentEntity.class);
topicAttachments.forEach(item -> {
item.setId(null);
+ item.setTopicId(resiTopic.getId());
+ item.setCreatedBy(draft.getCreatedBy());
+ item.setUpdatedBy(draft.getCreatedBy());
});
resiTopicAttachmentDao.insertBatch(topicAttachments);
//将音频状态改为approved
- List voiceList =
- attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList());
- if (CollectionUtils.isNotEmpty(voiceList)) {
- voiceList.forEach(item -> item.setStatus(TopicConstant.APPROVED));
- topicDraftAttachmentService.updateBatchById(ConvertUtils.sourceToTarget(voiceList, TopicDraftAttachmentEntity.class));
+ if (TopicConstant.APPROVED.equals(formDTO.getAuditType())) {
+ List voiceList =
+ attachmentList.stream().filter(item -> TopicConstant.VOICE.equals(item.getAttachmentType()) && TopicConstant.REVIEW.equals(item.getStatus())).collect(Collectors.toList());
+ if (CollectionUtils.isNotEmpty(voiceList)) {
+ 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());
@@ -646,7 +785,7 @@ public class TopicDraftServiceImpl extends BaseServiceImpl 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.发送积分
MqBaseMsgDTO mqBaseMsgDTO=new MqBaseMsgDTO();
//mq的事件类型
@@ -765,6 +929,9 @@ public class TopicDraftServiceImpl extends BaseServiceImpl implements TopicShareLinkRecordService {
@Autowired
@@ -48,7 +61,12 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl page(Map params) {
IPage page = baseDao.selectPage(
@@ -146,6 +164,7 @@ public class TopicShareLinkRecordServiceImpl extends BaseServiceImpl 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 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;
+ }
+
}
\ No newline at end of file
diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java
index 34d9be5bb5..949cfd6bab 100644
--- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/TopicShareLinkVisitRecordServiceImpl.java
+++ b/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.page.PageData;
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.entity.TopicShareLinkVisitRecordEntity;
import com.epmet.modules.topic.service.TopicShareLinkVisitRecordService;
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.ShareLinkTypeFormDTO;
+import com.epmet.resi.group.dto.topic.result.MemberRelationBetweenGroupAndGridResultDTO;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -107,5 +113,4 @@ public class TopicShareLinkVisitRecordServiceImpl extends BaseServiceImpl
SELECT ID AS topicDraftId,
TOPIC_CONTENT AS topicContent,
- CREATED_BY AS userName,
- UNIX_TIMESTAMP(CREATED_TIME) AS releaseTime
+
+ UNIX_TIMESTAMP(CREATED_TIME) AS releaseTime,
+
+
+ UNIX_TIMESTAMP(UPDATED_TIME) AS releaseTime,
+
+ CREATED_BY AS userName
FROM
topic_draft
WHERE
@@ -41,6 +46,13 @@
AND (DRAFT_STATUS = 'block' OR DRAFT_STATUS = 'rejected')
+ ORDER BY
+
+ CREATED_TIME DESC
+
+
+ UPDATED_TIME DESC
+