diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java index c1409342d6..44d229ec3b 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/EventEnum.java @@ -17,6 +17,7 @@ public enum EventEnum { TOPIC_SHIFTED_TO_ISSUE("topic_to_issue","resi_group","话题被转为议题(小组中发布的话题被组长转为议题)"), SHIFT_TOPIC_TO_ISSUE("shift_topic_to_issue","resi_group","转话题为议题(将自建小组中话题转为议题)"), TOPIC_SHIFTED_TO_PROJECT("topic_to_project","resi_group","话题被转为项目"), + LEADER_RESOLVE_TOPIC("leader_resolve_topic","resi_group","组长解决组内话题"), ; private String eventClass; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java index 3217260019..1886bd8300 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/DateUtils.java @@ -558,6 +558,17 @@ public class DateUtils { return format.format(timestamp * 1000); } + /** + * 日期格式转时间戳 + * @author zhaoqifeng + * @date 2021/4/19 14:52 + * @param date + * @return java.lang.Long + */ + public static Long dateToTimestamp(Date date) { + return date.getTime()/NumConstant.ONE_THOUSAND; + } + /** * @return java.util.Date * @param minStr yyyy-MM-dd HH:mm字符串 diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java index 3fce5f3edd..aeaa5210cf 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/UserPointActionLogServiceImpl.java @@ -263,7 +263,9 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl NumConstant.ZERO){ //不按照sourceId查询,查询指定日期内的相关积分规则的总和 Integer sum = baseDao.selectSumByEvent(event.getUserId(),eventCode,null,event.getCustomerId(),dateCheck,right); - if(null == sum) sum = NumConstant.ZERO; + if(null == sum) { + sum = NumConstant.ZERO; + } if(StringUtils.equals(ModuleConstant.OPERATION_TYPE_PLUS,ruleInfo.getOperateType())){ if(ruleInfo.getPoint() < NumConstant.ZERO){ //保证要加的积分是正数 diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java index 5aa7c8d3a30..ab20bb2ec4 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/constant/TopicConstant.java @@ -117,4 +117,6 @@ public interface TopicConstant { * 字段 附件类型 大写 下划线 */ String FIELD_TOPIC_ATTACHMENT_TYPE = "ATTACHMENT_TYPE"; + + String RESOLVED = "resolved"; } diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupFormDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupFormDTO.java new file mode 100644 index 0000000000..2fc8ba7b9a --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/form/GroupFormDTO.java @@ -0,0 +1,17 @@ +package com.epmet.resi.group.dto.group.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/19 15:57 + */ +@Data +public class GroupFormDTO implements Serializable { + private static final long serialVersionUID = 5330629771935235995L; + private String groupId; + private String gridId; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AchievementDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AchievementDetailResultDTO.java new file mode 100644 index 0000000000..1abbdc4dd3 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/AchievementDetailResultDTO.java @@ -0,0 +1,37 @@ +package com.epmet.resi.group.dto.group.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/19 14:19 + */ +@NoArgsConstructor +@Data +public class AchievementDetailResultDTO implements Serializable { + + private static final long serialVersionUID = 2426917315141725167L; + /** + * 小组创建时间 + */ + private Long createdDate; + private List achievement; + + @NoArgsConstructor + @Data + public static class AchievementBean { + /** + * 达成时间 + */ + private Long completionDate; + /** + * 成就描述(分拼在一起) + */ + private String describe; + } +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java index 23ffab9d29..fb867c8a72 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/controller/ResiGroupController.java @@ -31,6 +31,7 @@ import com.epmet.resi.group.dto.group.form.*; import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; import com.epmet.resi.group.dto.member.form.ResiIdentityFormDTO; +import oracle.jdbc.proxy.annotation.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; @@ -502,4 +503,16 @@ public class ResiGroupController { return new Result(); } + /** + * 小组成就详情 + * @author zhaoqifeng + * @date 2021/4/19 14:25 + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("achievementdetail") + public Result achievementDetail(@RequestBody GroupFormDTO formDTO) { + return new Result().ok(resiGroupService.achievementDetail(formDTO)); + } + } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java index a4772a09f5..6bc60c045e 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupMilestoneStatsDao.java @@ -19,7 +19,11 @@ package com.epmet.modules.group.dao; import com.epmet.commons.mybatis.dao.BaseDao; import com.epmet.modules.group.entity.ResiGroupMilestoneStatsEntity; +import com.epmet.resi.group.dto.group.ResiGroupMilestoneStatsDTO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 小组成就统计表 @@ -29,5 +33,12 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ResiGroupMilestoneStatsDao extends BaseDao { - + /** + * 获取未完成的成就 + * @author zhaoqifeng + * @date 2021/4/19 15:52 + * @param groupId + * @return java.util.List + */ + List selectUnAchieved(@Param("groupId") String groupId); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java index 64ce84523e..8c64dde861 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupMilestoneStatsService.java @@ -92,4 +92,22 @@ public interface ResiGroupMilestoneStatsService extends BaseService + */ + List getAchieved(String groupId); + + /** + * 未达成的成就 + * @author zhaoqifeng + * @date 2021/4/19 15:15 + * @param groupId + * @return java.util.List + */ + List getUnAchieved(String groupId); } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java index b4bccf14e9..c335dfe438 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupService.java @@ -370,4 +370,13 @@ public interface ResiGroupService extends BaseService { * @return void */ void setVisitSwitch(ManageInitFormDTO formDTO); + + /** + * 小组成就详情 + * @author zhaoqifeng + * @date 2021/4/19 14:25 + * @param formDTO + * @return com.epmet.resi.group.dto.group.result.AchievementDetailResultDTO + */ + AchievementDetailResultDTO achievementDetail(GroupFormDTO formDTO); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java index 48c32bad71..57dd5f1fbb 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupMilestoneStatsServiceImpl.java @@ -20,6 +20,7 @@ package com.epmet.modules.group.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; +import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.page.PageData; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.constant.FieldConstant; @@ -98,4 +99,36 @@ public class ResiGroupMilestoneStatsServiceImpl extends BaseServiceImpl + * @author zhaoqifeng + * @date 2021/4/19 15:15 + */ + @Override + public List getAchieved(String groupId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("GROUP_ID", groupId); + wrapper.eq("IS_ARRIVE", NumConstant.ONE); + wrapper.eq("DEL_FLAG", NumConstant.ZERO); + wrapper.orderByDesc("ARRIVE_TIME"); + List list = baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(list, ResiGroupMilestoneStatsDTO.class); + } + + /** + * 未达成的成就 + * + * @param groupId + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/19 15:15 + */ + @Override + public List getUnAchieved(String groupId) { + return baseDao.selectUnAchieved(groupId); + } + } \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java index 26f1b8c746..54846ac828 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java @@ -51,10 +51,7 @@ import com.epmet.modules.group.entity.GroupEditSubmitRecordEntity; import com.epmet.modules.group.entity.ResiGroupEntity; import com.epmet.modules.group.entity.ResiGroupOperationEntity; import com.epmet.modules.group.redis.ResiGroupRedis; -import com.epmet.modules.group.service.ResiGroupCodeService; -import com.epmet.modules.group.service.ResiGroupOperationService; -import com.epmet.modules.group.service.ResiGroupService; -import com.epmet.modules.group.service.ResiGroupStatisticalService; +import com.epmet.modules.group.service.*; import com.epmet.modules.member.dao.GroupMemeberOperationDao; import com.epmet.modules.member.dao.ResiGroupMemberDao; import com.epmet.modules.member.redis.ResiGroupMemberRedis; @@ -73,6 +70,7 @@ import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.form.EditAuditSwitchFormDTO; import com.github.pagehelper.PageHelper; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -82,7 +80,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionSynchronizationAdapter; import org.springframework.transaction.support.TransactionSynchronizationManager; -import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.*; @@ -159,6 +156,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -943,7 +943,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl getGroupIdByGridId(String gridId) { - if(StringUtils.isBlank(gridId)) return null; + if(StringUtils.isBlank(gridId)) { + return null; + } return baseDao.getGroupIdByGridId(gridId); } @@ -956,8 +958,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl> getGroupIdsByGridIdList(List gridIdList) { - if(null == gridIdList || gridIdList.size() < NumConstant.ONE) - return null; + if(null == gridIdList || gridIdList.size() < NumConstant.ONE) { + return null; + } Map> result = new HashMap<>(); List groups = new ArrayList<>(); Map> groupMap @@ -1166,6 +1169,46 @@ public class ResiGroupServiceImpl extends BaseServiceImpl achievementList = new ArrayList<>(); + //1.小组创建时间 + ResiGroupEntity group = baseDao.selectById(formDTO.getGroupId()); + resultDTO.setCreatedDate(DateUtils.dateToTimestamp(group.getCreatedTime())); + + //2.即将完成的3个成就 + List unAchievedList = resiGroupMilestoneStatsService.getUnAchieved(formDTO.getGroupId()); + if (CollectionUtils.isNotEmpty(unAchievedList)) { + unAchievedList.forEach(item -> { + AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean(); + String describe = item.getMileageName() + "(" + item.getCurrentValue().toString() + "/" + item.getTargetValue().toString() + ")"; + bean.setDescribe(describe); + achievementList.add(bean); + }); + } + //3.已完成的成就 + List achievedList = resiGroupMilestoneStatsService.getAchieved(formDTO.getGroupId()); + if (CollectionUtils.isNotEmpty(achievedList)) { + achievedList.forEach(item -> { + AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean(); + bean.setDescribe(item.getMileageName()); + bean.setCompletionDate(DateUtils.dateToTimestamp(item.getArriveTime())); + achievementList.add(bean); + }); + } + resultDTO.setAchievement(achievementList); + return resultDTO; + } + @Override public GroupDetailResultDTO getGroupDetail(String groupId) { GroupDetailResultDTO groupDetail = new GroupDetailResultDTO(); 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 36199596a1..3d44bd7053 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 @@ -704,6 +704,41 @@ public class ResiTopicServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); + + BasePointEventMsg pointEventMsg = new BasePointEventMsg(); + pointEventMsg.setCustomerId(tokenDto.getCustomerId()); + pointEventMsg.setUserId(tokenDto.getUserId()); + pointEventMsg.setActionFlag(MqConstant.PLUS); + pointEventMsg.setIsCommon(false); + pointEventMsg.setEventTag(EventEnum.LEADER_RESOLVE_TOPIC.getEventTag()); + //将话题“某某某…” (前十个字后面省略号) 转为议题 + String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent()); + pointEventMsg.setRemark(groupCache.getGroupName() + "小组中发布的" + + (StringUtils.isBlank(content) + || StringUtils.equals("语音话题", content) ? "语音话题" : + "话题\"" + + content + .substring(NumConstant.ZERO, content.length() < NumConstant.TEN ? content.length() : NumConstant.TEN) + + (NumConstant.TEN > content.length() ? "\"" : "…\"")) + + "解决"); + pointEventMsgList.add(pointEventMsg); + + mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList)); + if(!SendMqMsgUtils.sendMsg(mqBaseMsgDTO).success()){ + log.error("组长解决话题事件发送失败,参数:{}",JSON.toJSONString(closeFormDTO)); + } + } + return new Result(); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml index 3de4a16d99..1c854f0bc4 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupMilestoneStatsDao.xml @@ -20,6 +20,21 @@ + \ No newline at end of file