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 + + 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} + \ No newline at end of file