From b0b9e80f8affae731852828f31ec358079b3d346 Mon Sep 17 00:00:00 2001 From: limqhz Date: Tue, 10 May 2022 02:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=9A=E5=AE=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/quinn/common/QuinnConstant.java | 2 +- src/main/java/com/quinn/common/RoleType.java | 16 ++ .../com/quinn/controller/AboutController.java | 17 +- .../com/quinn/controller/BlogController.java | 26 +-- .../com/quinn/controller/LoginController.java | 4 +- .../quinn/controller/SourceController.java | 50 ++--- .../com/quinn/controller/StarController.java | 2 +- .../java/com/quinn/intergration/AttrIcon.java | 9 + .../java/com/quinn/mapper/SourceMapper.java | 6 + .../com/quinn/mapper/xml/SourceMapper.xml | 16 ++ src/main/java/com/quinn/pojo/Source.java | 2 +- .../java/com/quinn/pojo/SourceWithStar.java | 27 +++ src/main/java/com/quinn/pojo/User.java | 2 +- .../java/com/quinn/service/SourceService.java | 6 + .../com/quinn/service/UserRoleService.java | 16 -- .../quinn/service/impl/SourceServiceImpl.java | 27 +++ .../service/impl/UserRoleServiceImpl.java | 20 -- .../quinn/service/impl/UserServiceImpl.java | 32 ++-- src/main/java/com/quinn/vo/MyPageParam.java | 3 + src/main/java/com/quinn/vo/NavReq.java | 19 ++ .../quinn/{pojo/param => vo}/QuerySource.java | 10 +- .../java/com/quinn/vo/QuerySourcePage.java | 16 ++ .../resources/static/images/avatar/quinn.png | Bin 0 -> 62117 bytes src/main/resources/templates/blog/list.html | 43 +++-- src/main/resources/templates/page/append.html | 2 +- src/main/resources/templates/register.html | 2 +- src/main/resources/templates/source/list.html | 181 +++++++++++------- src/main/resources/templates/user/index.html | 10 +- 28 files changed, 339 insertions(+), 227 deletions(-) create mode 100644 src/main/java/com/quinn/common/RoleType.java create mode 100644 src/main/java/com/quinn/pojo/SourceWithStar.java delete mode 100644 src/main/java/com/quinn/service/UserRoleService.java delete mode 100644 src/main/java/com/quinn/service/impl/UserRoleServiceImpl.java create mode 100644 src/main/java/com/quinn/vo/NavReq.java rename src/main/java/com/quinn/{pojo/param => vo}/QuerySource.java (56%) create mode 100644 src/main/java/com/quinn/vo/QuerySourcePage.java create mode 100644 src/main/resources/static/images/avatar/quinn.png diff --git a/src/main/java/com/quinn/common/QuinnConstant.java b/src/main/java/com/quinn/common/QuinnConstant.java index 0bf96c1..879ce38 100644 --- a/src/main/java/com/quinn/common/QuinnConstant.java +++ b/src/main/java/com/quinn/common/QuinnConstant.java @@ -27,5 +27,5 @@ public interface QuinnConstant { String EDIT_SOURCE_FIRST = "lw@"; String EDIT_SOURCE_LAST = "#"; - String DEFAULT_ATTR_BASE64 = "/attrIcon"; + String DEFAULT_ATTR_BASE64 = "/images/avatar/quinn.png"; } diff --git a/src/main/java/com/quinn/common/RoleType.java b/src/main/java/com/quinn/common/RoleType.java new file mode 100644 index 0000000..5a1487a --- /dev/null +++ b/src/main/java/com/quinn/common/RoleType.java @@ -0,0 +1,16 @@ +package com.quinn.common; + +public enum RoleType { + /** + * 管理员 + */ + ADMIN, + /** + * 普通用户 + */ + NORMAL, + /** + * VIP + */ + VIP +} diff --git a/src/main/java/com/quinn/controller/AboutController.java b/src/main/java/com/quinn/controller/AboutController.java index 5d1a1a4..cdb4556 100644 --- a/src/main/java/com/quinn/controller/AboutController.java +++ b/src/main/java/com/quinn/controller/AboutController.java @@ -3,14 +3,19 @@ package com.quinn.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.quinn.common.RoleType; import com.quinn.pojo.About; +import com.quinn.pojo.User; import com.quinn.service.AboutService; +import com.quinn.service.UserService; import com.quinn.utils.QuinnUtils; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.management.relation.Role; +import javax.servlet.http.HttpServletRequest; import java.util.List; /** @@ -22,10 +27,12 @@ import java.util.List; * @since 2022-05-01 */ @Controller -public class AboutController { +public class AboutController extends BaseModelController { @Resource AboutService aboutService; + @Resource + UserService userService; @GetMapping("/about") @@ -40,10 +47,12 @@ public class AboutController { return "page/about"; } - @PostMapping("/about/{role}") - public String saveSay(@PathVariable("role") int role, About about){ + @PostMapping("/about") + public String saveSay(HttpServletRequest request, About about){ + String loginUserId = getLoginUserId(request); + User user = userService.getOne(new QueryWrapper().eq("uid", "")); // 防止请求提交 - if (role!=1){ + if (!RoleType.ADMIN.name().equals(user)){ return "redirect:/about"; } about.setId(QuinnUtils.getUuid()); diff --git a/src/main/java/com/quinn/controller/BlogController.java b/src/main/java/com/quinn/controller/BlogController.java index df2f016..50c1456 100644 --- a/src/main/java/com/quinn/controller/BlogController.java +++ b/src/main/java/com/quinn/controller/BlogController.java @@ -6,10 +6,7 @@ import com.quinn.common.Category; import com.quinn.pojo.*; import com.quinn.service.*; import com.quinn.utils.QuinnUtils; -import com.quinn.vo.StarReq; -import com.quinn.vo.MyPageParam; -import com.quinn.vo.QuestionWriteForm; -import com.quinn.vo.StarValue; +import com.quinn.vo.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -51,7 +48,7 @@ public class BlogController extends BaseModelController{ List blogList = blogService.getBlogWithUserOrderBySort(myPageParam); // 结果 model.addAttribute("blogList",blogList); - model.addAttribute("myPageParam",myPageParam); + model.addAttribute("pageParam",myPageParam); List topBlogList = blogService.getTopBlog(); model.addAttribute("topBlogList",topBlogList); @@ -63,20 +60,17 @@ public class BlogController extends BaseModelController{ return "blog/list"; } - @GetMapping("/blog/{page}/{limit}") - public String blogListPage( - @PathVariable int page, - @PathVariable int limit, - Model model){ - - if (page < 1){ - page = 1; + @PostMapping("/blog") + public String blogListPage(NavReq navReq, Model model){ + // 用户的论坛列表 + if (navReq.getPageNum() < 1){ + navReq.setPageNum(1); } - MyPageParam myPageParam = new MyPageParam(page,limit); + MyPageParam myPageParam = new MyPageParam(navReq.getPageNum(),navReq.getLimit()); List blogList = blogService.getBlogWithUserOrderBySort(myPageParam); // 结果 model.addAttribute("blogList",blogList); - model.addAttribute("myPageParam",myPageParam); + model.addAttribute("pageParam",myPageParam); List topBlogList = blogService.getTopBlog(); model.addAttribute("topBlogList",topBlogList); @@ -85,7 +79,7 @@ public class BlogController extends BaseModelController{ List categoryList = blogCategoryService.list(null); model.addAttribute("categoryList",categoryList); - return "blog/list"; + return "blog/list::s_table_refresh"; } // 写文章 diff --git a/src/main/java/com/quinn/controller/LoginController.java b/src/main/java/com/quinn/controller/LoginController.java index 3fbaf76..12014ff 100644 --- a/src/main/java/com/quinn/controller/LoginController.java +++ b/src/main/java/com/quinn/controller/LoginController.java @@ -1,6 +1,7 @@ package com.quinn.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.quinn.common.RoleType; import com.quinn.pojo.Invite; import com.quinn.pojo.User; import com.quinn.pojo.UserInfo; @@ -78,7 +79,7 @@ public class LoginController { // 构建用户对象 User user = new User(); user.setUid(QuinnUtils.getUuid()); // 用户唯一id - user.setRoleId(2); + user.setRoleId(RoleType.NORMAL.name()); user.setUsername(registerForm.getUsername()); // 密码加密 String bCryptPassword = new BCryptPasswordEncoder().encode(registerForm.getPassword()); @@ -93,7 +94,6 @@ public class LoginController { invite.setUid(user.getUid()); inviteService.updateById(invite); - // todo: 用户信息 userInfoService.save(new UserInfo().setUid(user.getUid())); // 注册成功,重定向到登录页面 diff --git a/src/main/java/com/quinn/controller/SourceController.java b/src/main/java/com/quinn/controller/SourceController.java index 6abe805..5a707d4 100644 --- a/src/main/java/com/quinn/controller/SourceController.java +++ b/src/main/java/com/quinn/controller/SourceController.java @@ -7,13 +7,11 @@ import com.quinn.common.Category; import com.quinn.common.QuinnConstant; import com.quinn.common.SourceType; import com.quinn.pojo.*; -import com.quinn.pojo.param.QuerySource; import com.quinn.service.CommentService; import com.quinn.service.SourceCategoryService; import com.quinn.service.SourceService; import com.quinn.service.StarService; -import com.quinn.vo.StarReq; -import com.quinn.vo.StarValue; +import com.quinn.vo.*; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.CollectionUtils; @@ -52,23 +50,12 @@ public class SourceController extends BaseModelController { // 列表展示 @GetMapping("/source") public String sourceList(Model model){ - Page pageParam = new Page<>(1, 10); - QueryWrapper sourceQuery = new QueryWrapper<>(); - sourceQuery.orderByDesc("gmt_create"); - sourceService.page(pageParam,sourceQuery); + QuerySource querySource = new QuerySource(); + MyPageParam myPageParam = new MyPageParam(1,10); + List sourceList = sourceService.listPageStar(querySource,myPageParam); // 结果 - List sourceList = pageParam.getRecords(); - if (!CollectionUtils.isEmpty(sourceList)){ - sourceList.forEach(x ->{ - x.setSourceLink(QuinnConstant.GUN); - x.setKeyWord1(QuinnConstant.GUN); - x.setKeyWord2(QuinnConstant.GUN); - x.setKeyWord3(QuinnConstant.GUN); - x.setSourceContent(QuinnConstant.GUN); - }); - } model.addAttribute("sourceList",sourceList); - model.addAttribute("pageParam",pageParam); + model.addAttribute("pageParam",myPageParam); // 分类信息 List categoryList = sourceCategoryService.list(null); @@ -77,23 +64,19 @@ public class SourceController extends BaseModelController { return "source/list"; } - @PostMapping("/source/page") - public String blogListPage(QuerySource querySource, Model model){ + @PostMapping("/source") + public String blogListPage(QuerySourcePage querySource, Model model){ int page = querySource.getPageNum(); int limit = querySource.getLimit(); if (querySource.getPageNum() < 1){ page = 1; } - Page pageParam = new Page<>(page, limit); - QueryWrapper sourceQuery = new QueryWrapper<>(); - addParam(sourceQuery,querySource.getName(),querySource.getCategory()); - sourceQuery.orderByDesc("gmt_create"); - sourceService.page(pageParam,sourceQuery); - + MyPageParam myPageParam = new MyPageParam(page,limit); + List sourceList = sourceService.listPageStar(querySource,myPageParam); // 结果 - List blogList = pageParam.getRecords(); - model.addAttribute("sourceList",blogList); - model.addAttribute("pageParam",pageParam); + model.addAttribute("sourceList",sourceList); + model.addAttribute("pageParam",myPageParam); + return "source/list::s_table_refresh"; } @@ -174,13 +157,4 @@ public class SourceController extends BaseModelController { } } - private void addParam(QueryWrapper sourceQuery, String name, int category) { - if (!StringUtils.isEmpty(name)){ - sourceQuery.like("source_name",name); - } - if (category > 0){ - sourceQuery.eq("category_id",category); - } - } - } diff --git a/src/main/java/com/quinn/controller/StarController.java b/src/main/java/com/quinn/controller/StarController.java index 35f7a65..d11fe7e 100644 --- a/src/main/java/com/quinn/controller/StarController.java +++ b/src/main/java/com/quinn/controller/StarController.java @@ -28,7 +28,7 @@ public class StarController extends BaseModelController { StarService starService; // 取消收藏 - @GetMapping("/user/comment/delete/{starId}") + @GetMapping("/user/star/delete/{starId}") public String deleteComment(HttpServletRequest request, @PathVariable String starId){ String loginUserId = getLoginUserId(request); Star star = starService.getById(starId); diff --git a/src/main/java/com/quinn/intergration/AttrIcon.java b/src/main/java/com/quinn/intergration/AttrIcon.java index 7c9160e..c1f5a00 100644 --- a/src/main/java/com/quinn/intergration/AttrIcon.java +++ b/src/main/java/com/quinn/intergration/AttrIcon.java @@ -12,6 +12,15 @@ public enum AttrIcon { INSTANCE; + /** + * 用户名 + * @param name + */ + public String generateImgUrl(String name) { + String attrUrl = "https://api.multiavatar.com/"; + return attrUrl + name + ".png"; + } + /** * 用户名 * @param name diff --git a/src/main/java/com/quinn/mapper/SourceMapper.java b/src/main/java/com/quinn/mapper/SourceMapper.java index e1880d0..5746c99 100644 --- a/src/main/java/com/quinn/mapper/SourceMapper.java +++ b/src/main/java/com/quinn/mapper/SourceMapper.java @@ -2,6 +2,11 @@ package com.quinn.mapper; import com.quinn.pojo.Source; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.quinn.pojo.SourceWithStar; +import com.quinn.vo.MyPageParam; +import com.quinn.vo.QuerySource; + +import java.util.List; /** *

@@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SourceMapper extends BaseMapper { + List listPageStar(QuerySource querySource, MyPageParam myPageParam); } diff --git a/src/main/java/com/quinn/mapper/xml/SourceMapper.xml b/src/main/java/com/quinn/mapper/xml/SourceMapper.xml index 4baf27b..554216e 100644 --- a/src/main/java/com/quinn/mapper/xml/SourceMapper.xml +++ b/src/main/java/com/quinn/mapper/xml/SourceMapper.xml @@ -2,4 +2,20 @@ + + diff --git a/src/main/java/com/quinn/pojo/Source.java b/src/main/java/com/quinn/pojo/Source.java index a149b35..8c6b617 100644 --- a/src/main/java/com/quinn/pojo/Source.java +++ b/src/main/java/com/quinn/pojo/Source.java @@ -71,7 +71,7 @@ public class Source implements Serializable { private String fileType; @ApiModelProperty(value = "下载次数") - private Integer downRecord; + private int downRecord; @ApiModelProperty(value = "创建时间") private Date gmtCreate; diff --git a/src/main/java/com/quinn/pojo/SourceWithStar.java b/src/main/java/com/quinn/pojo/SourceWithStar.java new file mode 100644 index 0000000..18db0a3 --- /dev/null +++ b/src/main/java/com/quinn/pojo/SourceWithStar.java @@ -0,0 +1,27 @@ +package com.quinn.pojo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author limqsh + * @since 2022-05-03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class SourceWithStar extends Source implements Serializable { + + @ApiModelProperty(value = "收藏") + private int star; + + +} diff --git a/src/main/java/com/quinn/pojo/User.java b/src/main/java/com/quinn/pojo/User.java index fd320cb..4e74441 100644 --- a/src/main/java/com/quinn/pojo/User.java +++ b/src/main/java/com/quinn/pojo/User.java @@ -36,7 +36,7 @@ public class User implements Serializable { private String uid; @ApiModelProperty(value = "角色编号") - private Integer roleId; + private String roleId; @ApiModelProperty(value = "用户名") private String username; diff --git a/src/main/java/com/quinn/service/SourceService.java b/src/main/java/com/quinn/service/SourceService.java index 7aa1102..ad6b9be 100644 --- a/src/main/java/com/quinn/service/SourceService.java +++ b/src/main/java/com/quinn/service/SourceService.java @@ -2,6 +2,9 @@ package com.quinn.service; import com.quinn.pojo.Source; import com.baomidou.mybatisplus.extension.service.IService; +import com.quinn.pojo.SourceWithStar; +import com.quinn.vo.MyPageParam; +import com.quinn.vo.QuerySource; import com.quinn.vo.SourceUpdateForm; import com.quinn.vo.SourceWriteForm; import org.springframework.web.multipart.MultipartFile; @@ -10,6 +13,7 @@ import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; +import java.util.List; /** *

@@ -57,4 +61,6 @@ public interface SourceService extends IService { * @param sid */ void deleteSource(String sid); + + List listPageStar(QuerySource querySource, MyPageParam myPageParam); } diff --git a/src/main/java/com/quinn/service/UserRoleService.java b/src/main/java/com/quinn/service/UserRoleService.java deleted file mode 100644 index 9d4b984..0000000 --- a/src/main/java/com/quinn/service/UserRoleService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.quinn.service; - -import com.quinn.pojo.UserRole; -import com.baomidou.mybatisplus.extension.service.IService; - -/** - *

- * 服务类 - *

- * - * @author limqsh - * @since 2020-06-28 - */ -public interface UserRoleService extends IService { - -} diff --git a/src/main/java/com/quinn/service/impl/SourceServiceImpl.java b/src/main/java/com/quinn/service/impl/SourceServiceImpl.java index 961eae4..26e2e5b 100644 --- a/src/main/java/com/quinn/service/impl/SourceServiceImpl.java +++ b/src/main/java/com/quinn/service/impl/SourceServiceImpl.java @@ -7,11 +7,14 @@ import com.quinn.mapper.SourceCategoryMapper; import com.quinn.pojo.Source; import com.quinn.mapper.SourceMapper; import com.quinn.pojo.SourceCategory; +import com.quinn.pojo.SourceWithStar; import com.quinn.service.SourceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.quinn.utils.OSSClientUtil; import com.quinn.utils.QuinnUtils; import com.quinn.utils.RedisUtils; +import com.quinn.vo.MyPageParam; +import com.quinn.vo.QuerySource; import com.quinn.vo.SourceUpdateForm; import com.quinn.vo.SourceWriteForm; import org.springframework.stereotype.Service; @@ -25,6 +28,7 @@ import java.io.BufferedOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; +import java.util.List; /** *

@@ -43,6 +47,8 @@ public class SourceServiceImpl extends ServiceImpl impleme RedisUtils redisUtils; @Resource SourceCategoryMapper sourceCategoryMapper; + @Resource + SourceMapper sourceMapper; @Override public void downloadSource(HttpServletResponse response, Source source) throws IOException { @@ -182,6 +188,27 @@ public class SourceServiceImpl extends ServiceImpl impleme removeById(before); } + @Override + public List listPageStar(QuerySource querySource, MyPageParam myPageParam) { + QueryWrapper sourceQuery = new QueryWrapper<>(); + int allCount = count(sourceQuery); + myPageParam.setAllTotal(allCount); + addParam(sourceQuery,querySource.getName(),querySource.getCategory()); + int count = count(sourceQuery); + myPageParam.setTotal(count); + return sourceMapper.listPageStar(querySource,myPageParam); + } + + + private void addParam(QueryWrapper sourceQuery, String name, int category) { + if (!StringUtils.isEmpty(name)){ + sourceQuery.like("source_name",name); + } + if (category > 0){ + sourceQuery.eq("category_id",category); + } + } + /** * 更新页码 * @param source diff --git a/src/main/java/com/quinn/service/impl/UserRoleServiceImpl.java b/src/main/java/com/quinn/service/impl/UserRoleServiceImpl.java deleted file mode 100644 index ff4e10a..0000000 --- a/src/main/java/com/quinn/service/impl/UserRoleServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.quinn.service.impl; - -import com.quinn.pojo.UserRole; -import com.quinn.mapper.UserRoleMapper; -import com.quinn.service.UserRoleService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author limqsh - * @since 2020-06-28 - */ -@Service -public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { - -} diff --git a/src/main/java/com/quinn/service/impl/UserServiceImpl.java b/src/main/java/com/quinn/service/impl/UserServiceImpl.java index cae5957..9f14ccf 100644 --- a/src/main/java/com/quinn/service/impl/UserServiceImpl.java +++ b/src/main/java/com/quinn/service/impl/UserServiceImpl.java @@ -1,10 +1,10 @@ package com.quinn.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.quinn.common.QuinnConstant; +import com.quinn.common.RoleType; import com.quinn.pojo.User; import com.quinn.mapper.UserMapper; -import com.quinn.pojo.UserRole; -import com.quinn.service.UserRoleService; import com.quinn.service.UserService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +17,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpSession; import java.util.ArrayList; -import java.util.Collection; +import java.util.Arrays; import java.util.List; /** @@ -37,8 +37,6 @@ public class UserServiceImpl extends ServiceImpl implements Us @Autowired UserService userService; @Autowired - UserRoleService roleService; - @Autowired HttpSession session; // 用户登录逻辑和验证处理 @@ -47,9 +45,6 @@ public class UserServiceImpl extends ServiceImpl implements Us // 通过用户名查询用户 User user = userService.getOne(new QueryWrapper().eq("username", s)); - // 放入session - session.setAttribute("loginUser",user); - //创建一个新的UserDetails对象,最后验证登陆的需要 UserDetails userDetails=null; if(user!=null){ @@ -57,26 +52,23 @@ public class UserServiceImpl extends ServiceImpl implements Us //String BCryptPassword = new BCryptPasswordEncoder().encode(user.getPassword()); // 登录后会将登录密码进行加密,然后比对数据库中的密码,数据库密码需要加密存储! String password = user.getPassword(); - + user.setPassword(QuinnConstant.GUN); + // 放入session + session.setAttribute("loginUser",user); //创建一个集合来存放权限 - Collection authorities = getAuthorities(user); + List authList = new ArrayList(); + RoleType[] values = RoleType.values(); + Arrays.stream(values).forEach(x->{ + authList.add(new SimpleGrantedAuthority("ROLE_" + x.name())); + }); //实例化UserDetails对象 userDetails=new org.springframework.security.core.userdetails.User(s,password, true, true, true, - true, authorities); + true, authList); } return userDetails; } - // 获取角色信息 - private Collection getAuthorities(User user){ - List authList = new ArrayList(); - UserRole role = roleService.getById(user.getRoleId()); - //注意:这里每个权限前面都要加ROLE_。否在最后验证不会通过 - authList.add(new SimpleGrantedAuthority("ROLE_"+role.getName())); - return authList; - } - } diff --git a/src/main/java/com/quinn/vo/MyPageParam.java b/src/main/java/com/quinn/vo/MyPageParam.java index 394771d..f40e3ed 100644 --- a/src/main/java/com/quinn/vo/MyPageParam.java +++ b/src/main/java/com/quinn/vo/MyPageParam.java @@ -28,6 +28,9 @@ public class MyPageParam { @ApiModelProperty(value = "总量") private int total; + @ApiModelProperty(value = "总量") + private int allTotal; + public boolean hasPrevious(){ return current > 1; } diff --git a/src/main/java/com/quinn/vo/NavReq.java b/src/main/java/com/quinn/vo/NavReq.java new file mode 100644 index 0000000..bc960cd --- /dev/null +++ b/src/main/java/com/quinn/vo/NavReq.java @@ -0,0 +1,19 @@ +package com.quinn.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class NavReq { + + @ApiModelProperty(value = "页码") + private int pageNum; + + @ApiModelProperty(value = "个数") + private int limit; + +} diff --git a/src/main/java/com/quinn/pojo/param/QuerySource.java b/src/main/java/com/quinn/vo/QuerySource.java similarity index 56% rename from src/main/java/com/quinn/pojo/param/QuerySource.java rename to src/main/java/com/quinn/vo/QuerySource.java index c94d5ae..87b6553 100644 --- a/src/main/java/com/quinn/pojo/param/QuerySource.java +++ b/src/main/java/com/quinn/vo/QuerySource.java @@ -1,4 +1,4 @@ -package com.quinn.pojo.param; +package com.quinn.vo; import lombok.Data; @@ -13,13 +13,5 @@ public class QuerySource { * 资源类别 */ private int category; - /** - * 页码 - */ - private int pageNum; - /** - * 每页数量 - */ - private int limit; } diff --git a/src/main/java/com/quinn/vo/QuerySourcePage.java b/src/main/java/com/quinn/vo/QuerySourcePage.java new file mode 100644 index 0000000..21ed231 --- /dev/null +++ b/src/main/java/com/quinn/vo/QuerySourcePage.java @@ -0,0 +1,16 @@ +package com.quinn.vo; + +import lombok.Data; + +@Data +public class QuerySourcePage extends QuerySource{ + /** + * 页码 + */ + private int pageNum; + /** + * 每页数量 + */ + private int limit; + +} diff --git a/src/main/resources/static/images/avatar/quinn.png b/src/main/resources/static/images/avatar/quinn.png new file mode 100644 index 0000000000000000000000000000000000000000..75cad92a06358f2e5bcdf026b47041e912135352 GIT binary patch literal 62117 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/templates/blog/list.html b/src/main/resources/templates/blog/list.html index 84bc47d..17c358a 100644 --- a/src/main/resources/templates/blog/list.html +++ b/src/main/resources/templates/blog/list.html @@ -15,11 +15,11 @@
+
论坛累计: - +
-
@@ -60,24 +60,24 @@ - +
@@ -101,7 +101,6 @@
如果发的帖子水分过大,可能会被封禁账号,请酌情发帖评论!
-

推荐

    @@ -131,10 +130,20 @@ - - - diff --git a/src/main/resources/templates/page/append.html b/src/main/resources/templates/page/append.html index 3504461..0f8b76c 100644 --- a/src/main/resources/templates/page/append.html +++ b/src/main/resources/templates/page/append.html @@ -15,7 +15,7 @@
    -
    +
    diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html index a3ddab6..67dc74e 100644 --- a/src/main/resources/templates/register.html +++ b/src/main/resources/templates/register.html @@ -18,7 +18,7 @@ - + diff --git a/src/main/resources/templates/source/list.html b/src/main/resources/templates/source/list.html index b6e63b8..73de8db 100644 --- a/src/main/resources/templates/source/list.html +++ b/src/main/resources/templates/source/list.html @@ -5,87 +5,121 @@ 资源库-Quinn - - +
    -
    -
    - -
    -
    - -
    -
    -
    关键字
    +
    +
    +
    +
    +
    + 累计资源总量: + +
    +
    +
    +
    + + + + [[${source.getSourceName()}]] + + + + [[${source.getCategoryName()}]] + ( + + + + [[${source.getStar()}]] + ) + +

    +
    + + +
    -
    -
    -
    - -
    -
    -
    类别
    -
    - -
    - -
    -
    - + +
    - -
    -
    - - - - - - - - - - - - - - - - - - - -
    资源名资源简介资源类型热度去下载
    - 详情 -
    - +
    +
    @@ -104,7 +138,8 @@ var current = $('#current').text(); var pageNum = parseInt(current) + page; $.ajax({ - url: "/source/page", + url: "/source", + async: false, type: "post", data: {"name": name, "category": category, "pageNum": pageNum, "limit": 10}, success: function (data) { diff --git a/src/main/resources/templates/user/index.html b/src/main/resources/templates/user/index.html index c41b87c..e01eed6 100644 --- a/src/main/resources/templates/user/index.html +++ b/src/main/resources/templates/user/index.html @@ -62,14 +62,12 @@ class="text-dark font-weight-bold text-decoration-none d-block"> - + [[${blog.getViews()}]] - - @@ -139,9 +137,9 @@
    - - + 超级管理员 +