diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java index 8f416ef8e9..7946935ffd 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/constant/NumConstant.java @@ -40,6 +40,7 @@ public interface NumConstant { int FIFTY_ONE = 51; int SIXTY = 60; int ONE_HUNDRED = 100; + int FIVE_HUNDRED = 500; BigDecimal ONE_HUNDRED_DECIMAL = new BigDecimal(100); BigDecimal ZERO_DECIMAL = new BigDecimal(0); int ONE_THOUSAND = 1000; diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java index 6f371a1e09..6c9044b499 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java +++ b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/mq/eventmsg/BasePointEventMsg.java @@ -29,6 +29,17 @@ public class BasePointEventMsg implements Serializable { * 客户Id */ private String customerId; + + /** + * 机关Id + */ + private String agencyId; + + /** + * 网格Id + */ + private String gridId; + /** * 被操作用户id */ @@ -69,4 +80,6 @@ public class BasePointEventMsg implements Serializable { private Date targetDate; private String eventTag; + + private String eventClass; } 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-client/src/main/java/com/epmet/dto/BizPointTotalDetailDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointTotalDetailDTO.java new file mode 100644 index 0000000000..f057816b87 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointTotalDetailDTO.java @@ -0,0 +1,101 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Data +public class BizPointTotalDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 组织Id + */ + private String agencyId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 业务类型:小组:group + */ + private String bizType; + + /** + * 业务类型的对象id + */ + private String objectId; + + /** + * OBJECTID的总积分 总积分=objectId下所有的用户积分 + */ + private Integer totalPoint; + + /** + * 删除标识 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java new file mode 100644 index 0000000000..3e5dc04f11 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/BizPointUserTotalDetailDTO.java @@ -0,0 +1,106 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dto; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Data +public class BizPointUserTotalDetailDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户ID + */ + private String customerId; + + /** + * 组织Id + */ + private String agencyId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 用户ID + */ + private String userId; + + /** + * 业务类型:小组:group + */ + private String bizType; + + /** + * 业务类型的对象id + */ + private String objectId; + + /** + * OBJECTID的总积分 总积分=objectId下所有的用户积分 + */ + private Integer totalPoint; + + /** + * 删除标识 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java new file mode 100644 index 0000000000..8da5ab5729 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/form/GroupPointFormDTO.java @@ -0,0 +1,17 @@ +package com.epmet.dto.form; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/21 9:50 + */ +@Data +public class GroupPointFormDTO implements Serializable { + private static final long serialVersionUID = -3231073030413434313L; + private String groupId; + private String gridId; +} diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java new file mode 100644 index 0000000000..275a5917ba --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/GroupPointRankingResultDTO.java @@ -0,0 +1,38 @@ +package com.epmet.dto.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/21 10:34 + */ +@NoArgsConstructor +@Data +public class GroupPointRankingResultDTO implements Serializable { + + private static final long serialVersionUID = -9215609608003827403L; + /** + * 排名 + */ + private String ranking; + /** + * 小组名 + */ + private String groupName; + /** + * 小组积分 + */ + private String point; + /** + * 是否本小组 + */ + private String isMine; + /** + * 小组ID + */ + private String groupId; +} diff --git a/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointRankingResultDTO.java b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointRankingResultDTO.java new file mode 100644 index 0000000000..c063eb8286 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-client/src/main/java/com/epmet/dto/result/PointRankingResultDTO.java @@ -0,0 +1,44 @@ +package com.epmet.dto.result; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/21 10:05 + */ +@NoArgsConstructor +@Data +public class PointRankingResultDTO implements Serializable { + + private static final long serialVersionUID = -5383837225811609227L; + /** + * 头像 + */ + private String headPhoto; + /** + * 支部小组-姓名/普通小组-昵称 + */ + private String name; + /** + * 积分 + */ + private String point; + /** + * 排名 + */ + private String ranking; + /** + * 是否本人 + */ + private String isMine; + /** + * 用户ID + */ + @JsonIgnore + private String userId; +} diff --git a/epmet-module/epmet-point/epmet-point-server/pom.xml b/epmet-module/epmet-point/epmet-point-server/pom.xml index 459d5b4d08..d97eefdeef 100644 --- a/epmet-module/epmet-point/epmet-point-server/pom.xml +++ b/epmet-module/epmet-point/epmet-point-server/pom.xml @@ -87,6 +87,12 @@ 2.0.0 compile + + com.epmet + resi-group-client + 2.0.0 + compile + diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java new file mode 100644 index 0000000000..0715bb6c8e --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/controller/GroupPointController.java @@ -0,0 +1,76 @@ +package com.epmet.controller; + +import com.epmet.commons.tools.annotation.LoginUser; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO; +import com.epmet.dto.result.GroupPointRankingResultDTO; +import com.epmet.dto.result.PointRankingResultDTO; +import com.epmet.service.BizPointTotalDetailService; +import com.epmet.service.BizPointUserTotalDetailService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author zhaoqifeng + * 小组积分 + * @date 2021/4/21 9:45 + */ +@RestController +@RequestMapping("group/point") +public class GroupPointController { + + @Autowired + private BizPointUserTotalDetailService bizPointUserTotalDetailService; + @Autowired + private BizPointTotalDetailService bizPointTotalDetailService; + + /** + * 小组积分贡献榜 + * + * @param tokenDto + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author zhaoqifeng + * @date 2021/4/21 14:02 + */ + @PostMapping("pointranking") + public Result> pointRanking(@LoginUser TokenDto tokenDto, @RequestBody GroupPointFormDTO formDTO) { + List list = bizPointUserTotalDetailService.pointRanking(tokenDto, formDTO); + return new Result>().ok(list); + } + + /** + * 网格小组积分排行 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result> + * @author zhaoqifeng + * @date 2021/4/21 14:02 + */ + @PostMapping("grouppointranking") + public Result> groupPointRanking(@RequestBody GroupPointFormDTO formDTO) { + List list = bizPointTotalDetailService.groupPointRanking(formDTO); + return new Result>().ok(list); + } + + /** + * 小组积分详情 + * + * @param formDTO + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/4/21 14:02 + */ + @PostMapping("pointdetail") + public Result pointDetail(@RequestBody GroupPointFormDTO formDTO) { + GroupPointDetailResultDTO result = bizPointTotalDetailService.pointDetail(formDTO); + return new Result().ok(result); + } +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointTotalDetailDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointTotalDetailDao.java new file mode 100644 index 0000000000..26e05f5a7b --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointTotalDetailDao.java @@ -0,0 +1,43 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.dto.BizPointTotalDetailDTO; +import com.epmet.entity.BizPointTotalDetailEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Mapper +public interface BizPointTotalDetailDao extends BaseDao { + /** + * 根据业务类型查找数据 + * @author zhaoqifeng + * @date 2021/4/20 16:57 + * @param type + * @param objectId + * @return com.epmet.dto.BizPointTotalDetailDTO + */ + BizPointTotalDetailDTO selectDataByObject(@Param("type")String type, @Param("objectId")String objectId); +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointUserTotalDetailDao.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointUserTotalDetailDao.java new file mode 100644 index 0000000000..0813114d27 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/dao/BizPointUserTotalDetailDao.java @@ -0,0 +1,44 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.entity.BizPointUserTotalDetailEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Mapper +public interface BizPointUserTotalDetailDao extends BaseDao { + + /** + * 获取今日积分增量 + * @author zhaoqifeng + * @date 2021/4/21 16:56 + * @param type + * @param objectId + * @return java.lang.Integer + */ + Integer selectIncrease(@Param("type")String type, @Param("objectId")String objectId); + +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointTotalDetailEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointTotalDetailEntity.java new file mode 100644 index 0000000000..b05bc59705 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointTotalDetailEntity.java @@ -0,0 +1,71 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("biz_point_total_detail") +public class BizPointTotalDetailEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 组织Id + */ + private String agencyId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 业务类型:小组:group + */ + private String bizType; + + /** + * 业务类型的对象id + */ + private String objectId; + + /** + * OBJECTID的总积分 总积分=objectId下所有的用户积分 + */ + private Integer totalPoint; + +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointUserTotalDetailEntity.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointUserTotalDetailEntity.java new file mode 100644 index 0000000000..e0f2960604 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/entity/BizPointUserTotalDetailEntity.java @@ -0,0 +1,76 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("biz_point_user_total_detail") +public class BizPointUserTotalDetailEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户ID + */ + private String customerId; + + /** + * 组织Id + */ + private String agencyId; + + /** + * 网格ID + */ + private String gridId; + + /** + * 用户ID + */ + private String userId; + + /** + * 业务类型:小组:group + */ + private String bizType; + + /** + * 业务类型的对象id + */ + private String objectId; + + /** + * OBJECTID的总积分 总积分=objectId下所有的用户积分 + */ + private Integer totalPoint; + +} diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java new file mode 100644 index 0000000000..f72e49ba39 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointTotalDetailService.java @@ -0,0 +1,129 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.dto.BizPointTotalDetailDTO; +import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO; +import com.epmet.dto.result.GroupPointRankingResultDTO; +import com.epmet.entity.BizPointTotalDetailEntity; + +import java.util.List; +import java.util.Map; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +public interface BizPointTotalDetailService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-04-20 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-04-20 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return BizPointTotalDetailDTO + * @author generator + * @date 2021-04-20 + */ + BizPointTotalDetailDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-20 + */ + void save(BizPointTotalDetailDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-20 + */ + void update(BizPointTotalDetailDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-04-20 + */ + void delete(String[] ids); + + /** + * 根据业务类型查找数据 + * + * @param type + * @param objectId + * @return com.epmet.dto.BizPointTotalDetailDTO + * @author zhaoqifeng + * @date 2021/4/20 16:53 + */ + BizPointTotalDetailDTO getDataByObject(String type, String objectId); + + /** + * 小组积分详情 + * + * @param formDTO + * @return com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO + * @author zhaoqifeng + * @date 2021/4/21 14:05 + */ + GroupPointDetailResultDTO pointDetail(GroupPointFormDTO formDTO); + + /** + * 网格小组积分排行 + * + * @param formDTO + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/21 14:05 + */ + List groupPointRanking(GroupPointFormDTO formDTO); +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointUserTotalDetailService.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointUserTotalDetailService.java new file mode 100644 index 0000000000..51e8172f7c --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/BizPointUserTotalDetailService.java @@ -0,0 +1,143 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.dto.BizPointUserTotalDetailDTO; +import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.dto.result.PointRankingResultDTO; +import com.epmet.entity.BizPointUserTotalDetailEntity; + +import java.util.List; +import java.util.Map; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +public interface BizPointUserTotalDetailService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-04-20 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-04-20 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return BizPointUserTotalDetailDTO + * @author generator + * @date 2021-04-20 + */ + BizPointUserTotalDetailDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-20 + */ + void save(BizPointUserTotalDetailDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-20 + */ + void update(BizPointUserTotalDetailDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-04-20 + */ + void delete(String[] ids); + + + /** + * 根据业务类型查找用户数据 + * + * @param type + * @param objectId + * @param userId + * @return com.epmet.dto.BizPointTotalDetailDTO + * @author zhaoqifeng + * @date 2021/4/20 16:53 + */ + BizPointUserTotalDetailDTO getDataByObject(String type, String objectId, String userId); + + /** + * 根据业务类型查找积分总和 + * + * @param type + * @param objectId + * @return java.lang.Integer + * @author zhaoqifeng + * @date 2021/4/20 17:21 + */ + Integer getTotalByObject(String type, String objectId); + + /** + * 小组积分贡献榜 + * + * @param tokenDto + * @param formDTO + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/21 14:06 + */ + List pointRanking(TokenDto tokenDto, GroupPointFormDTO formDTO); + + /** + * 获取今日增量 + * @author zhaoqifeng + * @date 2021/4/21 16:41 + * @param type + * @param objectId + * @return java.lang.Integer + */ + Integer getIncrease(String type, String objectId); +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java new file mode 100644 index 0000000000..e0a03fe667 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointTotalDetailServiceImpl.java @@ -0,0 +1,198 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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.exception.RenException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dao.BizPointTotalDetailDao; +import com.epmet.dto.BizPointTotalDetailDTO; +import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO; +import com.epmet.dto.result.GroupPointRankingResultDTO; +import com.epmet.entity.BizPointTotalDetailEntity; +import com.epmet.resi.group.dto.group.ResiGroupDTO; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; +import com.epmet.service.BizPointTotalDetailService; +import com.epmet.service.BizPointUserTotalDetailService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Service +public class BizPointTotalDetailServiceImpl extends BaseServiceImpl implements BizPointTotalDetailService { + + @Autowired + private ResiGroupOpenFeignClient resiGroupOpenFeignClient; + @Autowired + private BizPointUserTotalDetailService bizPointUserTotalDetailService; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, BizPointTotalDetailDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, BizPointTotalDetailDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public BizPointTotalDetailDTO get(String id) { + BizPointTotalDetailEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, BizPointTotalDetailDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(BizPointTotalDetailDTO dto) { + BizPointTotalDetailEntity entity = ConvertUtils.sourceToTarget(dto, BizPointTotalDetailEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(BizPointTotalDetailDTO dto) { + BizPointTotalDetailEntity entity = ConvertUtils.sourceToTarget(dto, BizPointTotalDetailEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 根据业务类型查找数据 + * + * @param type + * @param objectId + * @return com.epmet.dto.BizPointTotalDetailDTO + * @author zhaoqifeng + * @date 2021/4/20 16:53 + */ + @Override + public BizPointTotalDetailDTO getDataByObject(String type, String objectId) { + return baseDao.selectDataByObject(type, objectId); + } + + /** + * 小组积分详情 + * + * @param formDTO + * @return com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO + * @author zhaoqifeng + * @date 2021/4/21 14:05 + */ + @Override + public GroupPointDetailResultDTO pointDetail(GroupPointFormDTO formDTO) { + Result result = resiGroupOpenFeignClient.groupPointDetail(formDTO.getGroupId()); + if (!result.success() || null == result.getData()) { + throw new RenException(result.getCode(), result.getMsg()); + } + GroupPointDetailResultDTO detail = result.getData(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("BIZ_TYPE", "group") + .eq("OBJECT_ID", formDTO.getGroupId()) + .eq("DEL_FLAG", NumConstant.ZERO_STR); + BizPointTotalDetailEntity entity = baseDao.selectOne(wrapper); + int toUpgrade = Integer.parseInt(detail.getNextLevelPoint()) - entity.getTotalPoint(); + detail.setToUpgrade(Integer.toString(toUpgrade)); + Integer increase = bizPointUserTotalDetailService.getIncrease("group", formDTO.getGroupId()); + detail.setIncrease(increase.toString()); + detail.setTotal(entity.getTotalPoint().toString()); + detail.setCurrentPoint(entity.getTotalPoint().toString()); + return detail; + } + + /** + * 网格小组积分排行 + * + * @param formDTO + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/21 14:05 + */ + @Override + public List groupPointRanking(GroupPointFormDTO formDTO) { + List list = new ArrayList<>(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("BIZ_TYPE", "group") + .eq("GRID_ID", formDTO.getGridId()) + .eq("DEL_FLAG", NumConstant.ZERO_STR) + .orderByDesc("TOTAL_POINT"); + List totalDetailList = baseDao.selectList(wrapper); + Result> groupList = resiGroupOpenFeignClient.getGroupListByGrid(formDTO.getGridId()); + list = + totalDetailList.stream().flatMap(detail -> groupList.getData().stream().filter(item -> item.getId().equals(detail.getObjectId())).map(group -> { + GroupPointRankingResultDTO dto = new GroupPointRankingResultDTO(); + dto.setGroupId(group.getId()); + dto.setGroupName(group.getGroupName()); + dto.setPoint(detail.getTotalPoint().toString()); + if (formDTO.getGroupId().equals(group.getId())) { + dto.setIsMine(NumConstant.ONE_STR); + } else { + dto.setIsMine(NumConstant.ZERO_STR); + } + return dto; + })).collect(Collectors.toList()); + int i = 1; + for (GroupPointRankingResultDTO dto : list) { + dto.setRanking(String.valueOf(i)); + i++; + } + return list; + } + +} \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointUserTotalDetailServiceImpl.java b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointUserTotalDetailServiceImpl.java new file mode 100644 index 0000000000..e6fc360f26 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/java/com/epmet/service/impl/BizPointUserTotalDetailServiceImpl.java @@ -0,0 +1,235 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.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.exception.RenException; +import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.commons.tools.utils.Result; +import com.epmet.dao.BizPointUserTotalDetailDao; +import com.epmet.dto.BizPointUserTotalDetailDTO; +import com.epmet.dto.form.GroupPointFormDTO; +import com.epmet.dto.result.PointRankingResultDTO; +import com.epmet.dto.result.UserBaseInfoResultDTO; +import com.epmet.entity.BizPointUserTotalDetailEntity; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.resi.group.dto.group.ResiGroupDTO; +import com.epmet.resi.group.feign.ResiGroupOpenFeignClient; +import com.epmet.service.BizPointUserTotalDetailService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 按业务类型积分总计 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-20 + */ +@Service +public class BizPointUserTotalDetailServiceImpl extends BaseServiceImpl implements BizPointUserTotalDetailService { + + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Autowired + private ResiGroupOpenFeignClient resiGroupOpenFeignClient; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, BizPointUserTotalDetailDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, BizPointUserTotalDetailDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public BizPointUserTotalDetailDTO get(String id) { + BizPointUserTotalDetailEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, BizPointUserTotalDetailDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(BizPointUserTotalDetailDTO dto) { + BizPointUserTotalDetailEntity entity = ConvertUtils.sourceToTarget(dto, BizPointUserTotalDetailEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(BizPointUserTotalDetailDTO dto) { + BizPointUserTotalDetailEntity entity = ConvertUtils.sourceToTarget(dto, BizPointUserTotalDetailEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 根据业务类型查找用户数据 + * + * @param type + * @param objectId + * @param userId + * @return com.epmet.dto.BizPointTotalDetailDTO + * @author zhaoqifeng + * @date 2021/4/20 16:53 + */ + @Override + public BizPointUserTotalDetailDTO getDataByObject(String type, String objectId, String userId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("BIZ_TYPE", type) + .eq("OBJECT_ID", objectId) + .eq("USER_ID", userId) + .eq("DEL_FLAG", NumConstant.ZERO_STR); + BizPointUserTotalDetailEntity entity = baseDao.selectOne(wrapper); + return ConvertUtils.sourceToTarget(entity, BizPointUserTotalDetailDTO.class); + } + + /** + * 根据业务类型查找积分总和 + * + * @param type + * @param objectId + * @return java.lang.Integer + * @author zhaoqifeng + * @date 2021/4/20 17:21 + */ + @Override + public Integer getTotalByObject(String type, String objectId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.select("IFNULL(SUM(TOTAL_POINT), 0) as TOTAL_POINT") + .eq("BIZ_TYPE", type) + .eq("OBJECT_ID", objectId) + .eq("DEL_FLAG", NumConstant.ZERO_STR); + BizPointUserTotalDetailEntity entity = baseDao.selectOne(wrapper); + if (null == entity) { + return NumConstant.ZERO; + } + return entity.getTotalPoint(); + } + + /** + * 小组积分贡献榜 + * + * @param tokenDto + * @param formDTO + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/21 14:06 + */ + @Override + public List pointRanking(TokenDto tokenDto, GroupPointFormDTO formDTO) { + List list = new ArrayList<>(); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("BIZ_TYPE", "group") + .eq("OBJECT_ID", formDTO.getGroupId()) + .eq("DEL_FLAG", NumConstant.ZERO_STR) + .orderByDesc("TOTAL_POINT"); + List userTotalList = baseDao.selectList(wrapper); + int i = 1; + list = userTotalList.stream().map(item -> { + PointRankingResultDTO dto = new PointRankingResultDTO(); + dto.setUserId(item.getUserId()); + dto.setPoint(item.getTotalPoint().toString()); + if (tokenDto.getUserId().equals(item.getUserId())) { + dto.setIsMine(NumConstant.ONE_STR); + } else { + dto.setIsMine(NumConstant.ZERO_STR); + } + return dto; + }).collect(Collectors.toList()); + for (PointRankingResultDTO dto : list) { + dto.setRanking(String.valueOf(i)); + i++; + } + + //获取小组信息 + Result group = resiGroupOpenFeignClient.getGroupDetail(formDTO.getGroupId()); + if (!group.success() || null == group.getData()) { + throw new RenException(group.getCode(), group.getMsg()); + } + //获取用户信息 + List userIds = userTotalList.stream().map(BizPointUserTotalDetailEntity :: getUserId).collect(Collectors.toList()); + Result> userInfoListResult = epmetUserOpenFeignClient.queryUserBaseInfo(userIds); + if (!userInfoListResult.success() || null == userInfoListResult.getData()) { + throw new RenException(userInfoListResult.getCode(), userInfoListResult.getMsg()); + } + list.forEach(item -> userInfoListResult.getData().stream().filter(baseInfo -> item.getUserId().equals(baseInfo.getUserId())).forEach( + user -> { + //楼院小组显示昵称,支部小组显示姓名 + if (("ordinary").equals(group.getData().getGroupType())) { + item.setName(user.getNickname()); + } else { + item.setName(user.getName()); + } + item.setHeadPhoto(user.getHeadImgUrl()); + } + )); + return list; + } + + /** + * 获取今日增量 + * + * @param type + * @param objectId + * @return java.lang.Integer + * @author zhaoqifeng + * @date 2021/4/21 16:41 + */ + @Override + public Integer getIncrease(String type, String objectId) { + return baseDao.selectIncrease(type, objectId); + } + +} \ No newline at end of file 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..326a9515b2 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 @@ -31,6 +31,8 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.dao.UserPointActionLogDao; +import com.epmet.dto.BizPointTotalDetailDTO; +import com.epmet.dto.BizPointUserTotalDetailDTO; import com.epmet.dto.UserPointActionLogDTO; import com.epmet.dto.form.CommonPageUserFormDTO; import com.epmet.dto.result.ResiPointLogListResultDTO; @@ -39,9 +41,7 @@ import com.epmet.entity.PointRuleEntity; import com.epmet.entity.UserPointActionLogEntity; import com.epmet.entity.UserPointStatisticalDailyEntity; import com.epmet.entity.UserPointTotalEntity; -import com.epmet.service.UserPointActionLogService; -import com.epmet.service.UserPointStatisticalDailyService; -import com.epmet.service.UserPointTotalService; +import com.epmet.service.*; import com.epmet.utils.DimIdGenerator; import com.epmet.utils.ModuleConstant; import com.epmet.utils.RuleCycleEnum; @@ -77,6 +77,10 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -263,7 +267,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){ //保证要加的积分是正数 @@ -342,6 +348,47 @@ public class UserPointActionLogServiceImpl extends BaseServiceImpl + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/BizPointUserTotalDetailDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/BizPointUserTotalDetailDao.xml new file mode 100644 index 0000000000..a846469881 --- /dev/null +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/BizPointUserTotalDetailDao.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml index 23d372e0e7..c18c78976b 100644 --- a/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml +++ b/epmet-module/epmet-point/epmet-point-server/src/main/resources/mapper/PointRuleDao.xml @@ -28,7 +28,11 @@ SELECT DISTINCT FUNCTION_ID FROM point_rule WHERE CUSTOMER_ID = #{customerId,jdbcType=VARCHAR} UPDATE point_rule @@ -50,4 +54,4 @@ - \ No newline at end of file + 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/ResiGroupAchievementConfigDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupAchievementConfigDTO.java new file mode 100644 index 0000000000..26b9567bd5 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupAchievementConfigDTO.java @@ -0,0 +1,96 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.resi.group.dto.group; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 小组成就配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Data +public class ResiGroupAchievementConfigDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户Id + */ + private String customerId; + + /** + * 里程名称 + */ + private String achievementName; + + /** + * 前一个里程值 + */ + private Integer preValue; + + /** + * 目标值 + */ + private Integer targetValue; + + /** + * 里程类型:小组人数:member;topic:话题数;转议题数:toIssue;话题解决数:resloveTopic + */ + private String achievementType; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupAchievementStatsDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupAchievementStatsDTO.java new file mode 100644 index 0000000000..81d83e18af --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupAchievementStatsDTO.java @@ -0,0 +1,111 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.resi.group.dto.group; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 小组成就统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Data +public class ResiGroupAchievementStatsDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 客户Id + */ + private String customerId; + + /** + * 小组Id + */ + private String groupId; + + /** + * 里程ID + */ + private String achievementId; + + /** + * 里程名称 + */ + private String achievementName; + + /** + * 实现时间 + */ + private Date arriveTime; + + /** + * 当前值 + */ + private Integer currentValue; + + /** + * 目标值 + */ + private Integer targetValue; + + /** + * 目标是否实现,是:1;否:0 + */ + private Integer isArrive; + + /** + * 删除标记 0:未删除,1:已删除 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java index eb83fd5162..a2dfedb3ff 100644 --- a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/ResiGroupDTO.java @@ -85,6 +85,16 @@ Ps: 如果一个小组被拒绝,当前小组的状态将永久停留在“审 */ private String visitSwitch; + /** + * 小组类型(ordinary:楼院小组 branch:支部小组) + */ + private String groupType; + + /** + * 小组等级 + */ + private Integer level; + /** * 删除标记 0:未删除,1:已删除 */ 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-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupPointDetailResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupPointDetailResultDTO.java new file mode 100644 index 0000000000..bc98f16da2 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/group/result/GroupPointDetailResultDTO.java @@ -0,0 +1,46 @@ +package com.epmet.resi.group.dto.group.result; + +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/21 10:37 + */ +@NoArgsConstructor +@Data +public class GroupPointDetailResultDTO implements Serializable { + + private static final long serialVersionUID = -1158521486690554498L; + /** + * 小组当前等级 + */ + private String level; + /** + * 总积分 + */ + private String total; + /** + * 今日增长 + */ + private String increase; + /** + * 距离升级所需积分 + */ + private String toUpgrade; + /** + * 下一等级积分 + */ + private String nextLevelPoint; + /** + * 下一等级 + */ + private String nextLevel; + /** + * 当前积分 + */ + private String currentPoint; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/AchievementResultDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/AchievementResultDTO.java new file mode 100644 index 0000000000..f8daf7af21 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/AchievementResultDTO.java @@ -0,0 +1,17 @@ +package com.epmet.resi.group.dto.member.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/22 9:24 + */ +@Data +public class AchievementResultDTO implements Serializable { + private static final long serialVersionUID = 8079550501852632061L; + private List achievement; +} diff --git a/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupAchievementDTO.java b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupAchievementDTO.java new file mode 100644 index 0000000000..312a5759c2 --- /dev/null +++ b/epmet-module/resi-group/resi-group-client/src/main/java/com/epmet/resi/group/dto/member/result/GroupAchievementDTO.java @@ -0,0 +1,17 @@ +package com.epmet.resi.group.dto.member.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author zhaoqifeng + * @dscription + * @date 2021/4/22 9:42 + */ +@Data +public class GroupAchievementDTO implements Serializable { + private static final long serialVersionUID = 2195790168656351743L; + private String groupName; + private String achievementName; +} 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 9c315687f0..1594d07c7d 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 @@ -5,10 +5,7 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.resi.group.dto.group.ResiGroupDTO; import com.epmet.resi.group.dto.group.form.*; -import com.epmet.resi.group.dto.group.result.ApplicationDetailCopyResultDTO; -import com.epmet.resi.group.dto.group.result.ApplyingGroupResultDTO; -import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO; -import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; +import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.*; @@ -217,4 +214,34 @@ public interface ResiGroupOpenFeignClient { **/ @PostMapping(value = "/resi/group/topic/topicattachmentlist") Result topicAttachmentList(@RequestBody TopicAttachmentFormDTO formDTO); + + /** + * 获取小组详情 + * @author zhaoqifeng + * @date 2021/4/21 15:20 + * @param groupId + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("resi/group/group/groupDetail/{groupId}") + Result getGroupDetail(@PathVariable String groupId); + + /** + * 获取网格下小组 + * @author zhaoqifeng + * @date 2021/4/21 15:57 + * @param gridId + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("resi/group/group/groupList/{gridId}") + Result> getGroupListByGrid(@PathVariable String gridId); + + /** + * 小组积分详情 + * @author zhaoqifeng + * @date 2021/4/21 16:30 + * @param groupId + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("resi/group/group/groupPointDetail/{groupId}") + Result groupPointDetail(@PathVariable String groupId); } 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 db2a44464a..f281181414 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 @@ -11,6 +11,7 @@ import com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO; import com.epmet.resi.group.dto.group.form.ApplicationDetailFormDTO; import com.epmet.resi.group.dto.group.form.GroupInfoFormDTO; import com.epmet.resi.group.dto.group.result.GroupInfoResultDTO; +import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.topic.MyCreateTopicsFormDTO; import com.epmet.resi.group.dto.topic.ResiTopicDTO; import com.epmet.resi.group.dto.topic.form.*; @@ -165,4 +166,43 @@ public class ResiGroupOpenFeignClientFallback implements ResiGroupOpenFeignClien public Result topicAttachmentList(TopicAttachmentFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "topicAttachmentList", formDTO); } + + /** + * 获取小组详情 + * + * @param groupId + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/4/21 15:20 + */ + @Override + public Result getGroupDetail(String groupId) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getGroupDetail", groupId); + } + + /** + * 获取网格下小组 + * + * @param gridId + * @return com.epmet.commons.tools.utils.Result> + * @author zhaoqifeng + * @date 2021/4/21 15:57 + */ + @Override + public Result> getGroupListByGrid(String gridId) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "getGroupListByGrid", gridId); + } + + /** + * 小组积分详情 + * + * @param groupId + * @return com.epmet.commons.tools.utils.Result + * @author zhaoqifeng + * @date 2021/4/21 16:30 + */ + @Override + public Result groupPointDetail(String groupId) { + return ModuleUtils.feignConError(ServiceConstant.RESI_GROUP_SERVER, "groupPointDetail", groupId); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/enums/AchievementTypeEnum.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/enums/AchievementTypeEnum.java new file mode 100644 index 0000000000..19e315082b --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/enums/AchievementTypeEnum.java @@ -0,0 +1,49 @@ +package com.epmet.modules.enums; + +/** + * 小组成就类型枚举类 + * dev|test|prod + * + * @author jianjun liu + * @date 2020-07-03 11:14 + **/ +public enum AchievementTypeEnum { + /** + * 环境变量枚举 + */ + MEMBER("member", "小组成员数"), + TOPIC("topic", "话题数"), + TOISSUE("toissue", "转议题数"), + RESOVLE_TOPIC("resovletopic", "解决话题数"), + ; + + private String code; + private String name; + + + + AchievementTypeEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public static AchievementTypeEnum getEnum(String code) { + AchievementTypeEnum[] values = AchievementTypeEnum.values(); + for (AchievementTypeEnum value : values) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + + public String getCode() { + return code; + } + + public String getName() { + return name; + } + +} 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 9166995266..24388905dc 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,12 +31,19 @@ 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 com.epmet.resi.group.dto.member.result.AchievementResultDTO; +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; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.List; @@ -510,4 +517,65 @@ public class ResiGroupController { return new Result>().ok(resiGroupService.allGroupList(formDTO)); } + /** + * 小组成就详情 + * @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)); + } + + /** + * 获取小组详情 + * @author zhaoqifeng + * @date 2021/4/21 15:17 + * @param groupId + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("groupDetail/{groupId}") + public Result getGroupDetail(@PathVariable String groupId) { + ResiGroupDTO groupDTO = resiGroupService.get(groupId); + return new Result().ok(groupDTO); + } + + /** + * 获取网格下小组 + * @author zhaoqifeng + * @date 2021/4/21 15:57 + * @param gridId + * @return com.epmet.commons.tools.utils.Result> + */ + @PostMapping("groupList/{gridId}") + public Result> getGroupListByGrid(@PathVariable String gridId) { + List list = resiGroupService.getGroupListByGrid(gridId); + return new Result>().ok(list); + } + + /** + * 小组积分详情 + * @author zhaoqifeng + * @date 2021/4/21 16:22 + * @param groupId + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("groupPointDetail/{groupId}") + public Result groupPointDetail(@PathVariable String groupId) { + return new Result().ok(resiGroupService.groupPointDetail(groupId)); + } + + /** + * 小组近段时间实现的成就列表 + * @author zhaoqifeng + * @date 2021/4/22 9:27 + * @param tokenDto + * @return com.epmet.commons.tools.utils.Result + */ + @PostMapping("achievement") + public Result achievement(@LoginUser TokenDto tokenDto) { + return new Result().ok(resiGroupService.achievement(tokenDto)); + } } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementConfigDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementConfigDao.java new file mode 100644 index 0000000000..24d35a5edd --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementConfigDao.java @@ -0,0 +1,33 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.group.entity.ResiGroupAchievementConfigEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 小组成就配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Mapper +public interface ResiGroupAchievementConfigDao extends BaseDao { + +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementStatsDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementStatsDao.java new file mode 100644 index 0000000000..0de55fe72e --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupAchievementStatsDao.java @@ -0,0 +1,44 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.dao; + +import com.epmet.commons.mybatis.dao.BaseDao; +import com.epmet.modules.group.entity.ResiGroupAchievementStatsEntity; +import com.epmet.resi.group.dto.group.ResiGroupAchievementStatsDTO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 小组成就统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Mapper +public interface ResiGroupAchievementStatsDao 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/dao/ResiGroupDao.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java index 0de7adf07e..c34119bbc8 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/dao/ResiGroupDao.java @@ -26,6 +26,7 @@ import com.epmet.resi.group.dto.group.result.*; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.notice.result.UnReadListResultDTO; import com.epmet.resi.group.dto.topic.result.LatestTenResultDTO; +import com.epmet.resi.group.dto.member.result.GroupAchievementDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -212,7 +213,6 @@ public interface ResiGroupDao extends BaseDao { int countExistsGroupNameBeforeEdit(@Param("groupId") String groupId, @Param("gridId") String gridId, @Param("groupName") String groupName); - /** /** * @Description 查询话题所属小组名 @@ -296,4 +296,13 @@ public interface ResiGroupDao extends BaseDao { * @date 2021/4/21 下午5:08 */ List selectUnReadInfos(@Param("ids")List ids); + + /** + * 我所在小组最近完成的成就 + * @author zhaoqifeng + * @date 2021/4/22 9:47 + * @param userId + * @return java.util.List + */ + List selectRecentGroupAchievements(@Param("userId") String userId); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementConfigEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementConfigEntity.java new file mode 100644 index 0000000000..be6fc3a745 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementConfigEntity.java @@ -0,0 +1,66 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 小组成就配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("resi_group_achievement_config") +public class ResiGroupAchievementConfigEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * 里程名称 + */ + private String achievementName; + + /** + * 前一个里程值 + */ + private Integer preValue; + + /** + * 目标值 + */ + private Integer targetValue; + + /** + * 里程类型:小组人数:member;topic:话题数;转议题数:toIssue;话题解决数:resloveTopic + */ + private String achievementType; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementStatsEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementStatsEntity.java new file mode 100644 index 0000000000..8710dc43d9 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupAchievementStatsEntity.java @@ -0,0 +1,81 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.epmet.commons.mybatis.entity.BaseEpmetEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 小组成就统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("resi_group_achievement_stats") +public class ResiGroupAchievementStatsEntity extends BaseEpmetEntity { + + private static final long serialVersionUID = 1L; + + /** + * 客户Id + */ + private String customerId; + + /** + * 小组Id + */ + private String groupId; + + /** + * 里程ID + */ + private String achievementId; + + /** + * 里程名称 + */ + private String achievementName; + + /** + * 实现时间 + */ + private Date arriveTime; + + /** + * 当前值 + */ + private Integer currentValue; + + /** + * 目标值 + */ + private Integer targetValue; + + /** + * 目标是否实现,是:1;否:0 + */ + private Integer isArrive; + +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java index 147aed6717..b50f50a417 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/entity/ResiGroupEntity.java @@ -88,4 +88,9 @@ Ps: 如果一个小组被拒绝,当前小组的状态将永久停留在“审 * 小组类型(ordinary:楼院小组 branch:支部小组) */ private String groupType; + + /** + * 小组等级 + */ + private Integer level; } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementConfigService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementConfigService.java new file mode 100644 index 0000000000..cb45a821ef --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementConfigService.java @@ -0,0 +1,95 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.modules.group.entity.ResiGroupAchievementConfigEntity; +import com.epmet.resi.group.dto.group.ResiGroupAchievementConfigDTO; + +import java.util.List; +import java.util.Map; + +/** + * 小组成就配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +public interface ResiGroupAchievementConfigService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-04-19 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-04-19 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return ResiGroupMilestoneConfigDTO + * @author generator + * @date 2021-04-19 + */ + ResiGroupAchievementConfigDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-19 + */ + void save(ResiGroupAchievementConfigDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-19 + */ + void update(ResiGroupAchievementConfigDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-04-19 + */ + void delete(String[] ids); +} \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementStatsService.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementStatsService.java new file mode 100644 index 0000000000..3b71116fea --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/ResiGroupAchievementStatsService.java @@ -0,0 +1,113 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.epmet.modules.group.service; + +import com.epmet.commons.mybatis.service.BaseService; +import com.epmet.commons.tools.page.PageData; +import com.epmet.modules.group.entity.ResiGroupAchievementStatsEntity; +import com.epmet.resi.group.dto.group.ResiGroupAchievementStatsDTO; + +import java.util.List; +import java.util.Map; + +/** + * 小组成就统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +public interface ResiGroupAchievementStatsService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-04-19 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-04-19 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return ResiGroupMilestoneStatsDTO + * @author generator + * @date 2021-04-19 + */ + ResiGroupAchievementStatsDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-19 + */ + void save(ResiGroupAchievementStatsDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-04-19 + */ + void update(ResiGroupAchievementStatsDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-04-19 + */ + void delete(String[] ids); + + /** + * 已达成的成就 + * @author zhaoqifeng + * @date 2021/4/19 15:15 + * @param groupId + * @return java.util.List + */ + 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 c2073a7952..2c328795c5 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 @@ -20,6 +20,7 @@ package com.epmet.modules.group.service; import com.epmet.commons.mybatis.service.BaseService; import com.epmet.commons.tools.page.PageData; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.Result; import com.epmet.modules.group.entity.ResiGroupEntity; import com.epmet.resi.group.dto.UserRoleDTO; @@ -28,6 +29,8 @@ import com.epmet.resi.group.dto.group.ResiGroupDTO; 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.result.AchievementResultDTO; +import jdk.nashorn.internal.parser.Token; import java.util.HashMap; import java.util.List; @@ -378,4 +381,40 @@ public interface ResiGroupService extends BaseService { * @Description 所有小组查询 **/ List allGroupList(AllGroupListFormDTO formDTO); + + /** + * 小组成就详情 + * @author zhaoqifeng + * @date 2021/4/19 14:25 + * @param formDTO + * @return com.epmet.resi.group.dto.group.result.AchievementDetailResultDTO + */ + AchievementDetailResultDTO achievementDetail(GroupFormDTO formDTO); + + /** + * 获取网格下小组列表 + * @author zhaoqifeng + * @date 2021/4/21 15:42 + * @param gridId + * @return java.util.List + */ + List getGroupListByGrid(String gridId); + + /** + * 小组积分详情 + * @author zhaoqifeng + * @date 2021/4/21 16:22 + * @param groupId + * @return com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO + */ + GroupPointDetailResultDTO groupPointDetail(String groupId); + + /** + * 小组近段时间实现的成就列表 + * @author zhaoqifeng + * @date 2021/4/22 9:27 + * @param tokenDto + * @return com.epmet.resi.group.dto.member.result.AchievementResultDTO + */ + AchievementResultDTO achievement(TokenDto tokenDto); } diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupAchievementConfigServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupAchievementConfigServiceImpl.java new file mode 100644 index 0000000000..42ff9f7288 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupAchievementConfigServiceImpl.java @@ -0,0 +1,100 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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.page.PageData; +import com.epmet.commons.tools.utils.ConvertUtils; +import com.epmet.commons.tools.constant.FieldConstant; +import com.epmet.modules.group.dao.ResiGroupAchievementConfigDao; +import com.epmet.modules.group.entity.ResiGroupAchievementConfigEntity; +import com.epmet.modules.group.service.ResiGroupAchievementConfigService; +import com.epmet.resi.group.dto.group.ResiGroupAchievementConfigDTO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 小组成就配置表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Service +public class ResiGroupAchievementConfigServiceImpl extends BaseServiceImpl implements ResiGroupAchievementConfigService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ResiGroupAchievementConfigDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ResiGroupAchievementConfigDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public ResiGroupAchievementConfigDTO get(String id) { + ResiGroupAchievementConfigEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, ResiGroupAchievementConfigDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(ResiGroupAchievementConfigDTO dto) { + ResiGroupAchievementConfigEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupAchievementConfigEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ResiGroupAchievementConfigDTO dto) { + ResiGroupAchievementConfigEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupAchievementConfigEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + +} \ 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/ResiGroupAchievementStatsServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupAchievementStatsServiceImpl.java new file mode 100644 index 0000000000..be9f4c8431 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupAchievementStatsServiceImpl.java @@ -0,0 +1,133 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; +import com.epmet.modules.group.dao.ResiGroupAchievementStatsDao; +import com.epmet.modules.group.entity.ResiGroupAchievementStatsEntity; +import com.epmet.modules.group.service.ResiGroupAchievementStatsService; +import com.epmet.resi.group.dto.group.ResiGroupAchievementStatsDTO; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 小组成就统计表 + * + * @author generator generator@elink-cn.com + * @since v1.0.0 2021-04-19 + */ +@Service +public class ResiGroupAchievementStatsServiceImpl extends BaseServiceImpl implements ResiGroupAchievementStatsService { + + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ResiGroupAchievementStatsDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ResiGroupAchievementStatsDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public ResiGroupAchievementStatsDTO get(String id) { + ResiGroupAchievementStatsEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, ResiGroupAchievementStatsDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(ResiGroupAchievementStatsDTO dto) { + ResiGroupAchievementStatsEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupAchievementStatsEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ResiGroupAchievementStatsDTO dto) { + ResiGroupAchievementStatsEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupAchievementStatsEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + /** + * 已达成的成就 + * + * @param groupId + * @return java.util.List + * @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, ResiGroupAchievementStatsDTO.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 5a54c45f06..27bef31613 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 @@ -30,6 +30,7 @@ import com.epmet.commons.tools.scan.param.ImgTaskDTO; import com.epmet.commons.tools.scan.param.TextScanParamDTO; import com.epmet.commons.tools.scan.param.TextTaskDTO; import com.epmet.commons.tools.scan.result.SyncScanResult; +import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.security.user.LoginUserUtil; import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.DateUtils; @@ -40,6 +41,7 @@ import com.epmet.dto.form.*; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.dto.result.UserRoleResultDTO; import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.group.constant.GroupConstant; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.modules.constant.UserMessageConstant; import com.epmet.modules.feign.EpmetMessageFeignClient; @@ -52,15 +54,13 @@ 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; import com.epmet.modules.member.service.GroupMemeberOperationService; import com.epmet.modules.member.service.ResiGroupMemberService; +import com.epmet.modules.support.GroupLevelUtils; import com.epmet.modules.utils.ModuleConstant; import com.epmet.resi.group.constant.*; import com.epmet.resi.group.dto.UserRoleDTO; @@ -73,7 +73,10 @@ 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.EditAuditSwitchFormDTO; +import com.epmet.resi.group.dto.member.result.AchievementResultDTO; +import com.epmet.resi.group.dto.member.result.GroupAchievementDTO; 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; @@ -83,7 +86,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.*; @@ -164,6 +166,9 @@ public class ResiGroupServiceImpl extends BaseServiceImpl page(Map params) { IPage page = baseDao.selectPage( @@ -966,7 +971,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); } @@ -979,8 +986,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 @@ -1189,6 +1197,106 @@ 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 = resiGroupAchievementStatsService.getUnAchieved(formDTO.getGroupId()); + if (CollectionUtils.isNotEmpty(unAchievedList)) { + unAchievedList.forEach(item -> { + AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean(); + String describe = item.getAchievementName() + "(" + item.getCurrentValue().toString() + "/" + item.getTargetValue().toString() + ")"; + bean.setDescribe(describe); + achievementList.add(bean); + }); + } + //3.已完成的成就 + List achievedList = resiGroupAchievementStatsService.getAchieved(formDTO.getGroupId()); + if (CollectionUtils.isNotEmpty(achievedList)) { + achievedList.forEach(item -> { + AchievementDetailResultDTO.AchievementBean bean = new AchievementDetailResultDTO.AchievementBean(); + bean.setDescribe(item.getAchievementName()); + bean.setCompletionDate(DateUtils.dateToTimestamp(item.getArriveTime())); + achievementList.add(bean); + }); + } + resultDTO.setAchievement(achievementList); + return resultDTO; + } + + /** + * 获取网格下小组列表 + * + * @param gridId + * @return java.util.List + * @author zhaoqifeng + * @date 2021/4/21 15:42 + */ + @Override + public List getGroupListByGrid(String gridId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("GRID_ID", gridId) + .eq("STATE", GroupStateConstant.GROUP_APPROVED) + .eq("DEL_FLAG", NumConstant.ZERO_STR); + List list = baseDao.selectList(wrapper); + return ConvertUtils.sourceToTarget(list, ResiGroupDTO.class); + } + + /** + * 小组积分详情 + * + * @param groupId + * @return com.epmet.resi.group.dto.group.result.GroupPointDetailResultDTO + * @author zhaoqifeng + * @date 2021/4/21 16:22 + */ + @Override + public GroupPointDetailResultDTO groupPointDetail(String groupId) { + GroupPointDetailResultDTO result = new GroupPointDetailResultDTO(); + ResiGroupEntity group = baseDao.selectById(groupId); + Integer nextLevel = group.getLevel() + 1; + Integer nextLevelPoint = GroupLevelUtils.getPoint(nextLevel); + result.setLevel("LV" + group.getLevel().toString()); + result.setNextLevel("LV" + nextLevel.toString()); + result.setNextLevelPoint(nextLevelPoint.toString()); + return result; + } + + /** + * 小组近段时间实现的成就列表 + * + * @param tokenDto + * @return com.epmet.resi.group.dto.member.result.AchievementResultDTO + * @author zhaoqifeng + * @date 2021/4/22 9:27 + */ + @Override + public AchievementResultDTO achievement(TokenDto tokenDto) { + AchievementResultDTO result = new AchievementResultDTO(); + List achievements = new ArrayList<>(); + List list = baseDao.selectRecentGroupAchievements(tokenDto.getUserId()); + if (CollectionUtils.isNotEmpty(list)) { + achievements = list.stream().map(item -> { + return item.getGroupName() + ":" + "达成“" + item.getAchievementName() + "”" + "成就"; + }).collect(Collectors.toList()); + } + result.setAchievement(achievements); + return result; + } + @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/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 6813b2edbc..788652a73c 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 @@ -36,10 +36,13 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.SendMqMsgUtils; import com.epmet.dto.IssueShareLinkRecordDTO; import com.epmet.dto.IssueShareLinkVisitRecordDTO; +import com.epmet.dto.form.CommonGridIdFormDTO; import com.epmet.dto.form.GetRoleKeyListFormDTO; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.dto.result.UserBaseInfoResultDTO; import com.epmet.feign.EpmetUserOpenFeignClient; import com.epmet.feign.GovIssueOpenFeignClient; +import com.epmet.modules.feign.GovOrgFeignClient; import com.epmet.modules.group.dao.ResiGroupDao; import com.epmet.modules.group.entity.ResiGroupEntity; import com.epmet.modules.group.redis.ResiGroupRedis; @@ -115,6 +118,8 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl page(Map params) { @@ -292,11 +297,12 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl visitRecordResult = issueOpenFeignClient.visitRecord(param.getShareLinkId(), param.getUserId()); if(!visitRecordResult.success() || null == visitRecordResult.getData()){ log.error("【{}】该用户入组方式为议题分享链接入组,但未查询到链接访问记录,链接Id【{}】",param.getUserId(),param.getShareLinkId()); throw new RenException("未找到链接访问记录"); } - if(NumConstant.ZERO == visitRecordResult.getData().getIsInviteRegister()) isNew = true; + if(NumConstant.ZERO == visitRecordResult.getData().getIsInviteRegister()) { + isNew = true; + } } if(StringUtils.isNotBlank(inviter)){ + + CommonGridIdFormDTO dataFilterParam = new CommonGridIdFormDTO(); + dataFilterParam.setGridId(resiGroupDTO.getGridId()); + dataFilterParam.setUserId(param.getUserId()); + Result dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + //mq的事件类型 MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); //事件code @@ -340,11 +359,15 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); pointEventMsg.setCustomerId(resiGroupDTO.getCustomerId()); + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); + pointEventMsg.setGridId(resiGroupDTO.getGridId()); + pointEventMsg.setSourceId(groupId); pointEventMsg.setUserId(inviter); pointEventMsg.setActionFlag(MqConstant.PLUS); pointEventMsg.setIsCommon(false); pointEventMsg.setTargetDate(current); pointEventMsg.setEventTag(mqBaseMsgDTO.getEventTag()); + pointEventMsg.setEventClass(mqBaseMsgDTO.getEventClass()); //pointEventMsg.setRemark("通过".concat(StringUtils.equals(param.getShareLinkType(),"topic") // ? "话题":"议题").concat("分享链接邀请").concat(isNew ? "新" : "").concat("用户进组")); @@ -391,15 +414,21 @@ public class GroupMemeberOperationServiceImpl extends BaseServiceImpl page(Map params) { @@ -577,7 +582,9 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl response = issueClient.visitRecord(groupMemeberOperationDTO.getGroupInvitationId(), groupMemeberOperationDTO.getCustomerUserId()); @@ -586,7 +593,9 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + //mq的事件类型 MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); mqBaseMsgDTO.setEventClass("resi_group"); @@ -602,6 +620,9 @@ public class ResiGroupMemberServiceImpl extends BaseServiceImpl pointEventMsgList = new ArrayList<>(); BasePointEventMsg pointEventMsg = new BasePointEventMsg(); pointEventMsg.setCustomerId(groupCache.getCustomerId()); + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); + pointEventMsg.setGridId(groupCache.getGridId()); + pointEventMsg.setSourceId(groupCache.getGroupId()); pointEventMsg.setUserId(inviter); pointEventMsg.setActionFlag(MqConstant.PLUS); pointEventMsg.setIsCommon(false); diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupAchievementUtils.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupAchievementUtils.java new file mode 100644 index 0000000000..0f135804a8 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupAchievementUtils.java @@ -0,0 +1,53 @@ +package com.epmet.modules.support; + +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.RenException; + +/** + * desc:小组成就下一等级规则工具类 + * + * @author: LiuJanJun + * @date: 2021/4/19 4:11 下午 + * @version: 1.0 + * @remark 利用此工具类生成下一等级的目标值 + */ +public class GroupAchievementUtils { + //小组人数、话题数、转议题数、小组内问题解决数 + + /** + * desc:获取下一等级的话题数目标值 步长500 起始值 500 + * + * @param currentValue + */ + public static Integer getNextTopicTargetValue(Integer currentValue) { + if (currentValue < NumConstant.FIVE_HUNDRED) { + throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); + } + return currentValue + NumConstant.FIVE_HUNDRED; + } + + /** + * desc:获取下一等级的转议题数目标值 步长50 起始值 100 + * + * @param currentValue + */ + public static Integer getNextToIssueTargetValue(Integer currentValue) { + if (currentValue < NumConstant.ONE_HUNDRED) { + throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); + } + return currentValue + NumConstant.FIFTY; + } + + /** + * desc:获取下一等级的话题解决数目标值 步长100 起始值 100 + * + * @param currentValue + */ + public static Integer getNextResolveTopicTargetValue(Integer currentValue) { + if (currentValue < NumConstant.ONE_HUNDRED) { + throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); + } + return currentValue + NumConstant.ONE_HUNDRED; + } +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupLevelUtils.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupLevelUtils.java new file mode 100644 index 0000000000..b6c6b12b8a --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/support/GroupLevelUtils.java @@ -0,0 +1,76 @@ +package com.epmet.modules.support; + +import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.exception.EpmetErrorCode; +import com.epmet.commons.tools.exception.RenException; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 小组等级积分工具类 + * + * @author zhaoqifeng + * @date 2021/4/21 10:22 + */ +@Slf4j +public class GroupLevelUtils { + + /** + * 根据等级算出升级所需的积分 + * + * @param level + * @return java.lang.Integer + * @author zhaoqifeng + * @date 2021/4/21 10:25 + * @remark 通项公式:an=n(n-1)/2+2n-2(n∈N+) -3+n(n-1)/2(需要特殊处理,所以引用前面的) + */ + public static Integer getPoint(Integer level) { + if (level == null || level < NumConstant.ONE) { + throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); + } + Integer point = (level * (level - NumConstant.ONE) / NumConstant.TWO + NumConstant.TWO * level - NumConstant.TWO) * NumConstant.ONE_HUNDRED; + log.info("getPoint level:{},point:{}", level, point); + return point; + } + + /** + * 根据积分算出当前的等级 + * + * @param point + * @return java.lang.Integer + * @author zhaoqifeng + * @date 2021/4/21 10:25 + */ + public static Integer getLevel(Integer point) { + if (point == null || point < NumConstant.ZERO) { + throw new RenException(EpmetErrorCode.INTERNAL_VALIDATE_ERROR.getCode()); + } + //如果是0 则返回等级1 + if (point == NumConstant.ZERO) { + return NumConstant.ONE; + } + AtomicBoolean flag = new AtomicBoolean(false); + AtomicInteger initLevel = new AtomicInteger(1); + do { + Integer point1 = getPoint(initLevel.incrementAndGet()); + if (point < point1) { + int i = initLevel.decrementAndGet(); + log.info("getLevel level:{},point:{}", i, point); + return i; + } + + } while (!flag.get()); + return null; + } + + public static void main(String[] args) { + for (int i = 1; i < 10; i++) { + System.out.println("lv" + i + ":" + getPoint(i)); + } + System.out.println(getLevel(3300)); + System.out.println(getLevel(299)); + + } +} diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java index c930e96965..68bfea53f2 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java +++ b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/topic/service/impl/ResiTopicCommentServiceImpl.java @@ -39,12 +39,15 @@ import com.epmet.commons.tools.utils.ConvertUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.ScanContentUtils; import com.epmet.commons.tools.utils.SendMqMsgUtils; +import com.epmet.dto.form.CommonGridIdFormDTO; import com.epmet.dto.form.UserResiInfoListFormDTO; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.dto.result.UserResiInfoResultDTO; import com.epmet.modules.comment.entity.ResiTopicCommentEntity; import com.epmet.modules.constant.ResiGroupRedisKeys; import com.epmet.modules.constant.WxmpSubscribeConstant; import com.epmet.modules.feign.EpmetUserFeignClient; +import com.epmet.modules.feign.GovOrgFeignClient; import com.epmet.modules.group.redis.ResiGroupRedis; import com.epmet.modules.member.dao.ResiGroupMemberDao; import com.epmet.modules.member.redis.ResiGroupMemberRedis; @@ -58,6 +61,7 @@ import com.epmet.resi.group.constant.MemberStateConstant; import com.epmet.resi.group.constant.TopicConstant; import com.epmet.resi.group.dto.comment.form.ResiQueryCommentFormDTO; import com.epmet.resi.group.dto.comment.result.ResiCommentResultDTO; +import com.epmet.resi.group.dto.group.ResiGroupInfoRedisDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; import com.epmet.resi.group.dto.member.result.ResiGroupMemberInfoRedisResultDTO; @@ -112,6 +116,8 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + pointEventMsg.setCustomerId(customerId); + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); + pointEventMsg.setGridId(groupCache.getGridId()); + pointEventMsg.setSourceId(topic.getGroupId()); pointEventMsg.setUserId(tokenDto.getUserId()); // 加分 pointEventMsg.setActionFlag(MqConstant.PLUS); pointEventMsg.setIsCommon(false); pointEventMsg.setEventTag(mqBaseMsgDTO.getEventTag()); + pointEventMsg.setEventClass(mqBaseMsgDTO.getEventClass()); //某某小组中评论话题“某某某…” StringBuilder builder = new StringBuilder(groupRedis.get(topic.getGroupId()).getGroupName()).append("小组中评论"); String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent()); @@ -270,7 +290,9 @@ public class ResiTopicCommentServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); pointEventMsg.setUserId(tokenDto.getUserId()); // 加分 pointEventMsg.setActionFlag(MqConstant.PLUS); pointEventMsg.setIsCommon(false); pointEventMsg.setEventTag(mqBaseMsgDTO.getEventTag()); + pointEventMsg.setEventClass(mqBaseMsgDTO.getEventClass()); pointEventMsgList.add(pointEventMsg); mqBaseMsgDTO.setMsg(JSON.toJSONString(pointEventMsgList)); @@ -707,6 +724,54 @@ public class ResiTopicServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + + + //mq的事件类型 + MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); + mqBaseMsgDTO.setEventClass("resi_group"); + //事件code 组长解决组内话题 + mqBaseMsgDTO.setEventTag(EventEnum.LEADER_RESOLVE_TOPIC.getEventTag()); + List pointEventMsgList = new ArrayList<>(); + + BasePointEventMsg pointEventMsg = new BasePointEventMsg(); + pointEventMsg.setCustomerId(tokenDto.getCustomerId()); + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); + pointEventMsg.setGridId(groupCache.getGridId()); + pointEventMsg.setSourceId(groupCache.getGroupId()); + pointEventMsg.setUserId(tokenDto.getUserId()); + pointEventMsg.setActionFlag(MqConstant.PLUS); + pointEventMsg.setIsCommon(false); + pointEventMsg.setEventTag(EventEnum.LEADER_RESOLVE_TOPIC.getEventTag()); + pointEventMsg.setEventClass(EventEnum.LEADER_RESOLVE_TOPIC.getEventClass()); + //将话题“某某某…” (前十个字后面省略号) 转为议题 + String content = CharMatcher.WHITESPACE.trimFrom(topic.getTopicContent()); + pointEventMsg.setRemark( + (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(); } @@ -823,8 +888,12 @@ public class ResiTopicServiceImpl extends BaseServiceImpl>> badgeR = userOpenFeignClient.userShowBadge(new UserGroupFormDTO(customerId, userId)); @@ -835,7 +904,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl().ok(resultDTO); } @@ -1617,7 +1688,9 @@ public class ResiTopicServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } //发送积分 //mq的事件类型 @@ -1778,10 +1872,14 @@ 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)); - } - } - } - /** * @param tokenDto * @param sourceId @@ -2180,6 +2225,73 @@ public class ResiTopicServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + + //某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为项目 + if(EventEnum.TOPIC_SHIFTED_TO_PROJECT == param.getEvent()){ + + MqBaseMsgDTO mqBaseMsgDTO = new MqBaseMsgDTO(); + mqBaseMsgDTO.setEventClass("resi_group"); + + mqBaseMsgDTO.setEventTag(EventEnum.TOPIC_SHIFTED_TO_PROJECT.getEventTag()); + List pointEventMsgList = new ArrayList<>(); + //话题被转为项目 话题作者 + + BasePointEventMsg pointEventMsg = new BasePointEventMsg(); + pointEventMsg.setCustomerId(group.getCustomerId()); + pointEventMsg.setAgencyId(dataFilterResult.getData().getAgencyId()); + pointEventMsg.setGridId(group.getGridId()); + pointEventMsg.setSourceId(topic.getGroupId()); + pointEventMsg.setUserId(topic.getCreatedBy()); + pointEventMsg.setActionFlag(MqConstant.PLUS); + pointEventMsg.setIsCommon(false); + pointEventMsg.setEventTag(EventEnum.TOPIC_SHIFTED_TO_PROJECT.getEventTag()); + pointEventMsg.setEventClass(EventEnum.TOPIC_SHIFTED_TO_PROJECT.getEventClass()); + //某某小组中发布的话题“某某某…” (前十个字后面省略号) 被转为议题 + 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)); + } + } + } @Override public ResiTopicDTO queryTopicInfoByIssueId(String issueId) { 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 43819c1c4f..a0d7d26ca7 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 @@ -37,9 +37,12 @@ import com.epmet.commons.tools.scan.result.SyncScanResult; import com.epmet.commons.tools.scan.result.VoiceResultDTO; import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; +import com.epmet.dto.form.CommonGridIdFormDTO; import com.epmet.dto.result.AllGridsByUserIdResultDTO; +import com.epmet.dto.result.CommonDataFilterResultDTO; import com.epmet.feign.GovOrgOpenFeignClient; import com.epmet.modules.feign.EpmetUserFeignClient; +import com.epmet.modules.feign.GovOrgFeignClient; import com.epmet.modules.group.dao.ResiGroupDao; import com.epmet.modules.group.dao.ResiGroupStatisticalDao; import com.epmet.modules.group.entity.ResiGroupEntity; @@ -144,6 +147,8 @@ public class TopicDraftServiceImpl extends BaseServiceImpl dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + + sendMqMsg(draft.getCreatedBy(), draft.getCustomerId(), draft.getCreatedTime(),resiGroupRedis.get(draft.getGroupId()).getGroupName(), + breviary.toString(), dataFilterResult.getData().getAgencyId(), draft.getGridId(), draft.getGroupId()); } //记录操作记录 entity = baseDao.selectById(formDTO.getTopicDraftId()); @@ -903,8 +917,18 @@ 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()); + }else { + breviary.append("语音话题"); + } + CommonGridIdFormDTO dataFilterParam = new CommonGridIdFormDTO(); + dataFilterParam.setGridId(formDTO.getGridId()); + dataFilterParam.setUserId(tokenDto.getUserId()); + Result dataFilterResult = govOrgFeignClient.gridDataFilter(dataFilterParam); + if (!dataFilterResult.success() || null == dataFilterResult.getData()) { + throw new RenException(dataFilterResult.getMsg()); + } + sendMqMsg(tokenDto.getUserId(), formDTO.getCustomerId(), draft.getCreatedTime(), resiGroupRedis.get(draft.getGroupId()).getGroupName(), + breviary.toString(), dataFilterResult.getData().getAgencyId(), formDTO.getGridId(), formDTO.getGroupId()); } @@ -919,7 +943,8 @@ public class TopicDraftServiceImpl extends BaseServiceImpl actPointEventMsgList=new ArrayList<>(); BasePointEventMsg actPointEventMsg=new BasePointEventMsg(); actPointEventMsg.setCustomerId(customerId); + actPointEventMsg.setAgencyId(agencyId); + actPointEventMsg.setGridId(gridId); + actPointEventMsg.setSourceId(groupId); actPointEventMsg.setUserId(userId); actPointEventMsg.setActionFlag(MqConstant.PLUS); actPointEventMsg.setIsCommon(false); actPointEventMsg.setRemark(new StringBuilder(groupName).append("小组中发布").append(topicBreviary).toString()); actPointEventMsg.setTargetDate(targetDate); actPointEventMsg.setEventTag(EventEnum.PUBLISH_ONE_TOPIC.getEventTag()); + actPointEventMsg.setEventClass(EventEnum.PUBLISH_ONE_TOPIC.getEventClass()); actPointEventMsgList.add(actPointEventMsg); mqBaseMsgDTO.setMsg(JSON.toJSONString(actPointEventMsgList)); diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementConfigDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementConfigDao.xml new file mode 100644 index 0000000000..5531c7228e --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementConfigDao.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementStatsDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementStatsDao.xml new file mode 100644 index 0000000000..7705832ba7 --- /dev/null +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupAchievementStatsDao.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml index ea0dd3fac9..af5c2b70bd 100644 --- a/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml +++ b/epmet-module/resi-group/resi-group-server/src/main/resources/mapper/group/ResiGroupDao.xml @@ -767,4 +767,19 @@ )temp +