Browse Source

移动端议题最新最热接口 init

dev
liuchuang 6 years ago
parent
commit
026b40c005
  1. 5
      esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml
  2. 40
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java
  3. 24
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/IssueFeignClient.java
  4. 24
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/IssueFeignClientFallback.java
  5. 25
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java
  6. 30
      esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java
  7. 51
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueFormDTO.java
  8. 31
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/result/IssueHotCommentResultDTO.java
  9. 81
      esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/result/IssueResultDTO.java
  10. 41
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/controller/EpdcAppIssueController.java
  11. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java
  12. 11
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java
  13. 16
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java
  14. 100
      esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml

5
esua-epdc/epdc-module/epdc-api/epdc-api-client/pom.xml

@ -43,6 +43,11 @@
<artifactId>epdc-events-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-events-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-services-client</artifactId>

40
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiIssueController.java

@ -0,0 +1,40 @@
package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.annotation.LoginUser;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 移动端接口-议题模块
* @Author LC
* @Date 2019/9/6 20:04
*/
@RestController
@RequestMapping("events/issue")
public class ApiIssueController {
@Autowired
private IssueService issueService;
/**
* 议题最新最热列表
* @Params: [userDetail, formDto]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.issue.result.IssueResultDTO>>
* @Author: liuchuang
* @Date: 2019/9/7 12:08
*/
@GetMapping("list")
public Result<List<IssueResultDTO>> listIssues(@LoginUser TokenDto userDetail, IssueFormDTO formDto) {
return issueService.listIssues(userDetail, formDto);
}
}

24
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/IssueFeignClient.java

@ -0,0 +1,24 @@
package com.elink.esua.epdc.feign;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.feign.fallback.IssueFeignClientFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* 议题模块调用
* @Author LC
* @Date 2019/9/7 11:34
*/
@FeignClient(name = ServiceConstant.EPDC_EVENTS_SERVER, fallback = IssueFeignClientFallback.class, url = "http://localhost:9066")
public interface IssueFeignClient {
@GetMapping(value = "events/epdc-app/issue/list", consumes = MediaType.APPLICATION_JSON_VALUE)
Result<List<IssueResultDTO>> listIssues(IssueFormDTO formDto);
}

24
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/IssueFeignClientFallback.java

@ -0,0 +1,24 @@
package com.elink.esua.epdc.feign.fallback;
import com.elink.esua.epdc.commons.tools.constant.ServiceConstant;
import com.elink.esua.epdc.commons.tools.utils.ModuleUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.feign.IssueFeignClient;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @Author LC
* @Date 2019/9/7 11:34
*/
@Component
public class IssueFeignClientFallback implements IssueFeignClient {
@Override
public Result<List<IssueResultDTO>> listIssues(IssueFormDTO formDto) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_EVENTS_SERVER, "listIssues", formDto);
}
}

25
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/IssueService.java

@ -0,0 +1,25 @@
package com.elink.esua.epdc.service;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import java.util.List;
/**
* 议题模块
* @Author LC
* @Date 2019/9/6 20:15
*/
public interface IssueService {
/**
* 移动端-最新最热列表
* @Params: [userDetail, formDto]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.issue.result.IssueResultDTO>>
* @Author: liuchuang
* @Date: 2019/9/7 11:26
*/
Result<List<IssueResultDTO>> listIssues(TokenDto userDetail, IssueFormDTO formDto);
}

30
esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/IssueServiceImpl.java

@ -0,0 +1,30 @@
package com.elink.esua.epdc.service.impl;
import com.elink.esua.epdc.common.token.dto.TokenDto;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.feign.IssueFeignClient;
import com.elink.esua.epdc.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 议题模块
* @Author LC
* @Date 2019/9/6 20:15
*/
@Service
public class IssueServiceImpl implements IssueService {
@Autowired
private IssueFeignClient issueFeignClient;
@Override
public Result<List<IssueResultDTO>> listIssues(TokenDto userDetail, IssueFormDTO formDto) {
formDto.setDeptId(userDetail.getGridId());
return issueFeignClient.listIssues(formDto);
}
}

51
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/form/IssueFormDTO.java

@ -0,0 +1,51 @@
package com.elink.esua.epdc.dto.issue.form;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
/**
* 移动端-议题最新最热列表-查询条件
* @Author LC
* @Date 2019/9/7 10:45
*/
@Data
public class IssueFormDTO implements Serializable {
private static final long serialVersionUID = -8864248267071206774L;
/**
* 用户所属网格ID
*/
@NotBlank(message = "用户网格ID不能为空")
private String deptId;
/**
* 0: 获取最新列表1: 获取最热列表
*/
private String orderType;
/**
* 搜索内容
*/
private String searchContent;
/**
* 页码从1开始
*/
@Min(value = 1, message = "页码必须大于0")
private int pageIndex;
/**
* 页容量默认20页
*/
@Min(value = 1, message = "每页条数必须大于必须大于0")
private int pageSize = 20;
/**
* 第一页查询发起时的时间
*/
@NotBlank(message = "时间戳不能为空")
private String timestamp;
/**
* 只查询半年内的数据
*/
private Date someMonthsAgo;
}

31
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/result/IssueHotCommentResultDTO.java

@ -0,0 +1,31 @@
package com.elink.esua.epdc.dto.issue.result;
import lombok.Data;
import java.io.Serializable;
/**
* 移动端-议题列表最热评论
* @Author LC
* @Date 2019/9/7 11:07
*/
@Data
public class IssueHotCommentResultDTO implements Serializable {
private static final long serialVersionUID = 4956688227865722755L;
/**
* 评论id
*/
private String commentId;
/**
* 评论内容
*/
private String content;
/**
* 评论支持数
*/
private Integer supportNum;
/**
* 评论反对数
*/
private Integer oppositionNum;
}

81
esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/issue/result/IssueResultDTO.java

@ -0,0 +1,81 @@
package com.elink.esua.epdc.dto.issue.result;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 移动端-议题最新最热列表
* @Author LC
* @Date 2019/9/7 10:53
*/
@Data
public class IssueResultDTO implements Serializable {
private static final long serialVersionUID = 6087794316919494277L;
/**
* 议题ID
*/
private String id;
/**
* 事件ID
*/
private String eventId;
/**
* 议题内容
*/
private String issueContent;
/**
* 昵称
*/
private String nickname;
/**
* 头像地址
*/
private String avatar;
/**
* 是否党员 0否1是
*/
private String partyFlag;
/**
* 赞数
*/
private Integer approveNum;
/**
* 踩数
*/
private Integer opposeNum;
/**
* 评数
*/
private Integer commentNum;
/**
* 议题状态
*/
private String stateName;
/**
* 议题类别
*/
private String categoryName;
/**
* 发布时间
*/
private Date distributeTime;
/**
* 表态数
*/
private Integer statementNum;
/**
* 图片列表
*/
private List<String> images;
/**
* 议题位置地址
*/
private String address;
/**
* 最热的一条评论
*/
private IssueHotCommentResultDTO comment;
}

41
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/controller/EpdcAppIssueController.java

@ -0,0 +1,41 @@
package com.elink.esua.epdc.modules.issue.controller;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.modules.issue.service.IssueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
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 LC
* @Date 2019/9/7 12:09
*/
@RestController
@RequestMapping(Constant.EPDC_APP + "issue")
public class EpdcAppIssueController {
@Autowired
private IssueService issueService;
/**
* 最新最热列表
* @Params: [formDto]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.issue.result.IssueResultDTO>>
* @Author: liuchuang
* @Date: 2019/9/7 12:13
*/
@GetMapping("list")
public Result<List<IssueResultDTO>> listIssues(@RequestBody IssueFormDTO formDto) {
ValidatorUtils.validateEntity(formDto);
return this.issueService.listIssues(formDto);
}
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java

@ -22,6 +22,8 @@ import com.elink.esua.epdc.dto.issue.IssueContentDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueJobFeedbackDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleOrClosedDTO;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -83,4 +85,13 @@ public interface IssueDao extends BaseDao<IssueEntity> {
*/
void updateCommentDelFlag(@Param("commentId") String commentId);
/**
* 议题最新最热列表
* @Params: [formDto]
* @Return: java.util.List<com.elink.esua.epdc.dto.issue.result.IssueResultDTO>
* @Author: liuchuang
* @Date: 2019/9/7 13:40
*/
List<IssueResultDTO> selectListOfNewOrHotIssues(IssueFormDTO formDto);
}

11
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java

@ -25,7 +25,9 @@ import com.elink.esua.epdc.dto.issue.IssueContentDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleDetailDTO;
import com.elink.esua.epdc.dto.issue.IssueWaitHandleOrClosedDTO;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueWaitHandleSubmitFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
import java.util.List;
@ -143,4 +145,13 @@ public interface IssueService extends BaseService<IssueEntity> {
* @Date: 2019/9/7 10:22
*/
Result modifyCommentById(String commentId);
/**
* 移动端最新最热列表
* @Params: [formDto]
* @Return: com.elink.esua.epdc.commons.tools.utils.Result<java.util.List<com.elink.esua.epdc.dto.issue.result.IssueResultDTO>>
* @Author: liuchuang
* @Date: 2019/9/7 12:14
*/
Result<List<IssueResultDTO>> listIssues(IssueFormDTO formDto);
}

16
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java

@ -20,16 +20,19 @@ package com.elink.esua.epdc.modules.issue.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.Constant;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.EventIssueItemState;
import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO;
import com.elink.esua.epdc.dto.issue.*;
import com.elink.esua.epdc.dto.issue.form.IssueFormDTO;
import com.elink.esua.epdc.dto.issue.form.IssueWaitHandleSubmitFormDTO;
import com.elink.esua.epdc.dto.issue.result.IssueResultDTO;
import com.elink.esua.epdc.modules.events.service.EpdcEventsService;
import com.elink.esua.epdc.modules.issue.dao.IssueDao;
import com.elink.esua.epdc.modules.issue.entity.IssueEntity;
@ -46,6 +49,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -193,6 +197,16 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
return new Result();
}
@Override
public Result<List<IssueResultDTO>> listIssues(IssueFormDTO formDto) {
int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize();
formDto.setPageIndex(pageIndex);
// 查询半年内的数据
formDto.setSomeMonthsAgo(DateUtils.addDateMonths(new Date(), -6));
List<IssueResultDTO> data = baseDao.selectListOfNewOrHotIssues(formDto);
return new Result().ok(data);
}
/**
* 初始化项目
* @Params: [issueEntity]

100
esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml

@ -121,4 +121,104 @@
<update id="updateCommentDelFlag">
UPDATE epdc_event_comment SET DEL_FLAG = '1' WHERE ID = #{commentId}
</update>
<resultMap id="newOrHotIssues" type="com.elink.esua.epdc.dto.issue.result.IssueResultDTO">
<result property="id" column="ID"/>
<result property="eventId" column="EVENT_ID"/>
<result property="issueContent" column="ISSUE_CONTENT"/>
<result property="nickname" column="NICK_NAME"/>
<result property="avatar" column="USER_FACE"/>
<result property="partyFlag" column="IS_PARTY_MEMBER"/>
<result property="approveNum" column="APPROVE_NUM"/>
<result property="opposeNum" column="OPPOSE_NUM"/>
<result property="commentNum" column="COMMENT_NUM"/>
<result property="stateName" column="stateName"/>
<result property="categoryName" column="CATEGORY_NAME"/>
<result property="distributeTime" column="DISTRIBUTE_TIME"/>
<result property="statementNum" column="statementNum"/>
<result property="address" column="ISSUE_ADDRESS"/>
<result property="comment.commentId" column="ID"/>
<result property="comment.content" column="CONTENT"/>
<result property="comment.oppositionNum" column="oppositionNum"/>
<result property="comment.supportNum" column="supportNum"/>
<collection property="images" ofType="java.lang.String">
<result property="image" column="IMG_URL"/>
</collection>
</resultMap>
<select id="selectListOfNewOrHotIssues" resultMap="newOrHotIssues">
SELECT
issue.ID,
issue.EVENT_ID,
issue.ISSUE_CONTENT,
issue.NICK_NAME,
issue.USER_FACE,
issue.IS_PARTY_MEMBER,
eve.APPROVE_NUM,
eve.OPPOSE_NUM,
eve.COMMENT_NUM,
CASE
issue.ISSUE_STATE
WHEN 0 THEN
'讨论中'
WHEN 2 THEN
'已关闭' ELSE ''
END AS stateName,
cate.CATEGORY_NAME,
issue.DISTRIBUTE_TIME,
( eve.APPROVE_NUM + eve.OPPOSE_NUM + eve.COMMENT_NUM + eve.BROWSE_NUM ) AS statementNum,
img.IMG_URL,
issue.ISSUE_ADDRESS,
hotCom.ID,
hotCom.CONTENT,
hotCom.oppositionNum,
hotCom.supportNum
FROM
epdc_issue issue
LEFT JOIN epdc_img img ON issue.id = img.REFERENCE_ID
AND img.DEL_FLAG = '0'
LEFT JOIN epdc_events eve ON issue.EVENT_ID = eve.id
AND eve.DEL_FLAG = '0'
LEFT JOIN epdc_event_category cate ON issue.ISSUE_CATEGORY_ID = cate.id
AND cate.DEL_FLAG = '0'
LEFT JOIN (
SELECT
com.ID,
com.EVENT_ID,
com.CONTENT,
CASE
att.ATTITUDE_FLAG
WHEN '0' THEN
SUM( 1 )
END AS oppositionNum,
CASE
att.ATTITUDE_FLAG
WHEN '1' THEN
SUM( 1 )
END AS supportNum,
COUNT( att.ID ) AS attCount
FROM
epdc_event_comment com
LEFT JOIN epdc_event_comment_user_attitude att ON com.ID = att.EVENT_COMMENT_ID
AND att.DEL_FLAG = '0'
WHERE
com.DEL_FLAG = '0'
ORDER BY
attCount DESC
LIMIT 1
) hotCom ON issue.EVENT_ID = hotCom.EVENT_ID
WHERE
issue.DEL_FLAG = '0'
AND (issue.ISSUE_STATE = 0 OR issue.ISSUE_STATE = 2)
AND issue.GRID_ID = #{deptId}
<![CDATA[ AND DATE_FORMAT(issue.DISTRIBUTE_TIME,'%Y-%m-%d %H:%i:%s') >= ]]> #{someMonthsAgo}
<![CDATA[ AND DATE_FORMAT(issue.DISTRIBUTE_TIME,'%Y-%m-%d %H:%i:%s') <= ]]> #{timestamp}
<if test='searchContent != null and searchContent != ""'>
AND issue.ISSUE_CONTENT LIKE CONCAT('%',#{searchContent},'%')
</if>
ORDER BY
<if test='orderType == "1"'>statementNum DESC,</if>
issue.DISTRIBUTE_TIME DESC,
img.CREATED_TIME
LIMIT #{pageIndex},#{pageSize}
</select>
</mapper>

Loading…
Cancel
Save