Commit 343cb12e by 胡明森

创建标签

parent d54b932c
package cn.meteor.beyondclouds.modules.tag.api;
import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.modules.tag.exception.TagServiceException;
import cn.meteor.beyondclouds.modules.tag.form.CreateTagForm;
import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
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 javax.validation.Valid;
/**
* @author 胡明森
* @since 2020/2/2
*/
@Api(tags = "标签Api")
@RestController
@RequestMapping("/api")
public class TagApi {
private ITagService tagService;
@Autowired
public void setTagService(ITagService tagService) {
this.tagService = tagService;
}
@ApiOperation("创建标签")
@PostMapping("/tag")
public Response createTag(@RequestBody @Valid CreateTagForm createTagForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return Response.fieldError(bindingResult.getFieldError());
}
try {
tagService.createTag(createTagForm.getTagName(),createTagForm.getTagType());
return Response.success();
} catch (TagServiceException e) {
e.printStackTrace();
return Response.error(e);
}
}
}
package cn.meteor.beyondclouds.modules.tag.enums;
import cn.meteor.beyondclouds.core.IErrorCode;
/**
* 标签相关错误码
* @author 胡明森
*/
public enum TagErrorCode implements IErrorCode {
/**
* 标签类型存在
*/
TAGTYPE_EXISTS(3001,"该标签存在"),
TAGTYPE_NOT_EXISTS(3002, "该标签类型不存在");
TagErrorCode(long code, String msg) {
this.code = code;
this.msg = msg;
}
private long code;
private String msg;
@Override
public long code () {
return code;
}
@Override
public String msg() {
return msg;
}
}
package cn.meteor.beyondclouds.modules.tag.exception;
import cn.meteor.beyondclouds.core.IErrorCode;
import cn.meteor.beyondclouds.core.exception.ServiceException;
import lombok.Data;
/**
* 标签业务异常
* @author 胡明森
* @since 2020/2/2
*/
@Data
public class TagServiceException extends ServiceException {
public TagServiceException(long errorCode, String errorMsg) {
super(errorCode, errorMsg);
}
public TagServiceException(IErrorCode errorCode) {
this(errorCode.code(), errorCode.msg());
}
}
package cn.meteor.beyondclouds.modules.tag.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 CreateTagForm {
@ApiModelProperty("标签名称")
@NotEmpty(message = "标签名称不能为空")
private String tagName;
@ApiModelProperty("标签类型")
private Integer tagType;
}
...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.tag.mapper; ...@@ -2,6 +2,7 @@ package cn.meteor.beyondclouds.modules.tag.mapper;
import cn.meteor.beyondclouds.modules.tag.entity.Tag; import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Component;
/** /**
* <p> * <p>
...@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author 段启岩 * @author 段启岩
* @since 2020-01-30 * @since 2020-01-30
*/ */
@Component
public interface TagMapper extends BaseMapper<Tag> { public interface TagMapper extends BaseMapper<Tag> {
Tag getTags(String tagName, Integer tagType);
} }
...@@ -2,4 +2,8 @@ ...@@ -2,4 +2,8 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.meteor.beyondclouds.modules.tag.mapper.TagMapper"> <mapper namespace="cn.meteor.beyondclouds.modules.tag.mapper.TagMapper">
<select id="getTags" resultType="cn.meteor.beyondclouds.modules.tag.entity.Tag">
select * from tag where tag_name=#{tagName} and tag_type=#{tagType}
</select>
</mapper> </mapper>
package cn.meteor.beyondclouds.modules.tag.service; package cn.meteor.beyondclouds.modules.tag.service;
import cn.meteor.beyondclouds.modules.tag.entity.Tag; import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.exception.TagServiceException;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
/** /**
...@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -13,4 +14,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/ */
public interface ITagService extends IService<Tag> { public interface ITagService extends IService<Tag> {
/**
* 创建表填
* @param tagName
* @param tagType
*/
void createTag(String tagName, Integer tagType) throws TagServiceException;
} }
package cn.meteor.beyondclouds.modules.tag.service.impl; package cn.meteor.beyondclouds.modules.tag.service.impl;
import cn.meteor.beyondclouds.modules.tag.entity.Tag; import cn.meteor.beyondclouds.modules.tag.entity.Tag;
import cn.meteor.beyondclouds.modules.tag.enums.TagErrorCode;
import cn.meteor.beyondclouds.modules.tag.exception.TagServiceException;
import cn.meteor.beyondclouds.modules.tag.mapper.TagMapper; import cn.meteor.beyondclouds.modules.tag.mapper.TagMapper;
import cn.meteor.beyondclouds.modules.tag.service.ITagService; import cn.meteor.beyondclouds.modules.tag.service.ITagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -17,4 +20,39 @@ import org.springframework.stereotype.Service; ...@@ -17,4 +20,39 @@ import org.springframework.stereotype.Service;
@Service @Service
public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements ITagService { public class TagServiceImpl extends ServiceImpl<TagMapper, Tag> implements ITagService {
//博客标签
private static final long TAGTYPE_0 = 0;
//问题标签
private static final long TAGTYPE_2 = 2;
//标签类型数量
private static final long TAGTYPE_NUMBER = 2;
private TagMapper tagMapper;
@Autowired
public void setTagMapper(TagMapper tagMapper) {
this.tagMapper = tagMapper;
}
@Override
public void createTag(String tagName, Integer tagType) throws TagServiceException {
//1. 判断标签类型是否正确
if(tagType!=TAGTYPE_0 && tagType!=TAGTYPE_2) {
throw new TagServiceException(TagErrorCode.TAGTYPE_NOT_EXISTS);
}
//2. 判断是否存在该标签
Tag tags = tagMapper.getTags(tagName, tagType);
if(tags != null) {
throw new TagServiceException(TagErrorCode.TAGTYPE_EXISTS);
}
//3.储存标签
Tag tag=new Tag();
tag.setTagName(tagName);
tag.setTagType(tagType);
save(tag);
}
} }
...@@ -2,7 +2,6 @@ package cn.meteor.beyondclouds.modules.topic.api; ...@@ -2,7 +2,6 @@ package cn.meteor.beyondclouds.modules.topic.api;
import cn.meteor.beyondclouds.common.form.PageForm; import cn.meteor.beyondclouds.common.form.PageForm;
import cn.meteor.beyondclouds.common.vo.PageVO; import cn.meteor.beyondclouds.common.vo.PageVO;
import cn.meteor.beyondclouds.core.annotation.Anonymous;
import cn.meteor.beyondclouds.core.annotation.CurrentSubject; import cn.meteor.beyondclouds.core.annotation.CurrentSubject;
import cn.meteor.beyondclouds.core.api.Response; import cn.meteor.beyondclouds.core.api.Response;
import cn.meteor.beyondclouds.core.bean.Subject; import cn.meteor.beyondclouds.core.bean.Subject;
...@@ -74,7 +73,6 @@ public class TopicApi { ...@@ -74,7 +73,6 @@ public class TopicApi {
} }
@Anonymous
@ApiOperation("话题详情") @ApiOperation("话题详情")
@GetMapping("/topic/{topicId}") @GetMapping("/topic/{topicId}")
public Response getTopic(@PathVariable("topicId") String topicId) { public Response getTopic(@PathVariable("topicId") String topicId) {
......
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