编写mo-yu-jun模块功能

# 编写mo-yu-jun模块功能

摸鱼君由三个部分组成:

- 门户(公共的)
- 个人中心(用户对自己的内容进行管理)
- 管理中心(管理中对内容进行管理)

# 功能模块

# 门户

  • 获取动态列表(根据话题/热门/推荐/最新获取列表)
  • 获取侧栏推荐的动态(由管理员推荐)
  • 举报动态内容
  • 获取话题列表
  • 关注话题
  • 取消关注话题
  • 发表动态
  • 分享动态
  • 评论动态
  • 回复动态评论
  • 点赞评论
  • 点赞子评论
  • 点赞动态
  • 关注作者(用户模块)
  • 取消关注作者(用户模块)
  • 显示通知数量,涵盖通知(用户模块)
  • 排行榜
    • 富豪排行榜(积分)
    • 热门动态榜(评论多的为热门的,周榜,月榜)
    • 推荐排行榜(点赞多的为推荐的,周榜,月榜)

# 个人中心

  • 粉丝列表(用户模块)
  • 关注列表(用户模块)
  • 回粉(用户模块)
  • 取消关注(用户模块)
  • 我的鱼
  • 资料更新(用户模块)
    • 头像
    • 性别,签名,职位,公司
    • 重置密码
    • 邮箱设置
  • 通知(用户模块)
    • 评论通知
    • 回复通知
    • 系统通知

# 管理中心

  • 动态管理
  • 评论管理
  • 话题管理
  • 举报管理
  • 积分系统管理

# 数据表设计

找对象

  • 动态(鱼)
  • 话题
  • 评论,子评论,评论点赞
  • 推荐内容
  • 举报内容
  • 积分
  • 举报记录

# 鱼my_fish

  • id-ID
  • content-动态内容
  • images-图片
  • topic_id-话题ID
  • url-链接
  • url_title-链接标题
  • url_cover-链接封面
  • user_id-用户ID
  • thumb_up_count-点赞数
  • images-图片
  • view_count-查看数量
  • comment_count-评论数量
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_fish`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `content` TEXT COMMENT '内容',
  `topic_id` VARCHAR(20) COMMENT '话题ID',
  `url` VARCHAR(1024) COMMENT '链接',
  `url_title` VARCHAR(128) COMMENT '链接标题',
  `url_cover` VARCHAR(512) COMMENT '链接封面',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `thumb_up_count` INT COMMENT '点赞数量',
  `images` TEXT COMMENT '图片',
  `view_count` INT COMMENT '浏览数量',
  `comment_count` INT COMMENT '评论数量',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

点赞表my_thumb_up

  • id-ID
  • my_id-摸鱼ID
  • user_id-用户ID
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_thumb_up`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `my_id` VARCHAR(20) COMMENT '摸鱼ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8

# 话题

my_topic

  • id-ID
  • name-名称
  • follow_count-关注数量
  • content_count-内容数量
  • description-介绍
  • cover-封面
  • order-顺序
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_topic`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `name` VARCHAR(64) COMMENT '名字',
  `follow_count` INT COMMENT '关注人数',
  `content_count` INT COMMENT '内容数量',
  `description` TEXT COMMENT '描述',
  `cover` VARCHAR(512) COMMENT '封面',
  `order` INT COMMENT '顺序',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9
10
11
12

话题关注表:谁关注了某个话题

my_topic_follow

  • id-ID
  • user_id-用户ID
  • topic_id-话题ID
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_topic_follow`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `topic_id` VARCHAR(20) COMMENT '话题ID',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8

# 评论

my_comment

  • id-ID
  • user_id-评论人的ID
  • my_id-摸鱼ID
  • thumb_up_count-点赞数量
  • content-评论内容
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_comment`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `my_id` VARCHAR(20) COMMENT '摸鱼ID',
  `thumb_up_count` INT COMMENT '点赞数量',
  `content` VARCHAR(1024) COMMENT '评论内容',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9
10

评论点赞表

my_comment_thumb_up

  • id-ID
  • my_id-摸鱼ID
  • comment_id-评论ID
  • user_id-用户ID
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `my_comment_thumb_up` (
  `id` varchar(20) NOT NULL COMMENT 'ID',
  `my_id` varchar(20) DEFAULT NULL COMMENT '摸鱼ID',
  `comment_id` varchar(20) DEFAULT NULL COMMENT '评论ID',
  `user_id` varchar(20) DEFAULT NULL COMMENT '用户ID',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1
2
3
4
5
6
7
8
9

子评论表

my_sub_comment

  • id-ID
  • user_id-评论人的ID
  • target_user_id-被评论人的ID
  • comment_id-评论ID
  • my_id-摸鱼ID
  • thumb_up_count-点赞数量
  • content-评论内容
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_sub_comment`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `target_user_id` VARCHAR(20) COMMENT '被评论的用户ID',
  `comment_id` VARCHAR(20) COMMENT '评论ID',
  `my_id` VARCHAR(20) COMMENT '摸鱼ID',
  `thumb_up_count` INT COMMENT '点赞数量',
  `content` VARCHAR(256) COMMENT '评论内容',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9
10
11
12

子评论点赞表

  • id-ID
  • my_id-摸鱼ID
  • sub_comment_id-子评论ID
  • user_id-用户ID
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_sub_comment_thumb_up`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `my_id` VARCHAR(20) COMMENT '摸鱼ID',
  `sub_comment_id` VARCHAR(20) COMMENT '子评论ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9

# 推荐表

  • id-ID
  • my_id-推荐内容的ID
  • state-状态:0表示下架,1表示上架
  • order-顺序
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_recommend`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `my_id` VARCHAR(20) COMMENT '摸鱼ID',
  `state` VARCHAR(1) COMMENT '状态:1表示上加,0表示下架',
  `order` INT COMMENT '顺序',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9

# 举报内容表

  • id-ID
  • user_id-举报者的ID
  • url-链接地址
  • why-原因
  • state-状态,0表示未处理,1表示已经处理
  • mark-备注
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_report`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `why` VARCHAR(128) COMMENT '原因',
  `state` VARCHAR(1) COMMENT '处理状态:0未处理,2不予处理,3处理完成',
  `mark` VARCHAR(128) COMMENT '备注内容',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9
10

# 积分表

积分触发动作表

  • id-ID
  • name-触发名称,比如说发表动态奖励,删除动态扣积分,举报扣积分,举报被扣分,这个内容自动生成,通过注解在接口处生成
  • label-人看的内容
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_reward_action`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `name` VARCHAR(64) COMMENT '打赏/扣积分动作的名字',
  `label` VARCHAR(64) COMMENT '标签,人看的',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8

以上这个表,通过注解自动填充,没有修改,删除的动作,程序启动,自动填充数据库

积分策略表

  • id-ID
  • value-积分值,比如说:2,可以是负数
  • tax-税
  • action_id-动作ID,触发此条积分策略的动作
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_reward`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `value` INT COMMENT '值',
  `tax` INT COMMENT '税,百分比0~5',
  `action_id` VARCHAR(20) COMMENT '打赏/扣除动作ID',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8
9

积分记录表

  • id-ID
  • to_user_id-用户ID
  • from_user_id-用户ID
  • value-积分值,正负都可以
  • content-原因
  • tax-税
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `my_reward_record` (
  `id` varchar(20) NOT NULL COMMENT 'ID',
  `to_user_id` varchar(20) DEFAULT NULL COMMENT '收到用户ID',
  `from_user_id` varchar(20) DEFAULT NULL COMMENT '出积分用户ID,有可能是系统',
  `value` int(11) DEFAULT NULL COMMENT '值',
  `content` varchar(62) DEFAULT NULL COMMENT '内容',
  `tax` int(11) DEFAULT NULL COMMENT '税',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1
2
3
4
5
6
7
8
9
10
11

积分总数表

  • id-ID
  • user_id-用户ID
  • total-总数
  • create_time-创建时间
  • update_time-更新时间
CREATE TABLE `mo_yu_content`.`my_reward_total`(  
  `id` VARCHAR(20) NOT NULL COMMENT 'ID',
  `user_id` VARCHAR(20) COMMENT '用户ID',
  `total` INT COMMENT '总数',
  `create_time` DATETIME COMMENT '创建时间',
  `update_time` DATETIME COMMENT '更新时间',
  PRIMARY KEY (`id`)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
1
2
3
4
5
6
7
8

# 代码生成

package net.sunofbeach.my;

public class GeneratorCodes {

    public static void main(String[] args) {
        // 代码生成器
        AutoGenerator mpg = new AutoGenerator();

        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        gc.setOutputDir("D:\\code\\MoYuJun\\moyu\\src\\main\\java");
        gc.setAuthor("sob");
        gc.setOpen(false);//生成以后是否打开文件夹
        gc.setSwagger2(true);//实体属性 Swagger2 注解
        gc.setDateType(DateType.ONLY_DATE);//把时间类型,使用Date类型
        gc.setFileOverride(true);//true表示覆盖原来的
        mpg.setGlobalConfig(gc);

        // 数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://192.168.220.128:3306/mo_yu_content?characterEncoding=utf-8&useSSL=false&useUnicode=true");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
        mpg.setDataSource(dsc);

        // 包配置
        PackageConfig pc = new PackageConfig();
        pc.setModuleName("my");
        pc.setParent("net.sunofbeach");
        pc.setController("api");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setEntity("pojo");
        mpg.setPackageInfo(pc);


        // 策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setNaming(NamingStrategy.underline_to_camel);
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);
        strategy.setRestControllerStyle(true);
        //多个表的时候,写多个就可以
        strategy.setInclude("my_comment","my_comment_thumb_up","my_fish","my_recommend","my_report","my_reward","my_reward_action","my_reward_record","my_reward_total","my_sub_comment","my_sub_comment_thumb_up","my_thumb_up","my_topic","my_topic_follow");
        strategy.setControllerMappingHyphenStyle(true);
        strategy.setTablePrefix(pc.getModuleName() + "_");
        mpg.setStrategy(strategy);
        mpg.execute();
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
上次更新: 2022/03/28, 23:04:38