zoukankan      html  css  js  c++  java
  • 评论接口功能开发(基于Spring-Boot开发)

    开发思路:评论功能实现主要分为:

    1、创建评论表及表关联

    2、xml处理逻辑以及相关文件

    3、Controller层编写

    1、创建评论表及表关联

    创建动态评论表:t_dynamic_reply

    动态评论表动态表用户表外键关联

     2、xml处理逻辑以及相关文件

     编写DynamicReplyMapper.xml文件 

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.zhuoying.yingyongji.dao.DynamicReplyDao">
    
        <resultMap id="baseResultMap" type="com.zhuoying.yingyongji.model.DynamicReply">
            <id property="id" column="id" />
            <result property="userId" column="user_id" />
            <result property="replyDynamicId" column="reply_dynamic_id" />
            <result property="replyReplyId" column="reply_reply_id" />
            <result property="replyUserId" column="reply_user_id" />
            <result property="content" column="content" />
            <result property="createTime" column="create_time" />
            <result property="floorNum" column="floor_num" />
            <association property="user" column="user_id" select="com.zhuoying.yingyongji.dao.UserDao.findByIdSimple" />
            <association property="replyUser" column="reply_user_id" select="com.zhuoying.yingyongji.dao.UserDao.findByIdSimple" />
        </resultMap>
    
        <resultMap id="detailResultMap" extends="baseResultMap" type="com.zhuoying.yingyongji.model.DynamicReply">
        </resultMap>
    
        <sql id="baseTable">t_dynamic_reply</sql>
    
    
        <insert id="insert" useGeneratedKeys="true" keyProperty="id">
            INSERT INTO <include refid="baseTable" />(user_id,reply_dynamic_id,reply_reply_id,reply_user_id,content,create_time,floor_num)
            VALUES
            <foreach collection="array" item="item" separator=",">
                (#{item.userId},#{item.replyDynamicId},#{item.replyReplyId},#{item.replyUserId},#{item.content},#{item.createTime},#{item.floorNum})
            </foreach>
        </insert>
    
        <select id="list" resultMap="baseResultMap">
            SELECT *  FROM <include refid="baseTable" />
            <if test="param != null">
                <where>
                    <if test="param.userId != null">AND user_id=#{param.userId}</if>
                    <if test="param.replyDynamicId != null">AND reply_dynamic_id=#{param.replyDynamicId}</if>
                    <if test="param.replyReplyId != null">AND reply_reply_id=#{param.replyReplyId}</if>
                    <if test="param.replyUserId != null">AND reply_user_id=#{param.replyUserId}</if>
                    <if test="param.content != null">AND content=#{param.content}</if>
                    <if test="param.createTime != null">AND create_time=#{param.createTime}</if>
                    <if test="param.floorNum != null">AND floor_num=#{param.floorNum}</if>
                </where>
            </if>
        </select>
    
        <select id="findMaxFloorNum" resultType="java.lang.Integer">
            SELECT IFNULL(MAX(floor_num),0) FROM <include refid="baseTable" /> WHERE reply_dynamic_id=#{dynamicId}
        </select>
    
        <select id="findById" resultMap="detailResultMap">
            SELECT * FROM <include refid="baseTable" /> WHERE id=#{id}
        </select>
    
        <select id="findByIdSimple" resultMap="baseResultMap">
            SELECT id FROM <include refid="baseTable" /> WHERE id=#{id}
        </select>
    
        <update id="updateByIds">
            UPDATE <include refid="baseTable" />
            <set>
                <if test="param.userId != null">user_id=#{param.userId},</if>
                <if test="param.replyDynamicId != null">reply_dynamic_id=#{param.replyDynamicId},</if>
                <if test="param.replyReplyId != null">reply_reply_id=#{param.replyReplyId},</if>
                <if test="param.replyUserId != null">reply_user_id=#{param.replyUserId},</if>
                <if test="param.content != null">content=#{param.content},</if>
                <if test="param.createTime != null">create_time=#{param.createTime},</if>
                <if test="param.floorNum != null">floor_num=#{param.floorNum},</if>
            </set>
            WHERE id IN
            <foreach collection="ids" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </update>
    
        <delete id="deleteByIds">
            DELETE FROM <include refid="baseTable" /> WHERE id IN
            <foreach collection="array" item="item" open="(" separator="," close=")">
                #{item}
            </foreach>
        </delete>
    </mapper>

     

     model层的 DynamicReply

    @Data
    @Accessors(chain = true)
    public class DynamicReply {
    
        private Long id;
        private Long userId;
        private Long replyDynamicId;
        private Long replyReplyId;
        private Long replyUserId;
        private String content;
        private Date createTime;
        private Integer floorNum;
        private User user;
        private User replyUser;
        private String createTimeDesc;
    
    
    
    }

    Dao层 DynamicReplyDao 

    @Repository
    public interface DynamicReplyDao extends BaseDao<DynamicReply, Long> {
    
        Integer findMaxFloorNum(Long dynamicId);
    
    }

    由于BaseDao接口已经封装好xml使用的方法,所以直接继承

    public interface BaseDao<T, ID> {
    
        int insert(T... beans);
    
        List<T> list(@Param("param") T beans);
    
        List<T> listDetail(@Param("param") T param);
    
        int count(@Param("param") T param);
    
        T findById(ID id);
    
        T findByIdSimple(ID id);
    
        int updateByIds(@Param("param") T param, @Param("ids") ID... ids);
    
        int deleteByIds(ID... ids);
    }

    3、Controller层编写

    @Api(tags = DynamicController.TAG_DESC + "接口")
    @RestController
    @RequestMapping("/api/dynamic/reply")
    public class DynamicReplyController {
    
        public static final String TAG_DESC = "动态评论";
    
    
        @Autowired
        private DynamicService dynamicService;
    
        @Autowired
        private DynamicReplyService dynamicReplyService;
    
        @Transactional
        @ApiOperation("新增" + TAG_DESC)
        @PostMapping("/add")
        public JsonResult add(@ValidRequestParam(desc = "用户Id") Long user_id,
                              @ValidRequestParam(desc = "回复动态Id") Long reply_dynamic_id,
                              @ValidParam(desc = "回复评论id") Long reply_reply_id,
                              @ValidParam(desc = "回复用户id") Long reply_user_id,
                              @ValidRequestParam(desc = "内容") String content,
                              @ValidRequestParam(desc = "创建时间", defaultValue = ValidDateType.CURRENT_TIME) Date create_time)
        {
            dynamicService.updateByIds(new Dynamic().setUpdateTime(new Date()), reply_dynamic_id);
    
            DynamicReply dynamicReply = new DynamicReply()
                    .setUserId(user_id)
                    .setReplyDynamicId(reply_dynamic_id)
                    .setReplyReplyId(reply_reply_id)
                    .setReplyUserId(reply_user_id)
                    .setContent(content)
                    .setCreateTime(create_time)
                    .setFloorNum(dynamicReplyService.findMaxFloorNum(reply_dynamic_id) + 1);
            dynamicReplyService.insert(dynamicReply);
            return JsonResult.okAndReturnId(dynamicReply.getId());
        }
    
        @ApiOperation("查询动态评论列表")
        @GetMapping("/list")
        public JsonResult list(@ApiParam("用户id") Long user_id,
                               @ApiParam("回复动态id") Long reply_dynamic_id,
                               @ApiParam("回复评论id") Long reply_reply_id,
                               @ApiParam("回复用户id") Long reply_user_id,
                               @ApiParam("内容") String content,
                               @ApiParam("创建时间") Date create_time,
                               @ValidModel PageParam pageParam,
                               @RequestParam(defaultValue = "id desc") @ApiParam("排序") String sort)
        {
            DynamicReply dynamicReply = new DynamicReply()
                    .setUserId(user_id)
                    .setReplyDynamicId(reply_dynamic_id)
                    .setReplyReplyId(reply_reply_id)
                    .setReplyUserId(reply_user_id)
                    .setContent(content)
                    .setCreateTime(create_time);
            PageHelper.startPage(pageParam.getPage_num(), pageParam.getPage_size(), sort);
            return JsonResult.data(new MyPageInfo<>(dynamicReplyService.list(dynamicReply)));
        }
    
        @ApiOperation("根据id查询动态评论")
        @GetMapping("/get")
        public JsonResult select(@RequestParam Long id) {
            return  JsonResult.data(dynamicReplyService.findById(id));
        }
    
        @ApiOperation("根据id查询动态(基础)")
        @GetMapping("/get/simple")
        public JsonResult selectSimple(@RequestParam Long id) {
            return  JsonResult.data(dynamicReplyService.findByIdSimple(id));
        }
    
        @ApiOperation("修改动态评论")
        @PostMapping("/update")
        public JsonResult update(@RequestParam Long[] id,
                                 @ValidParam(desc = "用户id") Long user_id,
                                 @ValidParam(desc = "回复动态id") Long reply_dynamic_id,
                                 @ValidParam(desc = "回复评论id") Long reply_reply_id,
                                 @ValidParam(desc = "回复用户id") Long reply_user_id,
                                 @ValidParam(desc = "内容") String content,
                                 @ValidParam(desc = "创建时间") Date create_time)
        {
            DynamicReply dynamicReply = new DynamicReply()
                    .setUserId(user_id)
                    .setReplyDynamicId(reply_dynamic_id)
                    .setReplyReplyId(reply_reply_id)
                    .setReplyUserId(reply_user_id)
                    .setContent(content)
                    .setCreateTime(create_time);
            dynamicReplyService.updateByIds(dynamicReply, id);
            return JsonResult.ok();
        }
    
        @ApiOperation("删除动态评论")
        @PostMapping("/delete")
        public JsonResult delete(@RequestParam Long[] id) {
            dynamicReplyService.deleteByIds(id);
            return JsonResult.ok();
        }
    }

    4、Api文档


    用于记录本人的开发经历

    新手小白,请多体谅、指教

  • 相关阅读:
    java开发之经验之谈
    mac安装openssl
    DataTables在IE8下报'style' 为空或不是对象错误问题 , SCRIPT5007: 无法获取未定义或 null 引用的属性“style”
    mac启动项配置文件
    idea导入插件项目,不能运行问题
    mac 完全卸载intellij
    msyql分组查询,按照日期格式
    原型模式
    抽象工厂模式
    简单工厂模式
  • 原文地址:https://www.cnblogs.com/weiyianyi/p/12917897.html
Copyright © 2011-2022 走看看