专题-标签管理
This commit is contained in:
parent
1a6142c446
commit
23627d1fc6
14
src/main/java/com/rymcu/vertical/dto/admin/TopicTagDTO.java
Normal file
14
src/main/java/com/rymcu/vertical/dto/admin/TopicTagDTO.java
Normal file
@ -0,0 +1,14 @@
|
||||
package com.rymcu.vertical.dto.admin;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author ronger
|
||||
*/
|
||||
@Data
|
||||
public class TopicTagDTO {
|
||||
|
||||
private Integer idTopic;
|
||||
|
||||
private Integer idTag;
|
||||
}
|
@ -23,7 +23,7 @@ public interface ArticleMapper extends Mapper<Article> {
|
||||
|
||||
ArticleContent selectArticleContent(@Param("idArticle") Integer idArticle);
|
||||
|
||||
List<ArticleDTO> selectArticlesByTopicName(@Param("topicName") String topicName);
|
||||
List<ArticleDTO> selectArticlesByTopicUri(@Param("topicName") String topicName);
|
||||
|
||||
List<ArticleDTO> selectArticlesByTagName(@Param("tagName") String tagName);
|
||||
|
||||
|
@ -3,17 +3,60 @@ package com.rymcu.vertical.mapper;
|
||||
import com.rymcu.vertical.core.mapper.Mapper;
|
||||
import com.rymcu.vertical.dto.admin.TagDTO;
|
||||
import com.rymcu.vertical.dto.admin.TopicDTO;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
import com.rymcu.vertical.entity.Topic;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ronger
|
||||
*/
|
||||
public interface TopicMapper extends Mapper<Topic> {
|
||||
/**
|
||||
* 获取导航主题
|
||||
* @return
|
||||
*/
|
||||
List<Topic> selectTopicNav();
|
||||
|
||||
/**
|
||||
* @param topicUri
|
||||
* @return
|
||||
*/
|
||||
TopicDTO selectTopicByTopicUri(@Param("topicUri") String topicUri);
|
||||
|
||||
/**
|
||||
* @param idTopic
|
||||
* @return
|
||||
*/
|
||||
List<TagDTO> selectTopicTag(@Param("idTopic") Integer idTopic);
|
||||
|
||||
/**
|
||||
* @param idTopic
|
||||
* @param topicTitle
|
||||
* @param topicUri
|
||||
* @param topicIconPath
|
||||
* @param topicNva
|
||||
* @param topicStatus
|
||||
* @param topicSort
|
||||
* @param topicDescription
|
||||
* @return
|
||||
*/
|
||||
Integer update(@Param("idTopic") Integer idTopic, @Param("topicTitle") String topicTitle, @Param("topicUri") String topicUri, @Param("topicIconPath") String topicIconPath, @Param("topicNva") String topicNva, @Param("topicStatus") String topicStatus, @Param("topicSort") Integer topicSort, @Param("topicDescription") String topicDescription);
|
||||
|
||||
/**
|
||||
* @param idTopic
|
||||
* @param tagTitle
|
||||
* @return
|
||||
*/
|
||||
List<Tag> selectUnbindTagsById(@Param("idTopic") Integer idTopic, @Param("tagTitle") String tagTitle);
|
||||
|
||||
Integer insertTopicTag(@Param("idTopic") Integer idTopic, @Param("idTag") Integer idTag);
|
||||
|
||||
/**
|
||||
* @param idTopic
|
||||
* @param idTag
|
||||
* @return
|
||||
*/
|
||||
Integer deleteTopicTag(@Param("idTopic") Integer idTopic, @Param("idTag") Integer idTag);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ public interface ArticleService extends Service<Article> {
|
||||
* @param name
|
||||
* @return
|
||||
* */
|
||||
List<ArticleDTO> findArticlesByTopicName(String name);
|
||||
List<ArticleDTO> findArticlesByTopicUri(String name);
|
||||
|
||||
/**
|
||||
* 查询标签下文章列表
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.rymcu.vertical.service;
|
||||
|
||||
import com.rymcu.vertical.core.service.Service;
|
||||
import com.rymcu.vertical.dto.admin.TopicTagDTO;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
import com.rymcu.vertical.entity.Topic;
|
||||
|
||||
import java.util.List;
|
||||
@ -32,4 +34,26 @@ public interface TopicService extends Service<Topic> {
|
||||
* @return
|
||||
* */
|
||||
Map saveTopic(Topic topic);
|
||||
|
||||
/**
|
||||
* 查询未绑定标签
|
||||
* @param idTopic
|
||||
* @param tagTitle
|
||||
* @return
|
||||
*/
|
||||
List<Tag> findUnbindTagsById(Integer idTopic, String tagTitle);
|
||||
|
||||
/**
|
||||
* 绑定标签
|
||||
* @param topicTag
|
||||
* @return
|
||||
*/
|
||||
Map bindTopicTag(TopicTagDTO topicTag);
|
||||
|
||||
/**
|
||||
* 取消绑定标签
|
||||
* @param topicTag
|
||||
* @return
|
||||
*/
|
||||
Map unbindTopicTag(TopicTagDTO topicTag);
|
||||
}
|
||||
|
@ -61,8 +61,8 @@ public class ArticleServiceImpl extends AbstractService<Article> implements Arti
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArticleDTO> findArticlesByTopicName(String name) {
|
||||
List<ArticleDTO> articleDTOS = articleMapper.selectArticlesByTopicName(name);
|
||||
public List<ArticleDTO> findArticlesByTopicUri(String name) {
|
||||
List<ArticleDTO> articleDTOS = articleMapper.selectArticlesByTopicUri(name);
|
||||
return articleDTOS;
|
||||
}
|
||||
|
||||
|
@ -5,9 +5,12 @@ import com.github.pagehelper.PageInfo;
|
||||
import com.rymcu.vertical.core.service.AbstractService;
|
||||
import com.rymcu.vertical.dto.admin.TagDTO;
|
||||
import com.rymcu.vertical.dto.admin.TopicDTO;
|
||||
import com.rymcu.vertical.dto.admin.TopicTagDTO;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
import com.rymcu.vertical.entity.Topic;
|
||||
import com.rymcu.vertical.mapper.TopicMapper;
|
||||
import com.rymcu.vertical.service.TopicService;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -74,4 +77,38 @@ public class TopicServiceImpl extends AbstractService<Topic> implements TopicSer
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Tag> findUnbindTagsById(Integer idTopic, String tagTitle) {
|
||||
if (StringUtils.isBlank(tagTitle)) {
|
||||
tagTitle = "";
|
||||
}
|
||||
return topicMapper.selectUnbindTagsById(idTopic,tagTitle);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map bindTopicTag(TopicTagDTO topicTag) {
|
||||
Integer result = topicMapper.insertTopicTag(topicTag.getIdTopic(), topicTag.getIdTag());
|
||||
Map map = new HashMap(1);
|
||||
if (result == 0) {
|
||||
map.put("message", "操作失败!");
|
||||
} else {
|
||||
map.put("topicTag", topicTag);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map unbindTopicTag(TopicTagDTO topicTag) {
|
||||
Integer result = topicMapper.deleteTopicTag(topicTag.getIdTopic(), topicTag.getIdTag());
|
||||
Map map = new HashMap(1);
|
||||
if (result == 0) {
|
||||
map.put("message", "操作失败!");
|
||||
} else {
|
||||
map.put("topicTag", topicTag);
|
||||
}
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.rymcu.vertical.core.result.GlobalResult;
|
||||
import com.rymcu.vertical.core.result.GlobalResultGenerator;
|
||||
import com.rymcu.vertical.dto.admin.TopicTagDTO;
|
||||
import com.rymcu.vertical.dto.admin.UserRoleDTO;
|
||||
import com.rymcu.vertical.entity.Role;
|
||||
import com.rymcu.vertical.entity.Tag;
|
||||
@ -18,6 +19,7 @@ import org.apache.commons.lang.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -128,6 +130,32 @@ public class AdminController {
|
||||
return GlobalResultGenerator.genSuccessResult(topic);
|
||||
}
|
||||
|
||||
@GetMapping("/topic/unbind-topic-tags")
|
||||
public GlobalResult unbindTopicTags(@RequestParam(defaultValue = "0") Integer page, @RequestParam(defaultValue = "10") Integer rows, HttpServletRequest request){
|
||||
Integer idTopic = Integer.valueOf(request.getParameter("idTopic"));
|
||||
String tagTitle = request.getParameter("tagTitle");
|
||||
PageHelper.startPage(page, rows);
|
||||
List<Tag> list = topicService.findUnbindTagsById(idTopic, tagTitle);
|
||||
PageInfo<Tag> pageInfo = new PageInfo<>(list);
|
||||
Map<String, Object> map = new HashMap<>(2);
|
||||
map.put("tags", pageInfo.getList());
|
||||
Map pagination = Utils.getPagination(pageInfo);
|
||||
map.put("pagination", pagination);
|
||||
return GlobalResultGenerator.genSuccessResult(map);
|
||||
}
|
||||
|
||||
@PostMapping("/topic/bind-topic-tag")
|
||||
public GlobalResult bindTopicTag(@RequestBody TopicTagDTO topicTag){
|
||||
Map map = topicService.bindTopicTag(topicTag);
|
||||
return GlobalResultGenerator.genSuccessResult(map);
|
||||
}
|
||||
|
||||
@DeleteMapping("/topic/unbind-topic-tag")
|
||||
public GlobalResult unbindTopicTag(@RequestBody TopicTagDTO topicTag){
|
||||
Map map = topicService.unbindTopicTag(topicTag);
|
||||
return GlobalResultGenerator.genSuccessResult(map);
|
||||
}
|
||||
|
||||
@PostMapping("/topic/post")
|
||||
public GlobalResult<Map> addTopic(@RequestBody Topic topic){
|
||||
Map map = topicService.saveTopic(topic);
|
||||
|
@ -78,8 +78,11 @@
|
||||
<select id="selectArticleContent" resultMap="ArticleContentResultMap">
|
||||
select article_content,article_content_html from vertical_article_content where id_article = #{idArticle}
|
||||
</select>
|
||||
<select id="selectArticlesByTopicName" resultMap="DTOResultMap">
|
||||
select art.*,su.nickname,su.avatar_url from vertical_article art left join vertical_user su on art.article_author_id = su.id order by updated_time desc
|
||||
<select id="selectArticlesByTopicUri" resultMap="DTOResultMap">
|
||||
select art.*,su.nickname,su.avatar_url from vertical_article art left join vertical_user su on art.article_author_id = su.id
|
||||
where exists(select * from vertical_tag_article vta where vta.id_article = art.id and exists(select * from vertical_topic_tag vtt
|
||||
left join vertical_tag vt on vtt.id_tag = vt.id where vt.id = vta.id_tag and exists(select * from vertical_topic topic
|
||||
where topic.id = vtt.id_topic and topic.topic_uri = #{topicName}))) order by updated_time desc
|
||||
</select>
|
||||
<select id="selectArticlesByTagName" resultMap="DTOResultMap">
|
||||
select art.*,su.nickname,su.avatar_url from vertical_article art left join vertical_user su on art.article_author_id = su.id order by updated_time desc
|
||||
|
@ -34,18 +34,47 @@
|
||||
<id column="tag_description" property="tagDescription"/>
|
||||
<id column="tag_icon_path" property="tagIconPath"/>
|
||||
</resultMap>
|
||||
<resultMap id="TagResultMap" type="com.rymcu.vertical.entity.Tag">
|
||||
<!--
|
||||
WARNING - @mbg.generated
|
||||
-->
|
||||
<id column="id" property="idTag"/>
|
||||
<id column="tag_title" property="tagTitle"/>
|
||||
<id column="tag_icon_path" property="tagIconPath"/>
|
||||
<id column="tag_uri" property="tagUri"/>
|
||||
<id column="tag_description" property="tagDescription"/>
|
||||
<id column="tag_view_count" property="tagViewCount"/>
|
||||
<id column="tag_article_count" property="tagArticleCount"/>
|
||||
<id column="tag_ad" property="tagAd"/>
|
||||
<id column="tag_show_side_ad" property="tagShowSideAd"/>
|
||||
<id column="created_time" property="createdTime"/>
|
||||
<id column="updated_time" property="updatedTime"/>
|
||||
</resultMap>
|
||||
<insert id="insertTopicTag">
|
||||
insert into vertical_topic_tag (id_topic, id_tag, created_time, updated_time) values (#{idTopic}, #{idTag}, sysdate(), sysdate())
|
||||
</insert>
|
||||
<update id="update">
|
||||
update vertical_topic set topic_title = #{topicTitle},topic_uri = #{topicUri},topic_icon_path = #{topicIconPath}
|
||||
,topic_nva = #{topicNva},topic_status = #{topicStatus},topic_sort = #{topicSort},topic_description = #{topicDescription}
|
||||
where id = #{idTopic}
|
||||
</update>
|
||||
<delete id="deleteTopicTag">
|
||||
delete from vertical_topic_tag where id_topic = #{idTopic} and id_tag = #{idTag}
|
||||
</delete>
|
||||
<select id="selectTopicNav" resultMap="BaseResultMap">
|
||||
select id,topic_title,topic_uri,topic_icon_path from vertical_topic where topic_nva = 0 and topic_status = 0 order by topic_sort
|
||||
</select>
|
||||
<select id="selectTopicByTopicUri" resultMap="DTOResultMap">
|
||||
select id,topic_title,topic_uri,topic_icon_path,topic_description,topic_tag_count,topic_status from vertical_topic where topic_uri = #{topicUri}
|
||||
</select>
|
||||
<select id="selectTopicTag" resultType="com.rymcu.vertical.dto.admin.TagDTO">
|
||||
select vt.id,vt.tag_title,vt.tag_uri,vt.tag_description,vt.tag_icon_path from vertical_tag vt left join vertical_topic_tag vtt on vt.id = vtt.id_tag where vtt.id_topic = #{idTopic}
|
||||
<select id="selectTopicTag" resultMap="TagDTOResultMap">
|
||||
select vt.id,vt.tag_title,vt.tag_uri,vt.tag_description,vt.tag_icon_path from vertical_tag vt left join vertical_topic_tag vtt on vt.id = vtt.id_tag where vtt.id_topic = #{idTopic} order by vtt.created_time desc
|
||||
</select>
|
||||
<select id="selectUnbindTagsById" resultMap="TagResultMap">
|
||||
select * from vertical_tag vt where not exists(select * from vertical_topic_tag vtt where vtt.id_topic = #{idTopic} and vtt.id_tag = vt.id)
|
||||
<if test="tagTitle != '' and tagTitle != null">
|
||||
and vt.tag_title = #{tagTitle}
|
||||
</if>
|
||||
order by vt.created_time desc
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user