mirror of
https://github.com/201206030/novel-cloud.git
synced 2025-08-24 17:42:42 +00:00
refactor: 基于 novel 项目 & Spring Cloud 2022 & Spring Cloud Alibaba 2022 重构
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>novel-cloud</artifactId>
|
||||
<groupId>com.java2nb.novel</groupId>
|
||||
<version>1.3.0</version>
|
||||
<groupId>io.github.xxyopen</groupId>
|
||||
<version>2.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@@ -13,62 +13,37 @@
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.java2nb.novel</groupId>
|
||||
<artifactId>book-api</artifactId>
|
||||
<groupId>io.github.xxyopen</groupId>
|
||||
<artifactId>novel-config</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.java2nb.novel</groupId>
|
||||
<artifactId>news-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
<groupId>io.github.xxyopen</groupId>
|
||||
<artifactId>novel-book-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-openfeign</artifactId>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
<!--<plugin>
|
||||
<groupId>com.spotify</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<version>${docker.maven.plugin.version}</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>build-image</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>build</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<imageName>201206030/${project.artifactId}:${project.version}</imageName>
|
||||
<dockerHost>${docker.host}</dockerHost>
|
||||
<baseImage>java:8</baseImage>
|
||||
<entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint>
|
||||
<resources>
|
||||
<resource>
|
||||
<targetPath>/</targetPath>
|
||||
<directory>${project.build.directory}</directory>
|
||||
<include>${project.build.finalName}.jar</include>
|
||||
</resource>
|
||||
</resources>
|
||||
<excludes>
|
||||
<exclude>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>-->
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
|
||||
</project>
|
@@ -1,20 +0,0 @@
|
||||
package com.java2nb.novel;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
/**
|
||||
* 首页微服务启动器
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/27
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableFeignClients
|
||||
public class HomeApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(HomeApplication.class);
|
||||
}
|
||||
}
|
@@ -1,89 +0,0 @@
|
||||
package com.java2nb.novel.home.controller;
|
||||
|
||||
import com.java2nb.novel.book.entity.Book;
|
||||
import com.java2nb.novel.book.vo.BookVO;
|
||||
import com.java2nb.novel.common.bean.ResultBean;
|
||||
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||
import com.java2nb.novel.home.service.HomeService;
|
||||
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||
import com.java2nb.novel.news.entity.News;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页微服务对外接口
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/28
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("home")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
@Api(tags = "首页相关接口")
|
||||
public class HomeController {
|
||||
|
||||
private final HomeService homeService;
|
||||
|
||||
/**
|
||||
* 首页小说推荐数据查询接口
|
||||
* */
|
||||
@ApiOperation("首页小说推荐列表查询接口")
|
||||
@GetMapping("book")
|
||||
public ResultBean<List<HomeBookVO>> listHomeBook(){
|
||||
return ResultBean.ok(homeService.listHomeBook());
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页友情链接查询接口
|
||||
* */
|
||||
@ApiOperation("首页友情链接查询接口")
|
||||
@GetMapping("friendLink")
|
||||
public ResultBean<List<HomeFriendLink>> listIndexLink(){
|
||||
return ResultBean.ok(homeService.listFriendLink());
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页新闻查询接口
|
||||
* */
|
||||
@ApiOperation("首页新闻查询接口")
|
||||
@GetMapping("news")
|
||||
public ResultBean<List<News>> listIndexNews(){
|
||||
return ResultBean.ok(homeService.listIndexNews());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 首页点击榜单查询接口
|
||||
* */
|
||||
@ApiOperation("首页点击榜单查询接口")
|
||||
@GetMapping("listClickRank")
|
||||
public ResultBean<List<Book>> listClickRank(){
|
||||
return ResultBean.ok(homeService.listClickRank());
|
||||
}
|
||||
/**
|
||||
* 首页新书榜单查询接口
|
||||
* */
|
||||
@ApiOperation("首页点击榜单查询接口")
|
||||
@GetMapping("listNewRank")
|
||||
public ResultBean<List<Book>> listNewRank(){
|
||||
return ResultBean.ok(homeService.listNewRank());
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页更新榜单查询接口
|
||||
* */
|
||||
@ApiOperation("首页点击榜单查询接口")
|
||||
@GetMapping("listUpdateRank")
|
||||
public ResultBean<List<BookVO>> listUpdateRank(){
|
||||
return ResultBean.ok(homeService.listUpdateRank());
|
||||
}
|
||||
|
||||
}
|
@@ -1,119 +0,0 @@
|
||||
package com.java2nb.novel.home.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.util.Date;
|
||||
|
||||
public class HomeBook {
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty(value = "小说ID")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long bookId;
|
||||
|
||||
@ApiModelProperty(value = "排序号")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Byte sort;
|
||||
|
||||
@ApiModelProperty(value = "类型,0:轮播图,1:顶部小说栏设置,2:本周强推,3:热门推荐,4:精品推荐")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Byte type;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "创建人ID")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long createUserId;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Date updateTime;
|
||||
|
||||
@ApiModelProperty(value = "更新人ID")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long updateUserId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getBookId() {
|
||||
return bookId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setBookId(Long bookId) {
|
||||
this.bookId = bookId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Byte getSort() {
|
||||
return sort;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setSort(Byte sort) {
|
||||
this.sort = sort;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Byte getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setType(Byte type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getCreateUserId() {
|
||||
return createUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setCreateUserId(Long createUserId) {
|
||||
this.createUserId = createUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getUpdateUserId() {
|
||||
return updateUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setUpdateUserId(Long updateUserId) {
|
||||
this.updateUserId = updateUserId;
|
||||
}
|
||||
}
|
@@ -1,134 +0,0 @@
|
||||
package com.java2nb.novel.home.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.util.Date;
|
||||
|
||||
public class HomeFriendLink {
|
||||
@ApiModelProperty(value = "主键")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "链接名")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private String linkName;
|
||||
|
||||
@ApiModelProperty(value = "链接url")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private String linkUrl;
|
||||
|
||||
@ApiModelProperty(value = "排序号")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Byte sort;
|
||||
|
||||
@ApiModelProperty(value = "是否开启,0:不开启,1:开启")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Byte isOpen;
|
||||
|
||||
@ApiModelProperty(value = "创建人id")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long createUserId;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Date createTime;
|
||||
|
||||
@ApiModelProperty(value = "更新者用户id")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Long updateUserId;
|
||||
|
||||
@ApiModelProperty(value = "更新时间")
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
private Date updateTime;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Integer getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setId(Integer id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public String getLinkName() {
|
||||
return linkName;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setLinkName(String linkName) {
|
||||
this.linkName = linkName == null ? null : linkName.trim();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public String getLinkUrl() {
|
||||
return linkUrl;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setLinkUrl(String linkUrl) {
|
||||
this.linkUrl = linkUrl == null ? null : linkUrl.trim();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Byte getSort() {
|
||||
return sort;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setSort(Byte sort) {
|
||||
this.sort = sort;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Byte getIsOpen() {
|
||||
return isOpen;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setIsOpen(Byte isOpen) {
|
||||
this.isOpen = isOpen;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getCreateUserId() {
|
||||
return createUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setCreateUserId(Long createUserId) {
|
||||
this.createUserId = createUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Long getUpdateUserId() {
|
||||
return updateUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setUpdateUserId(Long updateUserId) {
|
||||
this.updateUserId = updateUserId;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
}
|
@@ -1,18 +0,0 @@
|
||||
package com.java2nb.novel.home.feign;
|
||||
|
||||
import com.java2nb.novel.book.api.BookApi;
|
||||
import com.java2nb.novel.home.feign.fallback.BookFeignFallback;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* 小说服务Feign客户端
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/28
|
||||
*/
|
||||
|
||||
@FeignClient(name = "book-service",fallback = BookFeignFallback.class)
|
||||
public interface BookFeignClient extends BookApi {
|
||||
|
||||
|
||||
}
|
@@ -1,16 +0,0 @@
|
||||
package com.java2nb.novel.home.feign;
|
||||
|
||||
import com.java2nb.novel.book.api.BookApi;
|
||||
import com.java2nb.novel.news.api.NewsApi;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
|
||||
/**
|
||||
* 新闻服务Feign客户端
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/28
|
||||
*/
|
||||
@FeignClient("news-service")
|
||||
public interface NewsFeignClient extends NewsApi {
|
||||
|
||||
}
|
@@ -1,15 +0,0 @@
|
||||
package com.java2nb.novel.home.feign.fallback;
|
||||
|
||||
import com.java2nb.novel.book.api.fallback.BookApiFallback;
|
||||
import com.java2nb.novel.home.feign.BookFeignClient;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 小说Feign客户端降级处理类(服务消费端,自定义降级处理)
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/6/7
|
||||
*/
|
||||
@Service
|
||||
public class BookFeignFallback extends BookApiFallback implements BookFeignClient {
|
||||
}
|
@@ -1,60 +0,0 @@
|
||||
package com.java2nb.novel.home.mapper;
|
||||
|
||||
import org.mybatis.dynamic.sql.SqlColumn;
|
||||
import org.mybatis.dynamic.sql.SqlTable;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.sql.JDBCType;
|
||||
import java.util.Date;
|
||||
|
||||
public final class HomeBookDynamicSqlSupport {
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final HomeBook homeBook = new HomeBook();
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> id = homeBook.id;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> bookId = homeBook.bookId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Byte> sort = homeBook.sort;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Byte> type = homeBook.type;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Date> createTime = homeBook.createTime;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> createUserId = homeBook.createUserId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Date> updateTime = homeBook.updateTime;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> updateUserId = homeBook.updateUserId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final class HomeBook extends SqlTable {
|
||||
public final SqlColumn<Long> id = column("id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<Long> bookId = column("book_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<Byte> sort = column("sort", JDBCType.TINYINT);
|
||||
|
||||
public final SqlColumn<Byte> type = column("type", JDBCType.TINYINT);
|
||||
|
||||
public final SqlColumn<Date> createTime = column("create_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<Long> createUserId = column("create_user_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<Date> updateTime = column("update_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<Long> updateUserId = column("update_user_id", JDBCType.BIGINT);
|
||||
|
||||
public HomeBook() {
|
||||
super("home_book");
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,192 +0,0 @@
|
||||
package com.java2nb.novel.home.mapper;
|
||||
|
||||
import com.java2nb.novel.home.entity.HomeBook;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.dynamic.sql.SqlBuilder;
|
||||
import org.mybatis.dynamic.sql.delete.DeleteDSL;
|
||||
import org.mybatis.dynamic.sql.delete.MyBatis3DeleteModelAdapter;
|
||||
import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider;
|
||||
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider;
|
||||
import org.mybatis.dynamic.sql.render.RenderingStrategy;
|
||||
import org.mybatis.dynamic.sql.select.MyBatis3SelectModelAdapter;
|
||||
import org.mybatis.dynamic.sql.select.QueryExpressionDSL;
|
||||
import org.mybatis.dynamic.sql.select.SelectDSL;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
import org.mybatis.dynamic.sql.update.MyBatis3UpdateModelAdapter;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSL;
|
||||
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
|
||||
import org.mybatis.dynamic.sql.util.SqlProviderAdapter;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.util.List;
|
||||
|
||||
import static com.java2nb.novel.home.mapper.HomeBookDynamicSqlSupport.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
|
||||
@Mapper
|
||||
public interface HomeBookMapper {
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
long count(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@DeleteProvider(type=SqlProviderAdapter.class, method="delete")
|
||||
int delete(DeleteStatementProvider deleteStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@InsertProvider(type=SqlProviderAdapter.class, method="insert")
|
||||
int insert(InsertStatementProvider<HomeBook> insertStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@ResultMap("HomeBookResult")
|
||||
HomeBook selectOne(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@Results(id="HomeBookResult", value = {
|
||||
@Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true),
|
||||
@Result(column="book_id", property="bookId", jdbcType=JdbcType.BIGINT),
|
||||
@Result(column="sort", property="sort", jdbcType=JdbcType.TINYINT),
|
||||
@Result(column="type", property="type", jdbcType=JdbcType.TINYINT),
|
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="create_user_id", property="createUserId", jdbcType=JdbcType.BIGINT),
|
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="update_user_id", property="updateUserId", jdbcType=JdbcType.BIGINT)
|
||||
})
|
||||
List<HomeBook> selectMany(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@UpdateProvider(type=SqlProviderAdapter.class, method="update")
|
||||
int update(UpdateStatementProvider updateStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<Long>> countByExample() {
|
||||
return SelectDSL.selectWithMapper(this::count, SqlBuilder.count())
|
||||
.from(homeBook);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default DeleteDSL<MyBatis3DeleteModelAdapter<Integer>> deleteByExample() {
|
||||
return DeleteDSL.deleteFromWithMapper(this::delete, homeBook);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int deleteByPrimaryKey(Long id_) {
|
||||
return DeleteDSL.deleteFromWithMapper(this::delete, homeBook)
|
||||
.where(id, isEqualTo(id_))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int insert(HomeBook record) {
|
||||
return insert(SqlBuilder.insert(record)
|
||||
.into(homeBook)
|
||||
.map(id).toProperty("id")
|
||||
.map(bookId).toProperty("bookId")
|
||||
.map(sort).toProperty("sort")
|
||||
.map(type).toProperty("type")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(createUserId).toProperty("createUserId")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.map(updateUserId).toProperty("updateUserId")
|
||||
.build()
|
||||
.render(RenderingStrategy.MYBATIS3));
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int insertSelective(HomeBook record) {
|
||||
return insert(SqlBuilder.insert(record)
|
||||
.into(homeBook)
|
||||
.map(id).toPropertyWhenPresent("id", record::getId)
|
||||
.map(bookId).toPropertyWhenPresent("bookId", record::getBookId)
|
||||
.map(sort).toPropertyWhenPresent("sort", record::getSort)
|
||||
.map(type).toPropertyWhenPresent("type", record::getType)
|
||||
.map(createTime).toPropertyWhenPresent("createTime", record::getCreateTime)
|
||||
.map(createUserId).toPropertyWhenPresent("createUserId", record::getCreateUserId)
|
||||
.map(updateTime).toPropertyWhenPresent("updateTime", record::getUpdateTime)
|
||||
.map(updateUserId).toPropertyWhenPresent("updateUserId", record::getUpdateUserId)
|
||||
.build()
|
||||
.render(RenderingStrategy.MYBATIS3));
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<List<HomeBook>>> selectByExample() {
|
||||
return SelectDSL.selectWithMapper(this::selectMany, id, bookId, sort, type, createTime, createUserId, updateTime, updateUserId)
|
||||
.from(homeBook);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<List<HomeBook>>> selectDistinctByExample() {
|
||||
return SelectDSL.selectDistinctWithMapper(this::selectMany, id, bookId, sort, type, createTime, createUserId, updateTime, updateUserId)
|
||||
.from(homeBook);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default HomeBook selectByPrimaryKey(Long id_) {
|
||||
return SelectDSL.selectWithMapper(this::selectOne, id, bookId, sort, type, createTime, createUserId, updateTime, updateUserId)
|
||||
.from(homeBook)
|
||||
.where(id, isEqualTo(id_))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default UpdateDSL<MyBatis3UpdateModelAdapter<Integer>> updateByExample(HomeBook record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeBook)
|
||||
.set(id).equalTo(record::getId)
|
||||
.set(bookId).equalTo(record::getBookId)
|
||||
.set(sort).equalTo(record::getSort)
|
||||
.set(type).equalTo(record::getType)
|
||||
.set(createTime).equalTo(record::getCreateTime)
|
||||
.set(createUserId).equalTo(record::getCreateUserId)
|
||||
.set(updateTime).equalTo(record::getUpdateTime)
|
||||
.set(updateUserId).equalTo(record::getUpdateUserId);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default UpdateDSL<MyBatis3UpdateModelAdapter<Integer>> updateByExampleSelective(HomeBook record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeBook)
|
||||
.set(id).equalToWhenPresent(record::getId)
|
||||
.set(bookId).equalToWhenPresent(record::getBookId)
|
||||
.set(sort).equalToWhenPresent(record::getSort)
|
||||
.set(type).equalToWhenPresent(record::getType)
|
||||
.set(createTime).equalToWhenPresent(record::getCreateTime)
|
||||
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
|
||||
.set(updateTime).equalToWhenPresent(record::getUpdateTime)
|
||||
.set(updateUserId).equalToWhenPresent(record::getUpdateUserId);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int updateByPrimaryKey(HomeBook record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeBook)
|
||||
.set(bookId).equalTo(record::getBookId)
|
||||
.set(sort).equalTo(record::getSort)
|
||||
.set(type).equalTo(record::getType)
|
||||
.set(createTime).equalTo(record::getCreateTime)
|
||||
.set(createUserId).equalTo(record::getCreateUserId)
|
||||
.set(updateTime).equalTo(record::getUpdateTime)
|
||||
.set(updateUserId).equalTo(record::getUpdateUserId)
|
||||
.where(id, isEqualTo(record::getId))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int updateByPrimaryKeySelective(HomeBook record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeBook)
|
||||
.set(bookId).equalToWhenPresent(record::getBookId)
|
||||
.set(sort).equalToWhenPresent(record::getSort)
|
||||
.set(type).equalToWhenPresent(record::getType)
|
||||
.set(createTime).equalToWhenPresent(record::getCreateTime)
|
||||
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
|
||||
.set(updateTime).equalToWhenPresent(record::getUpdateTime)
|
||||
.set(updateUserId).equalToWhenPresent(record::getUpdateUserId)
|
||||
.where(id, isEqualTo(record::getId))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
}
|
@@ -1,65 +0,0 @@
|
||||
package com.java2nb.novel.home.mapper;
|
||||
|
||||
import org.mybatis.dynamic.sql.SqlColumn;
|
||||
import org.mybatis.dynamic.sql.SqlTable;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.sql.JDBCType;
|
||||
import java.util.Date;
|
||||
|
||||
public final class HomeFriendLinkDynamicSqlSupport {
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final HomeFriendLink homeFriendLink = new HomeFriendLink();
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Integer> id = homeFriendLink.id;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<String> linkName = homeFriendLink.linkName;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<String> linkUrl = homeFriendLink.linkUrl;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Byte> sort = homeFriendLink.sort;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Byte> isOpen = homeFriendLink.isOpen;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> createUserId = homeFriendLink.createUserId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Date> createTime = homeFriendLink.createTime;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Long> updateUserId = homeFriendLink.updateUserId;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final SqlColumn<Date> updateTime = homeFriendLink.updateTime;
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
public static final class HomeFriendLink extends SqlTable {
|
||||
public final SqlColumn<Integer> id = column("id", JDBCType.INTEGER);
|
||||
|
||||
public final SqlColumn<String> linkName = column("link_name", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<String> linkUrl = column("link_url", JDBCType.VARCHAR);
|
||||
|
||||
public final SqlColumn<Byte> sort = column("sort", JDBCType.TINYINT);
|
||||
|
||||
public final SqlColumn<Byte> isOpen = column("is_open", JDBCType.TINYINT);
|
||||
|
||||
public final SqlColumn<Long> createUserId = column("create_user_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<Date> createTime = column("create_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public final SqlColumn<Long> updateUserId = column("update_user_id", JDBCType.BIGINT);
|
||||
|
||||
public final SqlColumn<Date> updateTime = column("update_time", JDBCType.TIMESTAMP);
|
||||
|
||||
public HomeFriendLink() {
|
||||
super("home_friend_link");
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,199 +0,0 @@
|
||||
package com.java2nb.novel.home.mapper;
|
||||
|
||||
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||
import org.apache.ibatis.annotations.*;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import org.mybatis.dynamic.sql.SqlBuilder;
|
||||
import org.mybatis.dynamic.sql.delete.DeleteDSL;
|
||||
import org.mybatis.dynamic.sql.delete.MyBatis3DeleteModelAdapter;
|
||||
import org.mybatis.dynamic.sql.delete.render.DeleteStatementProvider;
|
||||
import org.mybatis.dynamic.sql.insert.render.InsertStatementProvider;
|
||||
import org.mybatis.dynamic.sql.render.RenderingStrategy;
|
||||
import org.mybatis.dynamic.sql.select.MyBatis3SelectModelAdapter;
|
||||
import org.mybatis.dynamic.sql.select.QueryExpressionDSL;
|
||||
import org.mybatis.dynamic.sql.select.SelectDSL;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
import org.mybatis.dynamic.sql.update.MyBatis3UpdateModelAdapter;
|
||||
import org.mybatis.dynamic.sql.update.UpdateDSL;
|
||||
import org.mybatis.dynamic.sql.update.render.UpdateStatementProvider;
|
||||
import org.mybatis.dynamic.sql.util.SqlProviderAdapter;
|
||||
|
||||
import javax.annotation.Generated;
|
||||
import java.util.List;
|
||||
|
||||
import static com.java2nb.novel.home.mapper.HomeFriendLinkDynamicSqlSupport.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.*;
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
|
||||
@Mapper
|
||||
public interface HomeFriendLinkMapper {
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
long count(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@DeleteProvider(type=SqlProviderAdapter.class, method="delete")
|
||||
int delete(DeleteStatementProvider deleteStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@InsertProvider(type=SqlProviderAdapter.class, method="insert")
|
||||
int insert(InsertStatementProvider<HomeFriendLink> insertStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@ResultMap("HomeFriendLinkResult")
|
||||
HomeFriendLink selectOne(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@SelectProvider(type=SqlProviderAdapter.class, method="select")
|
||||
@Results(id="HomeFriendLinkResult", value = {
|
||||
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
|
||||
@Result(column="link_name", property="linkName", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="link_url", property="linkUrl", jdbcType=JdbcType.VARCHAR),
|
||||
@Result(column="sort", property="sort", jdbcType=JdbcType.TINYINT),
|
||||
@Result(column="is_open", property="isOpen", jdbcType=JdbcType.TINYINT),
|
||||
@Result(column="create_user_id", property="createUserId", jdbcType=JdbcType.BIGINT),
|
||||
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
|
||||
@Result(column="update_user_id", property="updateUserId", jdbcType=JdbcType.BIGINT),
|
||||
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP)
|
||||
})
|
||||
List<HomeFriendLink> selectMany(SelectStatementProvider selectStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
@UpdateProvider(type=SqlProviderAdapter.class, method="update")
|
||||
int update(UpdateStatementProvider updateStatement);
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<Long>> countByExample() {
|
||||
return SelectDSL.selectWithMapper(this::count, SqlBuilder.count())
|
||||
.from(homeFriendLink);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default DeleteDSL<MyBatis3DeleteModelAdapter<Integer>> deleteByExample() {
|
||||
return DeleteDSL.deleteFromWithMapper(this::delete, homeFriendLink);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int deleteByPrimaryKey(Integer id_) {
|
||||
return DeleteDSL.deleteFromWithMapper(this::delete, homeFriendLink)
|
||||
.where(id, isEqualTo(id_))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int insert(HomeFriendLink record) {
|
||||
return insert(SqlBuilder.insert(record)
|
||||
.into(homeFriendLink)
|
||||
.map(id).toProperty("id")
|
||||
.map(linkName).toProperty("linkName")
|
||||
.map(linkUrl).toProperty("linkUrl")
|
||||
.map(sort).toProperty("sort")
|
||||
.map(isOpen).toProperty("isOpen")
|
||||
.map(createUserId).toProperty("createUserId")
|
||||
.map(createTime).toProperty("createTime")
|
||||
.map(updateUserId).toProperty("updateUserId")
|
||||
.map(updateTime).toProperty("updateTime")
|
||||
.build()
|
||||
.render(RenderingStrategy.MYBATIS3));
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int insertSelective(HomeFriendLink record) {
|
||||
return insert(SqlBuilder.insert(record)
|
||||
.into(homeFriendLink)
|
||||
.map(id).toPropertyWhenPresent("id", record::getId)
|
||||
.map(linkName).toPropertyWhenPresent("linkName", record::getLinkName)
|
||||
.map(linkUrl).toPropertyWhenPresent("linkUrl", record::getLinkUrl)
|
||||
.map(sort).toPropertyWhenPresent("sort", record::getSort)
|
||||
.map(isOpen).toPropertyWhenPresent("isOpen", record::getIsOpen)
|
||||
.map(createUserId).toPropertyWhenPresent("createUserId", record::getCreateUserId)
|
||||
.map(createTime).toPropertyWhenPresent("createTime", record::getCreateTime)
|
||||
.map(updateUserId).toPropertyWhenPresent("updateUserId", record::getUpdateUserId)
|
||||
.map(updateTime).toPropertyWhenPresent("updateTime", record::getUpdateTime)
|
||||
.build()
|
||||
.render(RenderingStrategy.MYBATIS3));
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<List<HomeFriendLink>>> selectByExample() {
|
||||
return SelectDSL.selectWithMapper(this::selectMany, id, linkName, linkUrl, sort, isOpen, createUserId, createTime, updateUserId, updateTime)
|
||||
.from(homeFriendLink);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default QueryExpressionDSL<MyBatis3SelectModelAdapter<List<HomeFriendLink>>> selectDistinctByExample() {
|
||||
return SelectDSL.selectDistinctWithMapper(this::selectMany, id, linkName, linkUrl, sort, isOpen, createUserId, createTime, updateUserId, updateTime)
|
||||
.from(homeFriendLink);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default HomeFriendLink selectByPrimaryKey(Integer id_) {
|
||||
return SelectDSL.selectWithMapper(this::selectOne, id, linkName, linkUrl, sort, isOpen, createUserId, createTime, updateUserId, updateTime)
|
||||
.from(homeFriendLink)
|
||||
.where(id, isEqualTo(id_))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default UpdateDSL<MyBatis3UpdateModelAdapter<Integer>> updateByExample(HomeFriendLink record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeFriendLink)
|
||||
.set(id).equalTo(record::getId)
|
||||
.set(linkName).equalTo(record::getLinkName)
|
||||
.set(linkUrl).equalTo(record::getLinkUrl)
|
||||
.set(sort).equalTo(record::getSort)
|
||||
.set(isOpen).equalTo(record::getIsOpen)
|
||||
.set(createUserId).equalTo(record::getCreateUserId)
|
||||
.set(createTime).equalTo(record::getCreateTime)
|
||||
.set(updateUserId).equalTo(record::getUpdateUserId)
|
||||
.set(updateTime).equalTo(record::getUpdateTime);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default UpdateDSL<MyBatis3UpdateModelAdapter<Integer>> updateByExampleSelective(HomeFriendLink record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeFriendLink)
|
||||
.set(id).equalToWhenPresent(record::getId)
|
||||
.set(linkName).equalToWhenPresent(record::getLinkName)
|
||||
.set(linkUrl).equalToWhenPresent(record::getLinkUrl)
|
||||
.set(sort).equalToWhenPresent(record::getSort)
|
||||
.set(isOpen).equalToWhenPresent(record::getIsOpen)
|
||||
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
|
||||
.set(createTime).equalToWhenPresent(record::getCreateTime)
|
||||
.set(updateUserId).equalToWhenPresent(record::getUpdateUserId)
|
||||
.set(updateTime).equalToWhenPresent(record::getUpdateTime);
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int updateByPrimaryKey(HomeFriendLink record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeFriendLink)
|
||||
.set(linkName).equalTo(record::getLinkName)
|
||||
.set(linkUrl).equalTo(record::getLinkUrl)
|
||||
.set(sort).equalTo(record::getSort)
|
||||
.set(isOpen).equalTo(record::getIsOpen)
|
||||
.set(createUserId).equalTo(record::getCreateUserId)
|
||||
.set(createTime).equalTo(record::getCreateTime)
|
||||
.set(updateUserId).equalTo(record::getUpdateUserId)
|
||||
.set(updateTime).equalTo(record::getUpdateTime)
|
||||
.where(id, isEqualTo(record::getId))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
|
||||
@Generated("org.mybatis.generator.api.MyBatisGenerator")
|
||||
default int updateByPrimaryKeySelective(HomeFriendLink record) {
|
||||
return UpdateDSL.updateWithMapper(this::update, homeFriendLink)
|
||||
.set(linkName).equalToWhenPresent(record::getLinkName)
|
||||
.set(linkUrl).equalToWhenPresent(record::getLinkUrl)
|
||||
.set(sort).equalToWhenPresent(record::getSort)
|
||||
.set(isOpen).equalToWhenPresent(record::getIsOpen)
|
||||
.set(createUserId).equalToWhenPresent(record::getCreateUserId)
|
||||
.set(createTime).equalToWhenPresent(record::getCreateTime)
|
||||
.set(updateUserId).equalToWhenPresent(record::getUpdateUserId)
|
||||
.set(updateTime).equalToWhenPresent(record::getUpdateTime)
|
||||
.where(id, isEqualTo(record::getId))
|
||||
.build()
|
||||
.execute();
|
||||
}
|
||||
}
|
@@ -1,56 +0,0 @@
|
||||
package com.java2nb.novel.home.service;
|
||||
|
||||
|
||||
import com.java2nb.novel.book.entity.Book;
|
||||
import com.java2nb.novel.book.vo.BookVO;
|
||||
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||
import com.java2nb.novel.news.entity.News;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页服务接口
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/28
|
||||
*/
|
||||
public interface HomeService {
|
||||
|
||||
/**
|
||||
* 首页小说推荐数据查询
|
||||
* @return 首页推荐的小说数据
|
||||
* */
|
||||
List<HomeBookVO> listHomeBook();
|
||||
|
||||
|
||||
/**
|
||||
* 首页友情链接查询
|
||||
* @return 友情链接集合
|
||||
* */
|
||||
List<HomeFriendLink> listFriendLink();
|
||||
|
||||
/**
|
||||
* 查询首页新闻
|
||||
* @return 新闻列表集合
|
||||
* */
|
||||
List<News> listIndexNews();
|
||||
|
||||
/**
|
||||
* 首页点击榜单查询接口
|
||||
* @return 小说数据集合
|
||||
* */
|
||||
List<Book> listClickRank();
|
||||
|
||||
/**
|
||||
* 首页新书榜单查询接口
|
||||
* @return 小说数据集合
|
||||
* */
|
||||
List<Book> listNewRank();
|
||||
|
||||
/**
|
||||
* 首页更新榜单查询接口
|
||||
* @return 小说数据集合
|
||||
* */
|
||||
List<BookVO> listUpdateRank();
|
||||
}
|
@@ -1,147 +0,0 @@
|
||||
package com.java2nb.novel.home.service.impl;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.java2nb.novel.book.entity.Book;
|
||||
import com.java2nb.novel.book.vo.BookVO;
|
||||
import com.java2nb.novel.common.cache.CacheKey;
|
||||
import com.java2nb.novel.common.cache.CacheService;
|
||||
import com.java2nb.novel.common.utils.BeanUtil;
|
||||
import com.java2nb.novel.common.utils.Constants;
|
||||
import com.java2nb.novel.home.entity.HomeBook;
|
||||
import com.java2nb.novel.home.entity.HomeFriendLink;
|
||||
import com.java2nb.novel.home.feign.BookFeignClient;
|
||||
import com.java2nb.novel.home.feign.NewsFeignClient;
|
||||
import com.java2nb.novel.home.mapper.HomeBookDynamicSqlSupport;
|
||||
import com.java2nb.novel.home.mapper.HomeBookMapper;
|
||||
import com.java2nb.novel.home.mapper.HomeFriendLinkDynamicSqlSupport;
|
||||
import com.java2nb.novel.home.mapper.HomeFriendLinkMapper;
|
||||
import com.java2nb.novel.home.service.HomeService;
|
||||
import com.java2nb.novel.home.vo.HomeBookVO;
|
||||
import com.java2nb.novel.news.entity.News;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import org.mybatis.dynamic.sql.render.RenderingStrategies;
|
||||
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
|
||||
import static org.mybatis.dynamic.sql.select.SelectDSL.select;
|
||||
|
||||
/**
|
||||
* 首页服务接口实现
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/28
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class HomeServiceImpl implements HomeService {
|
||||
|
||||
private final CacheService cacheService;
|
||||
|
||||
private final BookFeignClient bookFeignClient;
|
||||
|
||||
private final HomeBookMapper homeBookMapper;
|
||||
|
||||
private final HomeFriendLinkMapper homeFriendLinkMapper;
|
||||
|
||||
private final NewsFeignClient newsFeignClient;
|
||||
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public List<HomeBookVO> listHomeBook() {
|
||||
String result = cacheService.get(CacheKey.INDEX_BOOK_SETTINGS_KEY);
|
||||
if (result == null || result.length() < Constants.OBJECT_JSON_CACHE_EXIST_LENGTH) {
|
||||
List<HomeBook> list = homeBookMapper.selectMany(
|
||||
select(HomeBookDynamicSqlSupport.bookId,HomeBookDynamicSqlSupport.type)
|
||||
.from(HomeBookDynamicSqlSupport.homeBook)
|
||||
.orderBy(HomeBookDynamicSqlSupport.type,HomeBookDynamicSqlSupport.sort)
|
||||
.build()
|
||||
.render(RenderingStrategies.MYBATIS3));
|
||||
List<Book> books = bookFeignClient.queryBookByIds(list.stream().map(HomeBook::getBookId).collect(Collectors.toList()));
|
||||
Map<Long, Book> booksById = books.stream().collect(Collectors.toMap(Book::getId, Function.identity(),(key1, key2) -> key2));
|
||||
|
||||
List<HomeBookVO> resultList = new ArrayList<>(booksById.size());
|
||||
for(HomeBook homeBook : list){
|
||||
HomeBookVO homeBookVO = new HomeBookVO();
|
||||
BeanUtils.copyProperties(homeBook,homeBookVO);
|
||||
Book book = booksById.get(homeBook.getBookId());
|
||||
if(book != null){
|
||||
BeanUtils.copyProperties(book,homeBookVO);
|
||||
resultList.add(homeBookVO);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
result = new ObjectMapper().writeValueAsString(resultList);
|
||||
cacheService.set(CacheKey.INDEX_BOOK_SETTINGS_KEY, result);
|
||||
}
|
||||
return new ObjectMapper().readValue(result, List.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HomeFriendLink> listFriendLink() {
|
||||
List<HomeFriendLink> result = (List<HomeFriendLink>) cacheService.getObject(CacheKey.INDEX_LINK_KEY);
|
||||
if(result == null || result.size() == 0) {
|
||||
SelectStatementProvider selectStatement =
|
||||
select(HomeFriendLinkDynamicSqlSupport.linkName,HomeFriendLinkDynamicSqlSupport.linkUrl)
|
||||
.from(HomeFriendLinkDynamicSqlSupport.homeFriendLink)
|
||||
.where(HomeFriendLinkDynamicSqlSupport.isOpen,isEqualTo((byte)1))
|
||||
.orderBy(HomeFriendLinkDynamicSqlSupport.sort)
|
||||
.build()
|
||||
.render(RenderingStrategies.MYBATIS3);
|
||||
result = homeFriendLinkMapper.selectMany(selectStatement);
|
||||
cacheService.setObject(CacheKey.INDEX_LINK_KEY,result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<News> listIndexNews() {
|
||||
List<News> result = (List<News>) cacheService.getObject(CacheKey.INDEX_NEWS_KEY);
|
||||
if(result == null || result.size() == 0) {
|
||||
result = newsFeignClient.listLastIndexNews(2);
|
||||
cacheService.setObject(CacheKey.INDEX_NEWS_KEY,result);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Book> listClickRank() {
|
||||
List<Book> result = (List<Book>) cacheService.getObject(CacheKey.INDEX_CLICK_BANK_BOOK_KEY);
|
||||
if (result == null || result.size() == 0) {
|
||||
result = bookFeignClient.listRank((byte) 0, 10);
|
||||
cacheService.setObject(CacheKey.INDEX_CLICK_BANK_BOOK_KEY, result, 5000);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Book> listNewRank() {
|
||||
List<Book> result = (List<Book>) cacheService.getObject(CacheKey.INDEX_NEW_BOOK_KEY);
|
||||
if (result == null || result.size() == 0) {
|
||||
result = bookFeignClient.listRank((byte) 1, 10);
|
||||
cacheService.setObject(CacheKey.INDEX_NEW_BOOK_KEY, result, 3600);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BookVO> listUpdateRank() {
|
||||
List<BookVO> result = (List<BookVO>) cacheService.getObject(CacheKey.INDEX_UPDATE_BOOK_KEY);
|
||||
if (result == null || result.size() == 0) {
|
||||
List<Book> bookPOList = bookFeignClient.listRank((byte) 2, 23);
|
||||
result = BeanUtil.copyList(bookPOList, BookVO.class);
|
||||
cacheService.setObject(CacheKey.INDEX_UPDATE_BOOK_KEY, result, 60 * 10);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -1,38 +0,0 @@
|
||||
package com.java2nb.novel.home.vo;
|
||||
|
||||
import com.java2nb.novel.home.entity.HomeBook;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 首页小说VO对象
|
||||
* @author xiongxiaoyang
|
||||
* @version 1.0
|
||||
* @since 2020/5/27
|
||||
*/
|
||||
@Data
|
||||
public class HomeBookVO extends HomeBook implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "小说名")
|
||||
private String bookName;
|
||||
|
||||
@ApiModelProperty(value = "小说封面")
|
||||
private String picUrl;
|
||||
|
||||
@ApiModelProperty(value = "作者名")
|
||||
private String authorName;
|
||||
|
||||
@ApiModelProperty(value = "小说简介")
|
||||
private String bookDesc;
|
||||
|
||||
@ApiModelProperty(value = "小说评分")
|
||||
private Float score;
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return super.toString();
|
||||
}
|
||||
}
|
@@ -0,0 +1,21 @@
|
||||
package io.github.xxyopen.novel.home;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = {"io.github.xxyopen.novel"})
|
||||
@MapperScan("io.github.xxyopen.novel.*.dao.mapper")
|
||||
@EnableCaching
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackages = {"io.github.xxyopen.novel.book.feign"})
|
||||
public class NovelHomeApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(NovelHomeApplication.class, args);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
package io.github.xxyopen.novel.home.controller.front;
|
||||
|
||||
import io.github.xxyopen.novel.common.constant.ApiRouterConsts;
|
||||
import io.github.xxyopen.novel.common.resp.RestResp;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeBookRespDto;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeFriendLinkRespDto;
|
||||
import io.github.xxyopen.novel.home.service.HomeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 前台门户-首页模块 API 控制器
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/12
|
||||
*/
|
||||
@Tag(name = "HomeController", description = "前台门户-首页模块")
|
||||
@RestController
|
||||
@RequestMapping(ApiRouterConsts.API_FRONT_HOME_URL_PREFIX)
|
||||
@RequiredArgsConstructor
|
||||
public class HomeController {
|
||||
|
||||
private final HomeService homeService;
|
||||
|
||||
/**
|
||||
* 首页小说推荐查询接口
|
||||
*/
|
||||
@Operation(summary = "首页小说推荐查询接口")
|
||||
@GetMapping("books")
|
||||
public RestResp<List<HomeBookRespDto>> listHomeBooks() {
|
||||
return homeService.listHomeBooks();
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页友情链接列表查询接口
|
||||
*/
|
||||
@Operation(summary = "首页友情链接列表查询接口")
|
||||
@GetMapping("friend_Link/list")
|
||||
public RestResp<List<HomeFriendLinkRespDto>> listHomeFriendLinks() {
|
||||
return homeService.listHomeFriendLinks();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,111 @@
|
||||
package io.github.xxyopen.novel.home.dao.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 小说推荐
|
||||
* </p>
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/05/12
|
||||
*/
|
||||
@TableName("home_book")
|
||||
public class HomeBook implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 推荐类型;0-轮播图 1-顶部栏 2-本周强推 3-热门推荐 4-精品推荐
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 推荐排序
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 推荐小说ID
|
||||
*/
|
||||
private Long bookId;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Integer getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(Integer type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Integer getSort() {
|
||||
return sort;
|
||||
}
|
||||
|
||||
public void setSort(Integer sort) {
|
||||
this.sort = sort;
|
||||
}
|
||||
|
||||
public Long getBookId() {
|
||||
return bookId;
|
||||
}
|
||||
|
||||
public void setBookId(Long bookId) {
|
||||
this.bookId = bookId;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(LocalDateTime createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(LocalDateTime updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HomeBook{" +
|
||||
"id=" + id +
|
||||
", type=" + type +
|
||||
", sort=" + sort +
|
||||
", bookId=" + bookId +
|
||||
", createTime=" + createTime +
|
||||
", updateTime=" + updateTime +
|
||||
"}";
|
||||
}
|
||||
}
|
@@ -0,0 +1,125 @@
|
||||
package io.github.xxyopen.novel.home.dao.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 友情链接
|
||||
* </p>
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/05/11
|
||||
*/
|
||||
@TableName("home_friend_link")
|
||||
public class HomeFriendLink implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 链接名
|
||||
*/
|
||||
private String linkName;
|
||||
|
||||
/**
|
||||
* 链接url
|
||||
*/
|
||||
private String linkUrl;
|
||||
|
||||
/**
|
||||
* 排序号
|
||||
*/
|
||||
private Integer sort;
|
||||
|
||||
/**
|
||||
* 是否开启;0-不开启 1-开启
|
||||
*/
|
||||
private Integer isOpen;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getLinkName() {
|
||||
return linkName;
|
||||
}
|
||||
|
||||
public void setLinkName(String linkName) {
|
||||
this.linkName = linkName;
|
||||
}
|
||||
|
||||
public String getLinkUrl() {
|
||||
return linkUrl;
|
||||
}
|
||||
|
||||
public void setLinkUrl(String linkUrl) {
|
||||
this.linkUrl = linkUrl;
|
||||
}
|
||||
|
||||
public Integer getSort() {
|
||||
return sort;
|
||||
}
|
||||
|
||||
public void setSort(Integer sort) {
|
||||
this.sort = sort;
|
||||
}
|
||||
|
||||
public Integer getIsOpen() {
|
||||
return isOpen;
|
||||
}
|
||||
|
||||
public void setIsOpen(Integer isOpen) {
|
||||
this.isOpen = isOpen;
|
||||
}
|
||||
|
||||
public LocalDateTime getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(LocalDateTime createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public LocalDateTime getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(LocalDateTime updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HomeFriendLink{" +
|
||||
"id=" + id +
|
||||
", linkName=" + linkName +
|
||||
", linkUrl=" + linkUrl +
|
||||
", sort=" + sort +
|
||||
", isOpen=" + isOpen +
|
||||
", createTime=" + createTime +
|
||||
", updateTime=" + updateTime +
|
||||
"}";
|
||||
}
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package io.github.xxyopen.novel.home.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import io.github.xxyopen.novel.home.dao.entity.HomeBook;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 小说推荐 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/05/12
|
||||
*/
|
||||
public interface HomeBookMapper extends BaseMapper<HomeBook> {
|
||||
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
package io.github.xxyopen.novel.home.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import io.github.xxyopen.novel.home.dao.entity.HomeFriendLink;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 友情链接 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/05/11
|
||||
*/
|
||||
public interface HomeFriendLinkMapper extends BaseMapper<HomeFriendLink> {
|
||||
|
||||
}
|
@@ -0,0 +1,51 @@
|
||||
package io.github.xxyopen.novel.home.dto.resp;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 首页小说推荐 响应DTO
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/13
|
||||
*/
|
||||
@Data
|
||||
public class HomeBookRespDto {
|
||||
|
||||
/**
|
||||
* 类型;0-轮播图 1-顶部栏 2-本周强推 3-热门推荐 4-精品推荐
|
||||
*/
|
||||
@Schema(description = "类型;0-轮播图 1-顶部栏 2-本周强推 3-热门推荐 4-精品推荐")
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 推荐小说ID
|
||||
*/
|
||||
@Schema(description = "小说ID")
|
||||
private Long bookId;
|
||||
|
||||
/**
|
||||
* 小说封面地址
|
||||
*/
|
||||
@Schema(description = "小说封面地址")
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 小说名
|
||||
*/
|
||||
@Schema(description = "小说名")
|
||||
private String bookName;
|
||||
|
||||
/**
|
||||
* 作家名
|
||||
*/
|
||||
@Schema(description = "作家名")
|
||||
private String authorName;
|
||||
|
||||
/**
|
||||
* 书籍描述
|
||||
*/
|
||||
@Schema(description = "书籍描述")
|
||||
private String bookDesc;
|
||||
|
||||
}
|
@@ -0,0 +1,32 @@
|
||||
package io.github.xxyopen.novel.home.dto.resp;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 首页友情链接 响应DTO
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/14
|
||||
*/
|
||||
@Data
|
||||
public class HomeFriendLinkRespDto implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 链接名
|
||||
*/
|
||||
@Schema(description = "链接名")
|
||||
private String linkName;
|
||||
|
||||
/**
|
||||
* 链接url
|
||||
*/
|
||||
@Schema(description = "链接url")
|
||||
private String linkUrl;
|
||||
}
|
44
novel-home/src/main/java/io/github/xxyopen/novel/home/manager/cache/FriendLinkCacheManager.java
vendored
Normal file
44
novel-home/src/main/java/io/github/xxyopen/novel/home/manager/cache/FriendLinkCacheManager.java
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
package io.github.xxyopen.novel.home.manager.cache;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.github.xxyopen.novel.common.constant.CacheConsts;
|
||||
import io.github.xxyopen.novel.common.constant.DatabaseConsts;
|
||||
import io.github.xxyopen.novel.home.dao.entity.HomeFriendLink;
|
||||
import io.github.xxyopen.novel.home.dao.mapper.HomeFriendLinkMapper;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeFriendLinkRespDto;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 友情链接 缓存管理类
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/12
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class FriendLinkCacheManager {
|
||||
|
||||
private final HomeFriendLinkMapper friendLinkMapper;
|
||||
|
||||
/**
|
||||
* 友情链接列表查询,并放入缓存中
|
||||
*/
|
||||
@Cacheable(cacheManager = CacheConsts.REDIS_CACHE_MANAGER,
|
||||
value = CacheConsts.HOME_FRIEND_LINK_CACHE_NAME)
|
||||
public List<HomeFriendLinkRespDto> listFriendLinks() {
|
||||
// 从友情链接表中查询出友情链接列表
|
||||
QueryWrapper<HomeFriendLink> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByAsc(DatabaseConsts.CommonColumnEnum.SORT.getName());
|
||||
return friendLinkMapper.selectList(queryWrapper).stream().map(v -> {
|
||||
HomeFriendLinkRespDto respDto = new HomeFriendLinkRespDto();
|
||||
respDto.setLinkName(v.getLinkName());
|
||||
respDto.setLinkUrl(v.getLinkUrl());
|
||||
return respDto;
|
||||
}).toList();
|
||||
}
|
||||
|
||||
}
|
86
novel-home/src/main/java/io/github/xxyopen/novel/home/manager/cache/HomeBookCacheManager.java
vendored
Normal file
86
novel-home/src/main/java/io/github/xxyopen/novel/home/manager/cache/HomeBookCacheManager.java
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
package io.github.xxyopen.novel.home.manager.cache;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.github.xxyopen.novel.book.dto.resp.BookInfoRespDto;
|
||||
import io.github.xxyopen.novel.common.constant.CacheConsts;
|
||||
import io.github.xxyopen.novel.common.constant.DatabaseConsts;
|
||||
import io.github.xxyopen.novel.home.dao.entity.HomeBook;
|
||||
import io.github.xxyopen.novel.home.dao.mapper.HomeBookMapper;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeBookRespDto;
|
||||
import io.github.xxyopen.novel.home.manager.feign.BookFeignManager;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 首页推荐小说 缓存管理类
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/12
|
||||
*/
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class HomeBookCacheManager {
|
||||
|
||||
private final HomeBookMapper homeBookMapper;
|
||||
|
||||
private final BookFeignManager bookFeignManager;
|
||||
|
||||
/**
|
||||
* 查询首页小说推荐,并放入缓存中
|
||||
*/
|
||||
@Cacheable(cacheManager = CacheConsts.CAFFEINE_CACHE_MANAGER,
|
||||
value = CacheConsts.HOME_BOOK_CACHE_NAME)
|
||||
public List<HomeBookRespDto> listHomeBooks() {
|
||||
// 从首页小说推荐表中查询出需要推荐的小说
|
||||
QueryWrapper<HomeBook> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.orderByAsc(DatabaseConsts.CommonColumnEnum.SORT.getName());
|
||||
List<HomeBook> homeBooks = homeBookMapper.selectList(queryWrapper);
|
||||
|
||||
// 获取推荐小说ID列表
|
||||
if (!CollectionUtils.isEmpty(homeBooks)) {
|
||||
List<Long> bookIds = homeBooks.stream()
|
||||
.map(HomeBook::getBookId)
|
||||
.toList();
|
||||
|
||||
// 根据小说ID列表查询相关的小说信息列表
|
||||
List<BookInfoRespDto> bookInfos = bookFeignManager.listBookInfoByIds(bookIds);
|
||||
|
||||
// 组装 HomeBookRespDto 列表数据并返回
|
||||
if (!CollectionUtils.isEmpty(bookInfos)) {
|
||||
Map<Long, BookInfoRespDto> bookInfoMap = bookInfos.stream()
|
||||
.collect(Collectors.toMap(BookInfoRespDto::getId, Function.identity()));
|
||||
return homeBooks.stream().map(v -> {
|
||||
BookInfoRespDto bookInfo = bookInfoMap.get(v.getBookId());
|
||||
HomeBookRespDto bookRespDto = new HomeBookRespDto();
|
||||
bookRespDto.setType(v.getType());
|
||||
bookRespDto.setBookId(v.getBookId());
|
||||
bookRespDto.setBookName(bookInfo.getBookName());
|
||||
bookRespDto.setPicUrl(bookInfo.getPicUrl());
|
||||
bookRespDto.setAuthorName(bookInfo.getAuthorName());
|
||||
bookRespDto.setBookDesc(bookInfo.getBookDesc());
|
||||
return bookRespDto;
|
||||
}).toList();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@CacheEvict(cacheManager = CacheConsts.CAFFEINE_CACHE_MANAGER,
|
||||
value = CacheConsts.HOME_BOOK_CACHE_NAME)
|
||||
public void evictCache(){
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package io.github.xxyopen.novel.home.manager.feign;
|
||||
|
||||
import io.github.xxyopen.novel.book.dto.resp.BookEsRespDto;
|
||||
import io.github.xxyopen.novel.book.dto.resp.BookInfoRespDto;
|
||||
import io.github.xxyopen.novel.book.feign.BookFeign;
|
||||
import io.github.xxyopen.novel.common.constant.ErrorCodeEnum;
|
||||
import io.github.xxyopen.novel.common.resp.RestResp;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 小说微服务调用 Feign 客户端管理
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2023/3/29
|
||||
*/
|
||||
@Component
|
||||
@AllArgsConstructor
|
||||
public class BookFeignManager {
|
||||
|
||||
private final BookFeign bookFeign;
|
||||
|
||||
public List<BookInfoRespDto> listBookInfoByIds(List<Long> bookIds){
|
||||
RestResp<List<BookInfoRespDto>> resp = bookFeign.listBookInfoByIds(bookIds);
|
||||
if(Objects.equals(ErrorCodeEnum.OK.getCode(),resp.getCode())){
|
||||
return resp.getData();
|
||||
}
|
||||
return new ArrayList<>(0);
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
package io.github.xxyopen.novel.home.service;
|
||||
|
||||
import io.github.xxyopen.novel.common.resp.RestResp;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeBookRespDto;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeFriendLinkRespDto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页模块 服务类
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/13
|
||||
*/
|
||||
public interface HomeService {
|
||||
|
||||
/**
|
||||
* 查询首页小说推荐列表
|
||||
*
|
||||
* @return 首页小说推荐列表的 rest 响应结果
|
||||
*/
|
||||
RestResp<List<HomeBookRespDto>> listHomeBooks();
|
||||
|
||||
/**
|
||||
* 首页友情链接列表查询
|
||||
*
|
||||
* @return 友情链接列表
|
||||
*/
|
||||
RestResp<List<HomeFriendLinkRespDto>> listHomeFriendLinks();
|
||||
}
|
@@ -0,0 +1,43 @@
|
||||
package io.github.xxyopen.novel.home.service.impl;
|
||||
|
||||
import io.github.xxyopen.novel.common.resp.RestResp;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeBookRespDto;
|
||||
import io.github.xxyopen.novel.home.dto.resp.HomeFriendLinkRespDto;
|
||||
import io.github.xxyopen.novel.home.manager.cache.FriendLinkCacheManager;
|
||||
import io.github.xxyopen.novel.home.manager.cache.HomeBookCacheManager;
|
||||
import io.github.xxyopen.novel.home.service.HomeService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 首页模块 服务实现类
|
||||
*
|
||||
* @author xiongxiaoyang
|
||||
* @date 2022/5/13
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class HomeServiceImpl implements HomeService {
|
||||
|
||||
private final HomeBookCacheManager homeBookCacheManager;
|
||||
|
||||
private final FriendLinkCacheManager friendLinkCacheManager;
|
||||
|
||||
@Override
|
||||
public RestResp<List<HomeBookRespDto>> listHomeBooks() {
|
||||
List<HomeBookRespDto> list = homeBookCacheManager.listHomeBooks();
|
||||
if(CollectionUtils.isEmpty(list)){
|
||||
homeBookCacheManager.evictCache();
|
||||
}
|
||||
return RestResp.ok(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RestResp<List<HomeFriendLinkRespDto>> listHomeFriendLinks() {
|
||||
return RestResp.ok(friendLinkCacheManager.listFriendLinks());
|
||||
}
|
||||
}
|
@@ -1,6 +1,16 @@
|
||||
server:
|
||||
port: 9001
|
||||
spring:
|
||||
profiles:
|
||||
include: [common]
|
||||
feign:
|
||||
sentinel:
|
||||
enabled: true
|
||||
include: common
|
||||
active: dev
|
||||
|
||||
management:
|
||||
# 端点启用配置
|
||||
endpoint:
|
||||
logfile:
|
||||
# 启用返回日志文件内容的端点
|
||||
enabled: true
|
||||
# 外部日志文件路径
|
||||
external-file: logs/novel-home-service.log
|
||||
|
||||
|
@@ -1,12 +1,6 @@
|
||||
spring:
|
||||
application:
|
||||
name: novel-home
|
||||
name: novel-home-service
|
||||
profiles:
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
config:
|
||||
ext‐config[0]:
|
||||
data‐id: novel-redis.yml
|
||||
group: novel-common
|
||||
refresh: true
|
||||
include: common
|
||||
|
||||
|
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
<!-- 彩色日志依赖的渲染类 -->
|
||||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
|
||||
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
|
||||
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
|
||||
<conversionRule conversionWord="wex"
|
||||
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
|
||||
<conversionRule conversionWord="wEx"
|
||||
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||
<!-- 彩色日志格式 -->
|
||||
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
|
||||
<property name="CONSOLE_LOG_PATTERN"
|
||||
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||
|
||||
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,%i索引【从数字0开始递增】,,, -->
|
||||
<!-- appender是configuration的子节点,是负责写日志的组件。 -->
|
||||
<!-- ConsoleAppender:把日志输出到控制台 -->
|
||||
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<!--
|
||||
<pattern>%d %p (%file:%line\)- %m%n</pattern>
|
||||
-->
|
||||
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||
<!-- 控制台也要使用UTF-8,不要使用GBK,否则会中文乱码 -->
|
||||
<charset>UTF-8</charset>
|
||||
@@ -26,7 +26,7 @@
|
||||
<!-- 2.如果日期没有发生变化,但是当前日志的文件大小超过1KB时,对当前日志进行分割 重命名 -->
|
||||
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
|
||||
<File>logs/novel-home.log</File>
|
||||
<File>logs/novel-home-service.log</File>
|
||||
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
|
||||
<!-- TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
@@ -49,24 +49,31 @@
|
||||
<charset>UTF-8</charset>
|
||||
</encoder>
|
||||
</appender>
|
||||
<!--输出到logstash的appender-->
|
||||
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
|
||||
<!--可以访问的logstash日志收集端口-->
|
||||
<destination>198.245.61.51:4560</destination>
|
||||
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
|
||||
</appender>
|
||||
<!-- 控制台输出日志级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="FILE" />
|
||||
<appender-ref ref="LOGSTASH"/>
|
||||
</root>
|
||||
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
|
||||
<!-- com.maijinjie.springboot 为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
|
||||
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
|
||||
<logger name="com.java2nb" level="DEBUG">
|
||||
<appender-ref ref="STDOUT" />
|
||||
<appender-ref ref="FILE" />
|
||||
<appender-ref ref="LOGSTASH"/>
|
||||
</logger>
|
||||
<springProfile name="dev">
|
||||
<!-- ROOT 日志级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="FILE"/>
|
||||
</root>
|
||||
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
|
||||
<!-- com.maijinjie.springboot 为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
|
||||
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
|
||||
<logger name="io.github.xxyopen" level="DEBUG" additivity="false">
|
||||
<appender-ref ref="STDOUT"/>
|
||||
<appender-ref ref="FILE"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
|
||||
<springProfile name="prod">
|
||||
<!-- ROOT 日志级别 -->
|
||||
<root level="INFO">
|
||||
<appender-ref ref="FILE"/>
|
||||
</root>
|
||||
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
|
||||
<!-- com.maijinjie.springboot 为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
|
||||
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
|
||||
<logger name="io.github.xxyopen" level="ERROR" additivity="false">
|
||||
<appender-ref ref="FILE"/>
|
||||
</logger>
|
||||
</springProfile>
|
||||
</configuration>
|
Reference in New Issue
Block a user