Commit 176bc860 by 胡明森

topicApi1.0

parent c5372948
package cn.meteor.beyondclouds.modules.topic.api;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject;
import cn.meteor.beyondclouds.modules.topic.bean.TopicResult;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.form.CreateTopicForm;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
/**
* @author 胡明森
* @since 2020/1/28
*/
@Api(tags = "话题Api")
@RestController
@RequestMapping("/api")
public class TopicApi {
private ITopicService iTopicService;
@Autowired
public void setiTopicService(ITopicService iTopicService) {
this.iTopicService = iTopicService;
}
@ApiOperation("创建话题")
@PostMapping("/topic")
public Response createTopic(@RequestBody @Valid CreateTopicForm createTopicForm, @CurrentSubject Subject subject){
iTopicService.createTopic(String.valueOf(subject.getId()), createTopicForm.getTopicName(), createTopicForm.getTopicIcon(), createTopicForm.getCover(), createTopicForm.getTopicDescrption(), createTopicForm.getReferenceCount());
return Response.success();
}
@ApiOperation("话题列表")
@GetMapping("/topics")
public Response topics(@Valid HttpServletRequest request) {
int pageNo= Integer.parseInt(request.getParameter("page"));
int pageSize= Integer.parseInt(request.getParameter("size"));
IPage<Topic> page = new Page<>(pageNo, pageSize);
return Response.success(iTopicService.page(page));
}
@ApiOperation("检索话题")
@GetMapping("/topics/{keywords}")
public Response searchTopics(@PathVariable("keywords") @Valid String keywords) {
TopicResult topicResult=iTopicService.searchTopics(keywords);
return Response.success(topicResult);
}
}
package cn.meteor.beyondclouds.modules.topic.bean;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author 胡明森
* @since 2020/1/31
*/
@Data
@ApiModel("话题返回结果")
public class TopicResult {
@ApiModelProperty(value = "话题创建者ID")
private String userId;
@ApiModelProperty(value = "话题名称")
private String topicName;
@ApiModelProperty(value = "话题图标")
private String topicIcon;
@ApiModelProperty(value = "封面图")
private String cover;
@ApiModelProperty(value = "话题描述")
private String topicDescrption;
@ApiModelProperty(value = "被引用次数")
private Integer referenceCount;
}
package cn.meteor.beyondclouds.modules.topic.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* @author 胡明森
* @since 2020/1/28
*/
@ApiModel("创建话题表单")
@Data
public class CreateTopicForm {
@ApiModelProperty("话题名称")
@NotEmpty(message = "话题名称不能为空")
private String topicName;
@ApiModelProperty("话题图标")
private String topicIcon;
@ApiModelProperty("封面图")
private String cover;
@ApiModelProperty("话题描述")
private String topicDescrption;
@ApiModelProperty("话题被引用的次数")
private int referenceCount;
}
package cn.meteor.beyondclouds.modules.topic.form;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
/**
* @author 胡明森
* @since 2020/1/31
*/
@ApiModel("分页参数表单")
@Data
public class PageForm {
@ApiModelProperty("页数")
@NotEmpty(message = "页数不能为空")
private int pageNo;
@ApiModelProperty("页容量")
@NotEmpty(message = "页容量不能为空")
private int pageSize;
}
package cn.meteor.beyondclouds.modules.topic.mapper;
import cn.meteor.beyondclouds.modules.topic.bean.TopicResult;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Component;
/**
* <p>
......@@ -11,6 +13,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author 段启岩
* @since 2020-01-30
*/
@Component
public interface TopicMapper extends BaseMapper<Topic> {
/**
* 检索话题
* @param keywords
* @return
*/
TopicResult searchTopics(String keywords);
}
......@@ -2,4 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.topic.mapper.TopicMapper">
<select id="searchTopics" resultType="cn.meteor.beyondclouds.modules.topic.bean.TopicResult">
select * from topic where topic_name like CONCAT('%',#{keywords},'%')
</select>
</mapper>
package cn.meteor.beyondclouds.modules.topic.service;
import cn.meteor.beyondclouds.modules.topic.bean.TopicResult;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -13,4 +14,20 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ITopicService extends IService<Topic> {
/**
* 创建话题
* @param id
* @param topicName
* @param topicIcon
* @param cover
* @param topicDescrption
* @param referenceCount
*/
void createTopic(String id, String topicName, String topicIcon, String cover, String topicDescrption, int referenceCount);
/**
* 检索话题
* @param keywords
*/
TopicResult searchTopics(String keywords);
}
package cn.meteor.beyondclouds.modules.topic.service.impl;
import cn.meteor.beyondclouds.modules.topic.bean.TopicResult;
import cn.meteor.beyondclouds.modules.topic.entity.Topic;
import cn.meteor.beyondclouds.modules.topic.mapper.TopicMapper;
import cn.meteor.beyondclouds.modules.topic.service.ITopicService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
......@@ -17,4 +19,37 @@ import org.springframework.stereotype.Service;
@Service
public class TopicServiceImpl extends ServiceImpl<TopicMapper, Topic> implements ITopicService {
private TopicMapper topicMapper;
private ITopicService iTopicService;
@Autowired
public void setTopicMapper(TopicMapper topicMapper) {
this.topicMapper = topicMapper;
}
@Autowired
public void setiTopicService(ITopicService iTopicService) {
this.iTopicService = iTopicService;
}
@Override
public void createTopic(String id, String topicName, String topicIcon, String cover, String topicDescrption, int referenceCount) {
//1. 创建话题
Topic topic=new Topic();
topic.setUserId(id);
topic.setTopicName(topicName);
topic.setTopicIcon(topicIcon);
topic.setCover(cover);
topic.setTopicDescrption(topicDescrption);
iTopicService.save(topic);
}
@Override
public TopicResult searchTopics(String keywords) {
return topicMapper.searchTopics(keywords);
}
}
......@@ -3,7 +3,7 @@ spring:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/beyond_clouds?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: 100Centa30821%mysql
password: password
swagger:
enable: true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment