十次方07、文章子模块-业务代码编写

文章目录

  • 文章子模块-代码编写
    • 1 业务分析
    • 2 数据库表结构
      • 2.1 建表sql语句
      • 2.2 表结构分析
      • 2.3 代码生成器
    • 3 需要写的业务模块
      • 3.3 测试接口

文章子模块-代码编写

1 业务分析

需要些的功能对应API:

  1. 文章审核
    修改文章的state值,0改为1

    /article/examine/{articleId} 文章审核

  2. 文章审核
    thumbup+1

    /article/thumbup/{articleId} 点赞

2 数据库表结构

2.1 建表sql语句

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`tensquare_article` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `tensquare_article`;

/*Table structure for table `tb_article` */

DROP TABLE IF EXISTS `tb_article`;

CREATE TABLE `tb_article` (
  `id` varchar(20) NOT NULL COMMENT 'ID',
  `columnid` varchar(20) DEFAULT NULL COMMENT '专栏ID',
  `userid` varchar(20) DEFAULT NULL COMMENT '用户ID',
  `title` varchar(100) DEFAULT NULL COMMENT '标题',
  `content` text COMMENT '文章正文',
  `image` varchar(100) DEFAULT NULL COMMENT '文章封面',
  `createtime` datetime DEFAULT NULL COMMENT '发表日期',
  `updatetime` datetime DEFAULT NULL COMMENT '修改日期',
  `ispublic` varchar(1) DEFAULT NULL COMMENT '是否公开',
  `istop` varchar(1) DEFAULT NULL COMMENT '是否置顶',
  `visits` int(20) DEFAULT NULL COMMENT '浏览量',
  `thumbup` int(20) DEFAULT NULL COMMENT '点赞数',
  `comment` int(20) DEFAULT NULL COMMENT '评论数',
  `state` varchar(1) DEFAULT NULL COMMENT '审核状态',
  `channelid` varchar(20) DEFAULT NULL COMMENT '所属频道',
  `url` varchar(100) DEFAULT NULL COMMENT 'URL',
  `type` varchar(1) DEFAULT NULL COMMENT '类型',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章';

/*Data for the table `tb_article` */


/*Table structure for table `tb_channel` */

DROP TABLE IF EXISTS `tb_channel`;

CREATE TABLE `tb_channel` (
  `id` varchar(20) NOT NULL COMMENT 'ID',
  `name` varchar(100) DEFAULT NULL COMMENT '频道名称',
  `state` varchar(1) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='频道';

/*Data for the table `tb_channel` */

/*Table structure for table `tb_column` */

DROP TABLE IF EXISTS `tb_column`;

CREATE TABLE `tb_column` (
  `id` varchar(20) NOT NULL COMMENT 'ID',
  `name` varchar(100) DEFAULT NULL COMMENT '专栏名称',
  `summary` varchar(1000) DEFAULT NULL COMMENT '专栏简介',
  `userid` varchar(20) DEFAULT NULL COMMENT '用户ID',
  `createtime` datetime DEFAULT NULL COMMENT '申请日期',
  `checktime` datetime DEFAULT NULL COMMENT '审核日期',
  `state` varchar(1) DEFAULT NULL COMMENT '状态',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='专栏';

/*Data for the table `tb_column` */


/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

2.2 表结构分析

  1. 文章表
    文章表 tb_article
    字段名称 字段含义 字段类型 备注
    id ID 文本
    columnid 专栏ID 文本
    userid 用户ID 文本
    title 文章标题 文本
    content 文章内容 文本
    image 文章封面 文本
    createtime 发表日期 日期
    updatetime 修改日期 日期
    ispublic 是否公开 文本 0:不公开 1:公开
    istop 是否置顶 文本 0:不置顶 1:置顶
    visits 浏览量 整型
    thumbup 点赞数 整型
    comment 评论数 整型
    state 审核状态 文本 0:未审核 1:已审核
    channelid 所属频道 整型 关联频道表ID
    url URL地址 文本
    type 文章类型 文本 0:分享 1:专栏

2.3 代码生成器

  1. 使用代码生成器生成招聘微服务代码 tensquare_article
  2. 拷贝到当前工程,并在父工程引入。
  3. 修改Application类名称为ArticleApplication
  4. 修改application.yml 中的端口为9004 ,url 为jdbc:mysql://192.168.184.134:3306/tensquare_article?characterEncoding=UTF8
  5. 进行浏览器测试
  6. 给service加上事务注解@Transactional

3 需要写的业务模块

  • 文章审核方法,examine()
  • 文章点赞方法,updateThumbup()
  • @Modifying:通知jpa这是一个update或者delete操作,jpql不支持insert操作
  • 如果出现事务异常,检查service上的事务注解
  1. ArticleDao

    /**
     * 数据访问接口
     * @author Administrator
     */
    public interface ArticleDao extends JpaRepository<Article, String>, JpaSpecificationExecutor<Article> {
    
        /**
         * 文章审核
         * @param id
         * @return
         */
        @Modifying //通知jpa这是一个update或者delete操作,jpql不支持insert操作
        @Query(value = "UPDATE tb_article SET state=1 WHERE id = ?", nativeQuery = true)
        public void examine(String id);
    
        /**
         * 点赞
         * @param id
         * @return
         */
        @Modifying
        @Query(value = "UPDATE tb_article SET thumbup = thumbup+1 WHERE id = ?", nativeQuery = true)
        public void updateThumbup(String id);
    }
    
  2. ArticleService

    ......
        /**
    	 * 文章审核
    	 * @param id
    	 * @return
    	 */
    	public void examine(String id) {
    		articleDao.examine(id);
    	}
    
    	/**
    	 * 点赞
    	 * @param id
    	 * @return
    	 */
    	public void updateThumbup(String id) {
    		articleDao.updateThumbup(id);
    	}
    ......
    
  3. ArticleController

    ......
           /**
         * 文章审核
         * @param articleId
         * @return
         */
        @PutMapping("/examine/{articleId}")
        public Result examine(@PathVariable String articleId) {
            articleService.examine(articleId);
            return new Result(true, StatusCode.OK, "审核成功");
        }
    
        /**
         * 点赞
         * @param articleId
         * @return
         */
        @PutMapping("/thumbup/{articleId}")
        public Result updateThumbup(@PathVariable String articleId) {
            articleService.updateThumbup(articleId);
            return new Result(true, StatusCode.OK, "点赞成功");
        }
    ......
    

3.3 测试接口

PUT方式请求,修改数据。

  • http://localhost:9004/article/examine/{articleId}
  • http://localhost:9003/article/thumbup/{articleId}

十次方00、总目录
https://blog.csdn.net/amingccc/article/details/84260613

你可能感兴趣的:(Java_项目_十次方)