diff --git a/like-admin/src/main/java/com/hxkj/admin/LikeAdminInterceptor.java b/like-admin/src/main/java/com/hxkj/admin/LikeAdminInterceptor.java index 5755e8cc..c1148974 100644 --- a/like-admin/src/main/java/com/hxkj/admin/LikeAdminInterceptor.java +++ b/like-admin/src/main/java/com/hxkj/admin/LikeAdminInterceptor.java @@ -2,7 +2,7 @@ package com.hxkj.admin; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.hxkj.admin.config.SystemConfig; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemAdminService; import com.hxkj.admin.service.ISystemRoleMenuService; import com.hxkj.common.core.AjaxResult; @@ -34,19 +34,26 @@ public class LikeAdminInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 404拦截 + response.setContentType("application/json;charset=utf-8"); + if (response.getStatus() == 404) { + AjaxResult result = AjaxResult.failed(HttpEnum.REQUEST_404_ERROR.getCode(), HttpEnum.REQUEST_404_ERROR.getMsg()); + response.getWriter().print(JSON.toJSONString(result)); + return false; + } + // 判断请求接口 if (!(handler instanceof HandlerMethod)) { return HandlerInterceptor.super.preHandle(request, response, handler); } // 免登录接口 - List notLoginUri = Arrays.asList(SystemConfig.notLoginUri); + List notLoginUri = Arrays.asList(AdminConfig.notLoginUri); if (notLoginUri.contains(request.getRequestURI())) { return HandlerInterceptor.super.preHandle(request, response, handler); } // Token是否为空 - response.setContentType("application/json;charset=utf-8"); String token = request.getHeader("token"); if (StringUtils.isBlank(token)) { AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_EMPTY.getCode(), HttpEnum.TOKEN_EMPTY.getMsg()); @@ -55,7 +62,7 @@ public class LikeAdminInterceptor implements HandlerInterceptor { } // Token是否过期 - token = SystemConfig.backstageTokenKey + token; + token = AdminConfig.backstageTokenKey + token; if (!RedisUtil.exists(token)) { AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_INVALID.getCode(), HttpEnum.TOKEN_INVALID.getMsg()); response.getWriter().print(JSON.toJSONString(result)); @@ -64,15 +71,15 @@ public class LikeAdminInterceptor implements HandlerInterceptor { // 用户信息缓存 String uid = RedisUtil.get(token).toString(); - if (!RedisUtil.hExists(SystemConfig.backstageManageKey, uid)) { + if (!RedisUtil.hExists(AdminConfig.backstageManageKey, uid)) { iSystemAdminService.cacheAdminUserByUid(Integer.parseInt(uid)); } // 校验用户被删除 - Map map = ToolsUtil.jsonToMap(RedisUtil.hGet(SystemConfig.backstageManageKey, uid).toString()); + Map map = ToolsUtil.jsonToMap(RedisUtil.hGet(AdminConfig.backstageManageKey, uid).toString()); if (map == null || map.get("isDelete").toString().equals("1")) { RedisUtil.del(token); - RedisUtil.hDel(SystemConfig.backstageManageKey, uid); + RedisUtil.hDel(AdminConfig.backstageManageKey, uid); AjaxResult result = AjaxResult.failed(HttpEnum.TOKEN_INVALID.getCode(), HttpEnum.TOKEN_INVALID.getMsg()); response.getWriter().print(JSON.toJSONString(result)); return false; @@ -97,19 +104,19 @@ public class LikeAdminInterceptor implements HandlerInterceptor { LikeAdminThreadLocal.put("nickname", map.get("nickname").toString()); // 免权限验证接口 - List notAuthUri = Arrays.asList(SystemConfig.notLoginUri); + List notAuthUri = Arrays.asList(AdminConfig.notLoginUri); if (notAuthUri.contains(request.getRequestURI()) || Integer.parseInt(uid) == 1) { return HandlerInterceptor.super.preHandle(request, response, handler); } // 校验角色权限是否存在 String roleId = map.get("role").toString(); - if (!RedisUtil.hExists(SystemConfig.backstageRolesKey, roleId)) { + if (!RedisUtil.hExists(AdminConfig.backstageRolesKey, roleId)) { iSystemRoleMenuService.cacheRoleMenusByRoleId(Integer.parseInt(roleId)); } // 验证是否有权限操作 - String menus = RedisUtil.hGet(SystemConfig.backstageRolesKey, roleId).toString(); + String menus = RedisUtil.hGet(AdminConfig.backstageRolesKey, roleId).toString(); if (menus.equals("") || !Arrays.asList(menus.split(",")).contains(request.getRequestURI())) { AjaxResult result = AjaxResult.failed(HttpEnum.NO_PERMISSION.getCode(), HttpEnum.NO_PERMISSION.getMsg()); response.getWriter().print(JSON.toJSONString(result)); diff --git a/like-admin/src/main/java/com/hxkj/admin/LikeAdminThreadLocal.java b/like-admin/src/main/java/com/hxkj/admin/LikeAdminThreadLocal.java index 38c45370..77ff28d2 100644 --- a/like-admin/src/main/java/com/hxkj/admin/LikeAdminThreadLocal.java +++ b/like-admin/src/main/java/com/hxkj/admin/LikeAdminThreadLocal.java @@ -17,7 +17,6 @@ public class LikeAdminThreadLocal { */ private static final java.lang.ThreadLocal> MY_LOCAL = new java.lang.ThreadLocal<>(); - /** * 写入本地线程 */ diff --git a/like-admin/src/main/java/com/hxkj/admin/config/SystemConfig.java b/like-admin/src/main/java/com/hxkj/admin/config/AdminConfig.java similarity index 91% rename from like-admin/src/main/java/com/hxkj/admin/config/SystemConfig.java rename to like-admin/src/main/java/com/hxkj/admin/config/AdminConfig.java index f90585cb..62a15dff 100644 --- a/like-admin/src/main/java/com/hxkj/admin/config/SystemConfig.java +++ b/like-admin/src/main/java/com/hxkj/admin/config/AdminConfig.java @@ -1,9 +1,9 @@ package com.hxkj.admin.config; /** - * 系统配置 + * 后台公共配置 */ -public class SystemConfig { +public class AdminConfig { // 管理缓存键 public static final String backstageManageKey = "backstage:manage"; diff --git a/like-admin/src/main/java/com/hxkj/admin/config/MybatisPlusConfig.java b/like-admin/src/main/java/com/hxkj/admin/config/MybatisPlusConfig.java index 0728140f..08026f47 100644 --- a/like-admin/src/main/java/com/hxkj/admin/config/MybatisPlusConfig.java +++ b/like-admin/src/main/java/com/hxkj/admin/config/MybatisPlusConfig.java @@ -5,6 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +/** + * MybatisPlus配置 + */ @Configuration public class MybatisPlusConfig { diff --git a/like-admin/src/main/java/com/hxkj/admin/config/WebMvcConfig.java b/like-admin/src/main/java/com/hxkj/admin/config/WebMvcConfig.java index 024846e2..1444be62 100644 --- a/like-admin/src/main/java/com/hxkj/admin/config/WebMvcConfig.java +++ b/like-admin/src/main/java/com/hxkj/admin/config/WebMvcConfig.java @@ -11,6 +11,9 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import javax.annotation.Resource; +/** + * Web配置 + */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/AlbumController.java b/like-admin/src/main/java/com/hxkj/admin/controller/AlbumController.java index 373a5b7a..aba98e88 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/AlbumController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/AlbumController.java @@ -1,6 +1,7 @@ package com.hxkj.admin.controller; import com.alibaba.fastjson.JSONArray; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.IAlbumService; import com.hxkj.admin.validate.AlbumParam; import com.hxkj.admin.validate.PageParam; @@ -42,6 +43,7 @@ public class AlbumController { * @author fzr * @return Object */ + @Log(title = "相册重命名") @PostMapping("/albumRename") public Object albumRename(@Validated(value = AlbumParam.rename.class) @RequestBody AlbumParam albumParam) { iAlbumService.albumRename(albumParam.getId(), albumParam.getName()); @@ -54,6 +56,7 @@ public class AlbumController { * @author fzr * @return Object */ + @Log(title = "相册移动") @PostMapping("/albumMove") public Object albumMove(@Validated(value = AlbumParam.albumMove.class) @RequestBody AlbumParam albumParam) { iAlbumService.albumMove(albumParam.getId(), albumParam.getCid()); @@ -66,6 +69,7 @@ public class AlbumController { * @author fzr * @return Object */ + @Log(title = "相册删除") @PostMapping("/albumDel") public Object albumDel(@Validated(value = AlbumParam.delete.class) @RequestBody AlbumParam albumParam) { iAlbumService.albumDel(albumParam.getId()); @@ -90,6 +94,7 @@ public class AlbumController { * @author fzr * @return Object */ + @Log(title = "相册分类新增") @PostMapping("/cateAdd") public Object cateAdd(@Validated(value = AlbumParam.cateAdd.class) @RequestBody AlbumParam albumParam) { iAlbumService.cateAdd(albumParam); @@ -102,6 +107,7 @@ public class AlbumController { * @author fzr * @return Object */ + @Log(title = "相册分类重命名") @PostMapping("/cateRename") public Object cateRename(@Validated(value = AlbumParam.rename.class) @RequestBody AlbumParam albumParam) { iAlbumService.cateRename(albumParam.getId(), albumParam.getName()); @@ -109,11 +115,12 @@ public class AlbumController { } /** - * 分类重命名 + * 分类删除 * * @author fzr * @return Object */ + @Log(title = "相册分类删除") @PostMapping("/cateDel") public Object cateDel(@Validated(value = AlbumParam.delete.class) @RequestBody AlbumParam albumParam) { iAlbumService.cateDel(albumParam.getId()); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/ArticleController.java b/like-admin/src/main/java/com/hxkj/admin/controller/ArticleController.java new file mode 100644 index 00000000..8f72e89a --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/controller/ArticleController.java @@ -0,0 +1,206 @@ +package com.hxkj.admin.controller; + +import com.hxkj.admin.config.aop.Log; +import com.hxkj.admin.service.IArticleService; +import com.hxkj.admin.validate.article.CategoryParam; +import com.hxkj.admin.validate.article.ArticleParam; +import com.hxkj.admin.validate.PageParam; +import com.hxkj.admin.vo.article.ArticleDetailVo; +import com.hxkj.admin.vo.article.ArticleListVo; +import com.hxkj.admin.vo.article.CategoryVo; +import com.hxkj.common.core.AjaxResult; +import com.hxkj.common.core.PageResult; +import com.hxkj.common.validator.annotation.IDMust; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +@RestController +@RequestMapping("/api/article") +public class ArticleController { + + @Resource + IArticleService iArticleService; + + /** + * 文章列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/articleList") + public Object articleList(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult vos = iArticleService.articleList(pageParam, params); + return AjaxResult.success(vos); + } + + /** + * 文章列表 + * + * @author fzr + * @param id 文章ID + * @return Object + */ + @GetMapping("/articleDetail") + public Object articleDetail(@Validated @IDMust() @RequestParam("id") Integer id) { + try { + ArticleDetailVo vo = iArticleService.articleDetail(id); + return AjaxResult.success(vo); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 文章新增 + * + * @author fzr + * @param articleParam 文章参数 + * @return Object + */ + @Log(title = "文章新增") + @PostMapping("/articleAdd") + public Object articleAdd( + @Validated(value = ArticleParam.create.class) + @RequestBody ArticleParam articleParam) { + try { + iArticleService.articleAdd(articleParam); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 文章编辑 + * + * @author fzr + * @param articleParam 文章参数 + * @return Object + */ + @Log(title = "文章编辑") + @PostMapping("/articleEdit") + public Object articleEdit(@Validated(value = ArticleParam.update.class) + @RequestBody ArticleParam articleParam) { + try { + iArticleService.articleEdit(articleParam); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 文章删除 + * + * @author fzr + * @param articleParam 文章参数 + * @return Object + */ + @Log(title = "文章删除") + @PostMapping("/articleDel") + public Object articleDel(@Validated(value = ArticleParam.delete.class) + @RequestBody ArticleParam articleParam) { + try { + iArticleService.articleDel(articleParam.getId()); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 分类列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/cateList") + public Object cateList(@Validated PageParam pageParam, + @RequestParam Map params) { + try { + PageResult voPageResult = iArticleService.cateList(pageParam, params); + return AjaxResult.success(voPageResult); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 分类详情 + * + * @author fzr + * @param id 主键 + * @return Object + */ + @GetMapping("/cateDetail") + public Object cateDetail(@Validated @IDMust() @RequestParam("id") Integer id) { + CategoryVo vo = iArticleService.cateDetail(id); + return AjaxResult.success(vo); + } + + /** + * 分类新增 + * + * @author fzr + * @param articleCateParam 分类参数 + * @return Object + */ + @Log(title = "文章分类新增") + @PostMapping("/cateAdd") + public Object cateAdd(@Validated(value = CategoryParam.create.class) + @RequestBody CategoryParam articleCateParam) { + try { + iArticleService.cateAdd(articleCateParam); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 分类编辑 + * + * @author fzr + * @param articleCateParam 分类编辑 + * @return Object + */ + @Log(title = "文章分类编辑") + @PostMapping("/cateEdit") + public Object cateEdit(@Validated(value = CategoryParam.update.class) + @RequestBody CategoryParam articleCateParam) { + try { + iArticleService.cateEdit(articleCateParam); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + + /** + * 分类删除 + * + * @author fzr + * @param articleCateParam 分类删除 + * @return Object + */ + @Log(title = "文章分类删除") + @PostMapping("/cateDel") + public Object cateDel(@Validated(value = CategoryParam.delete.class) + @RequestBody CategoryParam articleCateParam) { + try { + iArticleService.cateDel(articleCateParam.getId()); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.failed(e.getMessage()); + } + } + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/UploadController.java b/like-admin/src/main/java/com/hxkj/admin/controller/UploadController.java index 09cfb781..30dabf33 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/UploadController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/UploadController.java @@ -1,6 +1,7 @@ package com.hxkj.admin.controller; import com.hxkj.admin.LikeAdminThreadLocal; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.IAlbumService; import com.hxkj.common.core.AjaxResult; import com.hxkj.common.enums.AlbumEnum; @@ -34,6 +35,7 @@ public class UploadController { * @param request 请求对象 * @return Object */ + @Log(title = "上传图片") @PostMapping("/image") public Object image(HttpServletRequest request) { MultipartFile multipartFile = ((MultipartRequest) request).getFile("file"); @@ -69,6 +71,7 @@ public class UploadController { * @param request 请求对象 * @return Object */ + @Log(title = "上传视频") @PostMapping("/video") public Object video(HttpServletRequest request) { MultipartFile multipartFile = ((MultipartRequest) request).getFile("file"); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/monitor/CacheController.java b/like-admin/src/main/java/com/hxkj/admin/controller/monitor/CacheController.java index 4f3093cc..8f24a37a 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/monitor/CacheController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/monitor/CacheController.java @@ -1,6 +1,7 @@ package com.hxkj.admin.controller.monitor; +import com.hxkj.admin.config.aop.Log; import com.hxkj.common.core.AjaxResult; import com.hxkj.common.utils.StringUtil; import org.springframework.data.redis.connection.RedisServerCommands; @@ -29,6 +30,7 @@ public class CacheController { * @author fzr * @return Object */ + @Log(title = "缓存监控") @GetMapping("/cache") public Object info() { Properties info = (Properties) redisTemplate.execute((RedisCallback) RedisServerCommands::info); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/monitor/ServerController.java b/like-admin/src/main/java/com/hxkj/admin/controller/monitor/ServerController.java index 24b87123..62de0b1c 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/monitor/ServerController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/monitor/ServerController.java @@ -1,5 +1,6 @@ package com.hxkj.admin.controller.monitor; +import com.hxkj.admin.config.aop.Log; import com.hxkj.common.core.AjaxResult; import com.hxkj.common.core.ServerResult; import org.springframework.web.bind.annotation.GetMapping; @@ -18,6 +19,7 @@ public class ServerController { * @author fzr * @return Object */ + @Log(title = "服务监控") @GetMapping("/server") public Object info() { ServerResult server = new ServerResult(); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/setting/BasicsController.java b/like-admin/src/main/java/com/hxkj/admin/controller/setting/BasicsController.java index fdee7315..4ce2a3fa 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/setting/BasicsController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/setting/BasicsController.java @@ -1,5 +1,6 @@ package com.hxkj.admin.controller.setting; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.IBasicsService; import com.hxkj.common.core.AjaxResult; import com.hxkj.common.utils.HttpUtil; @@ -26,6 +27,7 @@ public class BasicsController { * @author fzr * @return Object */ + @Log(title = "网站信息") @RequestMapping("/website") public Object website(@RequestBody Map params) { if (HttpUtil.isGet()) { @@ -47,6 +49,7 @@ public class BasicsController { * @author fzr * @return Object */ + @Log(title = "备案信息") @RequestMapping("/copyright") public Object copyright(@RequestBody Map params) { if (HttpUtil.isGet()) { diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemAdminController.java b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemAdminController.java index 84a1406e..7d03005a 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemAdminController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemAdminController.java @@ -1,5 +1,6 @@ package com.hxkj.admin.controller.system; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.ISystemAdminService; import com.hxkj.admin.validate.PageParam; import com.hxkj.admin.validate.system.SystemAdminParam; @@ -55,6 +56,7 @@ public class SystemAdminController { * @param systemAdminParam 参数 * @return Object */ + @Log(title = "管理员新增") @PostMapping("/add") public Object add(@Validated(value = SystemAdminParam.create.class) @RequestBody SystemAdminParam systemAdminParam) { iSystemAdminService.add(systemAdminParam); @@ -68,6 +70,7 @@ public class SystemAdminController { * @param systemAdminParam 参数 * @return Object */ + @Log(title = "管理员编辑") @PostMapping("/edit") public Object edit(@Validated(value = SystemAdminParam.update.class) @RequestBody SystemAdminParam systemAdminParam) { iSystemAdminService.edit(systemAdminParam); @@ -80,6 +83,7 @@ public class SystemAdminController { * @author fzr * @return Object */ + @Log(title = "管理员删除") @PostMapping("/del") public Object del(@Validated(value = SystemAdminParam.delete.class) @RequestBody SystemAdminParam systemAdminParam) { iSystemAdminService.del(systemAdminParam.getId()); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemMenuController.java b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemMenuController.java index 5913d9ee..f9281ed3 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemMenuController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemMenuController.java @@ -2,6 +2,7 @@ package com.hxkj.admin.controller.system; import com.alibaba.fastjson.JSONArray; import com.hxkj.admin.LikeAdminThreadLocal; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.ISystemMenuService; import com.hxkj.admin.validate.system.SystemMenuParam; import com.hxkj.admin.vo.system.SystemMenuVo; @@ -65,6 +66,7 @@ public class SystemMenuController { * @author fzr * @return Object */ + @Log(title = "菜单新增") @PostMapping("/add") public Object add(@Validated(value = SystemMenuParam.create.class) @RequestBody SystemMenuParam systemMenuParam) { iSystemMenuService.add(systemMenuParam); @@ -77,6 +79,7 @@ public class SystemMenuController { * @author fzr * @return Object */ + @Log(title = "菜单编辑") @PostMapping("/edit") public Object edit(@Validated(value = SystemMenuParam.update.class) @RequestBody SystemMenuParam systemMenuParam) { iSystemMenuService.edit(systemMenuParam); @@ -89,6 +92,7 @@ public class SystemMenuController { * @author fzr * @return Object */ + @Log(title = "菜单删除") @PostMapping("/del") public Object del(@Validated(value = SystemMenuParam.delete.class) @RequestBody SystemMenuParam systemMenuParam) { iSystemMenuService.del(systemMenuParam.getId()); diff --git a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemRoleController.java b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemRoleController.java index 9ce0e20f..365f5a82 100644 --- a/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemRoleController.java +++ b/like-admin/src/main/java/com/hxkj/admin/controller/system/SystemRoleController.java @@ -1,5 +1,6 @@ package com.hxkj.admin.controller.system; +import com.hxkj.admin.config.aop.Log; import com.hxkj.admin.service.ISystemRoleService; import com.hxkj.admin.validate.PageParam; import com.hxkj.admin.validate.system.SystemRoleParam; @@ -29,6 +30,7 @@ public class SystemRoleController { * @param pageParam 分页参数 * @return Object */ + @Log(title = "角色列表") @GetMapping("/lists") public Object lists(@Validated PageParam pageParam) { PageResult lists = iSystemRoleService.lists(pageParam); @@ -41,6 +43,7 @@ public class SystemRoleController { * @author fzr * @return Object */ + @Log(title = "角色详情") @GetMapping("/detail") public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { SystemRoleVo vo = iSystemRoleService.detail(id); @@ -54,6 +57,7 @@ public class SystemRoleController { * @param systemRoleParam 角色参数 * @return Object */ + @Log(title = "角色新增") @PostMapping("/add") public Object add(@Validated(value = SystemRoleParam.create.class) @RequestBody SystemRoleParam systemRoleParam) { iSystemRoleService.add(systemRoleParam); @@ -67,6 +71,7 @@ public class SystemRoleController { * @param systemRoleParam 角色参数 * @return Object */ + @Log(title = "角色编辑") @PostMapping("/edit") public Object edit(@Validated(value = SystemRoleParam.create.class) @RequestBody SystemRoleParam systemRoleParam) { iSystemRoleService.edit(systemRoleParam); @@ -80,6 +85,7 @@ public class SystemRoleController { * @param systemRoleParam 角色参数 * @return Object */ + @Log(title = "角色删除") @PostMapping("/del") public Object del(@Validated(value = SystemRoleParam.delete.class) @RequestBody SystemRoleParam systemRoleParam) { iSystemRoleService.del(systemRoleParam.getId()); diff --git a/like-admin/src/main/java/com/hxkj/admin/service/IAlbumService.java b/like-admin/src/main/java/com/hxkj/admin/service/IAlbumService.java index cdc8784e..a7cd0a1f 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/IAlbumService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/IAlbumService.java @@ -9,7 +9,7 @@ import com.hxkj.common.core.PageResult; import java.util.Map; /** - * 相册服务类 + * 相册服务接口类 */ public interface IAlbumService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/IArticleService.java b/like-admin/src/main/java/com/hxkj/admin/service/IArticleService.java new file mode 100644 index 00000000..c89c13ff --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/service/IArticleService.java @@ -0,0 +1,102 @@ +package com.hxkj.admin.service; + +import com.hxkj.admin.validate.PageParam; +import com.hxkj.admin.validate.article.CategoryParam; +import com.hxkj.admin.validate.article.ArticleParam; +import com.hxkj.admin.vo.article.ArticleDetailVo; +import com.hxkj.admin.vo.article.ArticleListVo; +import com.hxkj.admin.vo.article.CategoryVo; +import com.hxkj.common.core.PageResult; + +import java.util.Map; + +/** + * 文章服务接口类 + */ +public interface IArticleService { + + /** + * 文章列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + PageResult articleList(PageParam pageParam, Map params); + + /** + * 文章详情 + * + * @author fzr + * @param id 主键ID + */ + ArticleDetailVo articleDetail(Integer id); + + /** + * 文章新增 + * + * @author fzr + * @param articleParam 文章参数 + */ + void articleAdd(ArticleParam articleParam); + + /** + * 文章编辑 + * + * @author fzr + * @param articleParam 文章参数 + */ + void articleEdit(ArticleParam articleParam); + + /** + * 文章删除 + * + * @author fzr + * @param id 文章主键 + */ + void articleDel(Integer id); + + /** + * 分类列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + PageResult cateList(PageParam pageParam, Map params); + + /** + * 分类详情 + * + * @author fzr + * @param id 分类ID + */ + CategoryVo cateDetail(Integer id); + + /** + * 分类新增 + * + * @author fzr + * @param articleCateParam 分类参数 + */ + void cateAdd(CategoryParam articleCateParam); + + /** + * 分类编辑 + * + * @author fzr + * @param articleCateParam 分类参数 + */ + void cateEdit(CategoryParam articleCateParam); + + /** + * 分类删除 + * + * @author fzr + * @param id 分类ID + */ + void cateDel(Integer id); + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/service/IBasicsService.java b/like-admin/src/main/java/com/hxkj/admin/service/IBasicsService.java index 480b7dd9..6ca9660d 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/IBasicsService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/IBasicsService.java @@ -3,7 +3,7 @@ package com.hxkj.admin.service; import java.util.Map; /** - * 基础配置服务类 + * 基础配置服务接口类 */ public interface IBasicsService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/IIndexService.java b/like-admin/src/main/java/com/hxkj/admin/service/IIndexService.java index 36f5b363..03a4705e 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/IIndexService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/IIndexService.java @@ -3,7 +3,7 @@ package com.hxkj.admin.service; import java.util.Map; /** - * 主页服务类 + * 主页服务接口类 */ public interface IIndexService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemAdminService.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemAdminService.java index 0dff1c88..8c7aa2b6 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemAdminService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemAdminService.java @@ -9,7 +9,7 @@ import com.hxkj.common.entity.system.SystemAdmin; import java.util.Map; /** - * 系统管理员服务 + * 系统管理员服务接口类 */ public interface ISystemAdminService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemLogServer.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemLogServer.java index 1892cd10..d7d45409 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemLogServer.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemLogServer.java @@ -8,7 +8,7 @@ import com.hxkj.common.core.PageResult; import java.util.Map; /** - * 系统日志服务类 + * 系统日志服务类接口类 */ public interface ISystemLogServer { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemLoginService.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemLoginService.java index cdcf2b0b..5aa1c7b5 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemLoginService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemLoginService.java @@ -5,7 +5,7 @@ import com.hxkj.admin.validate.system.SystemLoginParam; import java.util.Map; /** - * 系统登录服务 + * 系统登录服务接口类 */ public interface ISystemLoginService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemMenuService.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemMenuService.java index e52aaad8..7bc941e8 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemMenuService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemMenuService.java @@ -5,7 +5,7 @@ import com.hxkj.admin.validate.system.SystemMenuParam; import com.hxkj.admin.vo.system.SystemMenuVo; /** - * 系统菜单服务 + * 系统菜单服务接口类 */ public interface ISystemMenuService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleMenuService.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleMenuService.java index 05260226..1fa03f7f 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleMenuService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleMenuService.java @@ -3,7 +3,7 @@ package com.hxkj.admin.service; import java.util.List; /** - * 系统角色菜单服务 + * 系统角色菜单服务接口类 */ public interface ISystemRoleMenuService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleService.java b/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleService.java index dbc908f4..6c84d710 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleService.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/ISystemRoleService.java @@ -7,7 +7,7 @@ import com.hxkj.common.core.PageResult; import org.springframework.validation.annotation.Validated; /** - * 系统角色服务 + * 系统角色服务接口类 */ public interface ISystemRoleService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/IAlbumServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/AlbumServiceImpl.java similarity index 99% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/IAlbumServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/AlbumServiceImpl.java index 4fbdb163..0fca1a19 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/IAlbumServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/AlbumServiceImpl.java @@ -28,8 +28,11 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +/** + * 相册服务实现类 + */ @Service -public class IAlbumServiceImpl implements IAlbumService { +public class AlbumServiceImpl implements IAlbumService { @Resource AlbumMapper albumMapper; diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ArticleServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/ArticleServiceImpl.java new file mode 100644 index 00000000..d50e7998 --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/ArticleServiceImpl.java @@ -0,0 +1,298 @@ +package com.hxkj.admin.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.query.MPJQueryWrapper; +import com.hxkj.admin.service.IArticleService; +import com.hxkj.admin.validate.PageParam; +import com.hxkj.admin.validate.article.CategoryParam; +import com.hxkj.admin.validate.article.ArticleParam; +import com.hxkj.admin.vo.article.ArticleDetailVo; +import com.hxkj.admin.vo.article.ArticleListVo; +import com.hxkj.admin.vo.article.CategoryVo; +import com.hxkj.common.core.PageResult; +import com.hxkj.common.entity.Article; +import com.hxkj.common.entity.ArticleCategory; +import com.hxkj.common.mapper.ArticleCategoryMapper; +import com.hxkj.common.mapper.ArticleMapper; +import com.hxkj.common.utils.StringUtil; +import com.hxkj.common.utils.TimeUtil; +import com.hxkj.common.utils.UrlUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.*; + +/** + * 文章服务实现类 + */ +@Service +public class ArticleServiceImpl implements IArticleService { + + @Resource + ArticleMapper articleMapper; + + @Resource + ArticleCategoryMapper articleCategoryMapper; + + /** + * 文章列表 + * + * @author fzr + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + @Override + public PageResult articleList(PageParam pageParam, Map params) { + Integer pageNo = pageParam.getPageNo(); + Integer pageSize = pageParam.getPageSize(); + + MPJQueryWrapper
mpjQueryWrapper = new MPJQueryWrapper
() + .selectAll(Article.class) + .select("ac.name as category") + .innerJoin("ls_article_category ac ON ac.id=t.cid") + .eq("t.is_delete", 0) + .orderByDesc(Arrays.asList("t.sort", "t.id")); + + IPage iPage = articleMapper.selectJoinPage( + new Page<>(pageNo, pageSize), + ArticleListVo.class, + mpjQueryWrapper); + + for (ArticleListVo vo : iPage.getRecords()) { + vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage())); + vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime())); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), iPage.getRecords()); + } + + /** + * 文章详情 + * + * @author fzr + * @param id 主键ID + */ + @Override + public ArticleDetailVo articleDetail(Integer id) { + Article model = articleMapper.selectOne( + new QueryWrapper
() + .select(Article.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time")) + .eq("id", id) + .eq("is_delete", 0)); + + Assert.notNull(model, "文章不存在"); + + ArticleDetailVo vo = new ArticleDetailVo(); + BeanUtils.copyProperties(model, vo); + vo.setContent(StringUtil.isNull(model.getContent()) ? "" : model.getContent()); + vo.setImage(UrlUtil.toAbsoluteUrl(model.getImage())); + vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime())); + + return vo; + } + + /** + * 文章新增 + * + * @author fzr + * @param articleParam 文章参数 + */ + @Override + public void articleAdd(ArticleParam articleParam) { + Article model = new Article(); + model.setCid(articleParam.getCid()); + model.setTitle(articleParam.getTitle()); + model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage())); + model.setIntro(articleParam.getIntro()); + model.setContent(articleParam.getContent()); + model.setSort(articleParam.getSort()); + model.setIsShow(articleParam.getIsShow()); + model.setVisit(0); + model.setCreateTime(TimeUtil.timestamp()); + model.setUpdateTime(TimeUtil.timestamp()); + articleMapper.insert(model); + } + + /** + * 文章编辑 + * + * @author fzr + * @param articleParam 文章参数 + */ + @Override + public void articleEdit(ArticleParam articleParam) { + Article model = articleMapper.selectOne( + new QueryWrapper
() + .eq("id", articleParam.getId()) + .eq("is_delete", 0)); + + Assert.notNull(model, "文章不存在!"); + + Assert.notNull(articleCategoryMapper.selectOne( + new QueryWrapper() + .eq("id", articleParam.getCid()) + .eq("is_delete", 0)), "分类不存在"); + + model.setCid(articleParam.getCid()); + model.setTitle(articleParam.getTitle()); + model.setImage(UrlUtil.toRelativeUrl(articleParam.getImage())); + model.setIntro(articleParam.getIntro()); + model.setContent(articleParam.getContent()); + model.setIsShow(articleParam.getIsShow()); + model.setSort(articleParam.getSort()); + model.setUpdateTime(TimeUtil.timestamp()); + articleMapper.updateById(model); + } + + /** + * 文章删除 + * + * @author fzr + * @param id 文章ID + */ + @Override + public void articleDel(Integer id) { + Article article = articleMapper.selectOne( + new QueryWrapper
() + .eq("id", id) + .eq("is_delete", 0)); + + Assert.notNull(article, "文章不存在!"); + + article.setIsDelete(1); + article.setDeleteTime(TimeUtil.timestamp()); + articleMapper.updateById(article); + } + + /** + * 分类列表 + * + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + @Override + public PageResult cateList(PageParam pageParam, Map params) { + Integer pageNo = pageParam.getPageNo(); + Integer pageSize = pageParam.getPageSize(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.select("id", "name", "sort", "is_show", "create_time", "update_time") + .eq("is_delete", 0); + + IPage iPage = articleCategoryMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); + + List list = new ArrayList<>(); + for (ArticleCategory category : iPage.getRecords()) { + CategoryVo vo = new CategoryVo(); + BeanUtils.copyProperties(category, vo); + + vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime())); + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 分类详情 + * + * @author fzr + * @param id 分类ID + * @return CategoryVo + */ + @Override + public CategoryVo cateDetail(Integer id) { + ArticleCategory model = articleCategoryMapper.selectOne( + new QueryWrapper() + .select(ArticleCategory.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time")) + .eq("id", id) + .eq("is_delete", 0)); + + Assert.notNull(model, "分类不存在"); + + CategoryVo vo = new CategoryVo(); + BeanUtils.copyProperties(model, vo); + vo.setCreateTime(TimeUtil.timestampToDate(model.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(model.getUpdateTime())); + + return vo; + } + + /** + * 分类新增 + * + * @author fzr + * @param categoryParam 分类参数 + */ + @Override + public void cateAdd(CategoryParam categoryParam) { + ArticleCategory model = new ArticleCategory(); + model.setId(categoryParam.getId()); + model.setName(categoryParam.getName()); + model.setSort(categoryParam.getSort()); + model.setCreateTime(TimeUtil.timestamp()); + model.setUpdateTime(TimeUtil.timestamp()); + articleCategoryMapper.insert(model); + } + + /** + * 文章编辑 + * + * @author fzr + * @param categoryParam 分类参数 + */ + @Override + public void cateEdit(CategoryParam categoryParam) { + ArticleCategory model = articleCategoryMapper.selectOne( + new QueryWrapper() + .select(ArticleCategory.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time")) + .eq("id", categoryParam.getId()) + .eq("is_delete", 0)); + + Assert.notNull(model, "分类不存在"); + + model.setName(categoryParam.getName()); + model.setSort(categoryParam.getSort()); + model.setUpdateTime(TimeUtil.timestamp()); + articleCategoryMapper.updateById(model); + } + + /** + * 分类参数 + * + * @author fzr + * @param id 分类ID + */ + @Override + public void cateDel(Integer id) { + ArticleCategory model = articleCategoryMapper.selectOne( + new QueryWrapper() + .select(ArticleCategory.class, info-> + !info.getColumn().equals("is_delete") && + !info.getColumn().equals("delete_time")) + .eq("id", id) + .eq("is_delete", 0)); + + Assert.notNull(model, "分类不存在"); + + model.setIsDelete(1); + model.setDeleteTime(TimeUtil.timestamp()); + articleCategoryMapper.updateById(model); + } + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/BasicsServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/BasicsServiceImpl.java index 3afeb5f6..d8102911 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/BasicsServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/BasicsServiceImpl.java @@ -8,6 +8,9 @@ import org.springframework.stereotype.Service; import java.util.LinkedHashMap; import java.util.Map; +/** + * 基础配置服务实现类 + */ @Service public class BasicsServiceImpl implements IBasicsService { diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/IIndexServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/IndexServiceImpl.java similarity index 63% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/IIndexServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/IndexServiceImpl.java index 6f7d8071..efa99885 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/IIndexServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/IndexServiceImpl.java @@ -1,15 +1,23 @@ package com.hxkj.admin.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hxkj.admin.service.IIndexService; +import com.hxkj.common.entity.Article; +import com.hxkj.common.mapper.ArticleMapper; import com.hxkj.common.utils.TimeUtil; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.Map; +import javax.annotation.Resource; +import java.util.*; +/** + * 主页服务实现类 + */ @Service -public class IIndexServiceImpl implements IIndexService { +public class IndexServiceImpl implements IIndexService { + + @Resource + ArticleMapper articleMapper; /** * 控制台数据 @@ -43,6 +51,14 @@ public class IIndexServiceImpl implements IIndexService { visitor.put("list", new ArrayList<>()); console.put("visitor", visitor); + // 文章排名 + List> articles = articleMapper.selectMaps(new QueryWrapper
() + .select("id", "title", "visit") + .eq("is_delete", 0) + .orderByDesc(Arrays.asList("visit", "id")) + .last("limit 10")); + console.put("article", articles); + return console; } diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemAdminServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemAdminServiceImpl.java similarity index 94% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemAdminServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemAdminServiceImpl.java index a668501d..d6c378b3 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemAdminServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemAdminServiceImpl.java @@ -5,7 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.hxkj.admin.config.SystemConfig; +import com.hxkj.admin.LikeAdminThreadLocal; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemAdminService; import com.hxkj.admin.service.ISystemRoleService; import com.hxkj.admin.validate.PageParam; @@ -21,8 +22,11 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +/** + * 系统管理员实现类 + */ @Service -public class ISystemAdminServiceImpl implements ISystemAdminService { +public class SystemAdminServiceImpl implements ISystemAdminService { @Resource SystemAdminMapper systemAdminMapper; @@ -78,8 +82,13 @@ public class ISystemAdminServiceImpl implements ISystemAdminService { SystemAdminVo vo = new SystemAdminVo(); BeanUtils.copyProperties(sysAdmin, vo); + if (sysAdmin.getId() == 1) { + vo.setRole("超级管理员"); + } else { + vo.setRole(iSystemRoleService.getRoleNameById(sysAdmin.getRole())); + } + vo.setAvatar(UrlUtil.toAbsoluteUrl(sysAdmin.getAvatar())); - vo.setRole(iSystemRoleService.getRoleNameById(sysAdmin.getRole())); vo.setCreateTime(TimeUtil.timestampToDate(sysAdmin.getCreateTime())); vo.setUpdateTime(TimeUtil.timestampToDate(sysAdmin.getUpdateTime())); vo.setLastLoginTime(TimeUtil.timestampToDate(sysAdmin.getLastLoginTime())); @@ -236,6 +245,9 @@ public class ISystemAdminServiceImpl implements ISystemAdminService { Assert.isFalse(id == 1, "系统管理员不允许删除"); + int adminId = Integer.parseInt(LikeAdminThreadLocal.getAdminId().toString()); + Assert.isFalse(id == adminId, "不能删除自己"); + SystemAdmin model = new SystemAdmin(); model.setId(id); model.setIsDelete(1); @@ -266,7 +278,7 @@ public class ISystemAdminServiceImpl implements ISystemAdminService { user.put("createTime", TimeUtil.timestampToDate(sysAdmin.getCreateTime())); user.put("updateTime", TimeUtil.timestampToDate(sysAdmin.getUpdateTime())); map.put(String.valueOf(sysAdmin.getId()), JSON.toJSONString(user)); - RedisUtil.hmSet(SystemConfig.backstageManageKey, map); + RedisUtil.hmSet(AdminConfig.backstageManageKey, map); } } diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLogServerImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLogServerImpl.java similarity index 97% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLogServerImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLogServerImpl.java index e989cdaa..39608ff9 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLogServerImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLogServerImpl.java @@ -23,8 +23,11 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +/** + * 系统日志服务实现类 + */ @Service -public class ISystemLogServerImpl implements ISystemLogServer { +public class SystemLogServerImpl implements ISystemLogServer { @Resource SystemLogOperateMapper logOperateMapper; diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLoginServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLoginServiceImpl.java similarity index 90% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLoginServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLoginServiceImpl.java index 13e83358..a17bb29a 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemLoginServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemLoginServiceImpl.java @@ -1,6 +1,6 @@ package com.hxkj.admin.service.impl; -import com.hxkj.admin.config.SystemConfig; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemAdminService; import com.hxkj.admin.service.ISystemLoginService; import com.hxkj.admin.validate.system.SystemLoginParam; @@ -23,8 +23,11 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; +/** + * 系统登录服务实现类 + */ @Service -public class ISystemLoginServiceImpl implements ISystemLoginService { +public class SystemLoginServiceImpl implements ISystemLoginService { @Resource SystemLogLoginMapper systemLogLoginMapper; @@ -36,7 +39,7 @@ public class ISystemLoginServiceImpl implements ISystemLoginService { ISystemAdminService iSystemAdminService; - private static final Logger log = LoggerFactory.getLogger(ISystemLoginServiceImpl.class); + private static final Logger log = LoggerFactory.getLogger(SystemLoginServiceImpl.class); /** * 登录 @@ -61,8 +64,9 @@ public class ISystemLoginServiceImpl implements ISystemLoginService { throw new LoginException(HttpEnum.LOGIN_DISABLE_ERROR.getCode(), HttpEnum.LOGIN_DISABLE_ERROR.getMsg()); } - String newPWd = password + sysAdmin.getId() + sysAdmin.getSalt(); + String newPWd = password + sysAdmin.getSalt(); String md5Pwd = ToolsUtil.makeMd5(newPWd); + System.out.println(md5Pwd); if (!md5Pwd.equals(sysAdmin.getPassword())) { this.recordLoginLog(sysAdmin.getId(), systemLoginParam.getUsername(), HttpEnum.LOGIN_ACCOUNT_ERROR.getMsg()); throw new LoginException(HttpEnum.LOGIN_ACCOUNT_ERROR.getCode(), HttpEnum.LOGIN_ACCOUNT_ERROR.getMsg()); @@ -74,7 +78,7 @@ public class ISystemLoginServiceImpl implements ISystemLoginService { systemAdminMapper.updateById(sysAdmin); String token = ToolsUtil.makeToken(); - RedisUtil.set(SystemConfig.backstageTokenKey+token, sysAdmin.getId(), 7200); + RedisUtil.set(AdminConfig.backstageTokenKey+token, sysAdmin.getId(), 7200); iSystemAdminService.cacheAdminUserByUid(sysAdmin.getId()); Map response = new LinkedHashMap<>(); @@ -99,7 +103,7 @@ public class ISystemLoginServiceImpl implements ISystemLoginService { */ @Override public void logout(String token) { - RedisUtil.del(SystemConfig.backstageTokenKey + token); + RedisUtil.del(AdminConfig.backstageTokenKey + token); } /** diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemMenuServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemMenuServiceImpl.java similarity index 96% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemMenuServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemMenuServiceImpl.java index e8fa515f..055916cd 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemMenuServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemMenuServiceImpl.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.hxkj.admin.LikeAdminThreadLocal; -import com.hxkj.admin.config.SystemConfig; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemMenuService; import com.hxkj.admin.service.ISystemRoleMenuService; import com.hxkj.admin.validate.system.SystemMenuParam; @@ -23,7 +23,7 @@ import java.util.Arrays; import java.util.List; @Service -public class ISystemMenuServiceImpl implements ISystemMenuService { +public class SystemMenuServiceImpl implements ISystemMenuService { @Resource SystemMenuMapper systemMenuMapper; @@ -154,7 +154,7 @@ public class ISystemMenuServiceImpl implements ISystemMenuService { model.setUpdateTime(System.currentTimeMillis() / 1000); systemMenuMapper.updateById(model); - RedisUtil.del(SystemConfig.backstageRolesKey); + RedisUtil.del(AdminConfig.backstageRolesKey); } /** @@ -171,7 +171,7 @@ public class ISystemMenuServiceImpl implements ISystemMenuService { systemMenuMapper.deleteById(id); iSystemRoleMenuService.batchDeleteByMenuId(id); - RedisUtil.del(SystemConfig.backstageRolesKey); + RedisUtil.del(AdminConfig.backstageRolesKey); } } diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleMenuServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleMenuServiceImpl.java similarity index 91% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleMenuServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleMenuServiceImpl.java index 6f79d100..3a3a2b95 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleMenuServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleMenuServiceImpl.java @@ -1,7 +1,7 @@ package com.hxkj.admin.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.hxkj.admin.config.SystemConfig; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemRoleMenuService; import com.hxkj.common.entity.system.SystemMenu; import com.hxkj.common.entity.system.SystemRoleMenu; @@ -9,17 +9,18 @@ import com.hxkj.common.mapper.system.SystemMenuMapper; import com.hxkj.common.mapper.system.SystemRoleMenuMapper; import com.hxkj.common.utils.ArrayUtil; import com.hxkj.common.utils.RedisUtil; -import com.hxkj.common.utils.ToolsUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +/** + * 系统菜单服务实现类 + */ @Service -public class ISystemRoleMenuServiceImpl implements ISystemRoleMenuService { +public class SystemRoleMenuServiceImpl implements ISystemRoleMenuService { @Resource SystemRoleMenuMapper systemRoleMenuMapper; @@ -114,7 +115,7 @@ public class ISystemRoleMenuServiceImpl implements ISystemRoleMenuService { } } - RedisUtil.hSet(SystemConfig.backstageRolesKey, String.valueOf(roleId), ArrayUtil.listStrToString(menuArray, ",")); + RedisUtil.hSet(AdminConfig.backstageRolesKey, String.valueOf(roleId), ArrayUtil.listStrToString(menuArray, ",")); } } diff --git a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleServiceImpl.java b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleServiceImpl.java similarity index 96% rename from like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleServiceImpl.java rename to like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleServiceImpl.java index a069eb5e..0f4a0924 100644 --- a/like-admin/src/main/java/com/hxkj/admin/service/impl/ISystemRoleServiceImpl.java +++ b/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemRoleServiceImpl.java @@ -4,8 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.hxkj.admin.config.SystemConfig; -import com.hxkj.admin.service.ISystemAdminService; +import com.hxkj.admin.config.AdminConfig; import com.hxkj.admin.service.ISystemRoleMenuService; import com.hxkj.admin.service.ISystemRoleService; import com.hxkj.admin.validate.PageParam; @@ -28,8 +27,11 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +/** + * 系统角色服务实现类 + */ @Service -public class ISystemRoleServiceImpl implements ISystemRoleService { +public class SystemRoleServiceImpl implements ISystemRoleService { @Resource SystemAdminMapper systemAdminMapper; @@ -199,7 +201,7 @@ public class ISystemRoleServiceImpl implements ISystemRoleService { systemRoleMapper.deleteById(id); iSystemRoleMenuService.batchDeleteByRoleId(id); - RedisUtil.hDel(SystemConfig.backstageRolesKey, String.valueOf(id)); + RedisUtil.hDel(AdminConfig.backstageRolesKey, String.valueOf(id)); } } diff --git a/like-admin/src/main/java/com/hxkj/admin/validate/article/ArticleParam.java b/like-admin/src/main/java/com/hxkj/admin/validate/article/ArticleParam.java new file mode 100644 index 00000000..f93858e8 --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/validate/article/ArticleParam.java @@ -0,0 +1,56 @@ +package com.hxkj.admin.validate.article; + +import com.hxkj.admin.validate.system.SystemAdminParam; +import com.hxkj.common.validator.annotation.IDMust; +import com.hxkj.common.validator.annotation.IntegerContains; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 文章参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class ArticleParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + @IDMust(message = "id参数必传且需大于0", groups = {update.class, delete.class}) + private Integer id; + + @IDMust(message = "id参数必传且需大于0", groups = {create.class, update.class}) + private Integer cid; + + @NotEmpty(message = "文章标题不能为空", groups = {create.class, update.class}) + @Length(min = 1, max = 200, message = "文章标题不能大于200个字符", groups = {create.class, update.class}) + private String title; + + @Length(max = 200, message = "简介不能超出200个字符", groups = {create.class, update.class}) + private String intro = ""; + + @Length(max = 200, message = "图片链接过长不能超200个字符", groups = {create.class, update.class}) + private String image = ""; + + private String content = ""; + + @NotNull(message = "排序号不能为空", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "排序号值不能少于0", groups = {create.class, update.class}) + private Integer sort; + + @NotNull(message = "缺少isShow参数", groups = {create.class, update.class}) + @IntegerContains(values = {0, 1}, message = "isShow不是合法值", groups = {create.class, update.class}) + private Integer isShow; + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/validate/article/CategoryParam.java b/like-admin/src/main/java/com/hxkj/admin/validate/article/CategoryParam.java new file mode 100644 index 00000000..5965b8a7 --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/validate/article/CategoryParam.java @@ -0,0 +1,44 @@ +package com.hxkj.admin.validate.article; + +import com.hxkj.common.validator.annotation.IDMust; +import com.hxkj.common.validator.annotation.IntegerContains; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 文章分类参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class CategoryParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + @IDMust(message = "id参数必传且需大于0", groups = {ArticleParam.create.class, ArticleParam.delete.class}) + private Integer id; + + @NotEmpty(message = "分类名称不能为空", groups = {create.class, update.class}) + @Length(min = 1, max = 60, message = "分类名称不能大于60个字符", groups = {create.class, update.class}) + private String name; + + @NotNull(message = "排序号不能为空", groups = {create.class, update.class}) + @DecimalMin(value = "0", message = "排序号值不能少于0", groups = {create.class, update.class}) + private Integer sort; + + @NotNull(message = "缺少isShow参数", groups = {create.class, update.class}) + @IntegerContains(values = {0, 1}, message = "isShow不是合法值", groups = {create.class, update.class}) + private Integer isShow; + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleDetailVo.java b/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleDetailVo.java new file mode 100644 index 00000000..4af833ee --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleDetailVo.java @@ -0,0 +1,27 @@ +package com.hxkj.admin.vo.article; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 文章详情Vo + */ +@Data +public class ArticleDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private Integer cid; + private String title; + private String image; + private String intro; + private String content; + private Integer visit; + private Integer sort; + private Integer isShow; + private String createTime; + private String updateTime; + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleListVo.java b/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleListVo.java new file mode 100644 index 00000000..99361ab3 --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/vo/article/ArticleListVo.java @@ -0,0 +1,22 @@ +package com.hxkj.admin.vo.article; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ArticleListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Integer id; + private String category; + private String title; + private String image; + private Integer visit; + private Integer sort; + private Integer isShow; + private String createTime; + private String updateTime; + +} diff --git a/like-admin/src/main/java/com/hxkj/admin/vo/article/CategoryVo.java b/like-admin/src/main/java/com/hxkj/admin/vo/article/CategoryVo.java new file mode 100644 index 00000000..76731fe8 --- /dev/null +++ b/like-admin/src/main/java/com/hxkj/admin/vo/article/CategoryVo.java @@ -0,0 +1,20 @@ +package com.hxkj.admin.vo.article; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 文章分类Vo + */ +@Data +public class CategoryVo implements Serializable { + + private Integer id; + private String name; + private Integer sort; + private Integer isShow; + private String createTime; + private String updateTime; + +} diff --git a/like-admin/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/like-admin/src/main/resources/META-INF/additional-spring-configuration-metadata.json index f534bc99..6a59a7b2 100644 --- a/like-admin/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/like-admin/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1,10 +1,5 @@ { "properties": [ - { - "name": "like.debug", - "type": "java.lang.String", - "description": "Description for like.debug." - }, { "name": "like.upload-directory", "type": "java.lang.String", diff --git a/like-admin/src/main/resources/application.yml b/like-admin/src/main/resources/application.yml index 07779a3e..a5ff125c 100644 --- a/like-admin/src/main/resources/application.yml +++ b/like-admin/src/main/resources/application.yml @@ -1,6 +1,5 @@ # 项目配置 like: - debug: true upload-directory: D:\www\frame\ # 服务配置 diff --git a/like-admin/src/main/resources/banner.txt b/like-admin/src/main/resources/banner.txt index b8eebe5c..e6c8979a 100644 --- a/like-admin/src/main/resources/banner.txt +++ b/like-admin/src/main/resources/banner.txt @@ -7,4 +7,4 @@ Spring Boot Version: ${spring-boot.version} // |_____|_|_|\_\/_/ \_\__,_|_| |_| |_|_|_| |_| // // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // // 佛祖保佑 永不宕机 永无BUG // -/////////////////////////////////////////////////////// \ No newline at end of file +////////////////////////////////////////////////////// \ No newline at end of file diff --git a/like-common/src/main/java/com/hxkj/common/core/AjaxResult.java b/like-common/src/main/java/com/hxkj/common/core/AjaxResult.java index 518bc424..a34e1966 100644 --- a/like-common/src/main/java/com/hxkj/common/core/AjaxResult.java +++ b/like-common/src/main/java/com/hxkj/common/core/AjaxResult.java @@ -3,10 +3,13 @@ package com.hxkj.common.core; import com.hxkj.common.enums.HttpEnum; import lombok.Data; +import java.io.Serializable; import java.util.ArrayList; @Data -public class AjaxResult { +public class AjaxResult implements Serializable { + + private static final long serialVersionUID = 1L; /** 状态码 **/ private Integer code; diff --git a/like-common/src/main/java/com/hxkj/common/entity/Article.java b/like-common/src/main/java/com/hxkj/common/entity/Article.java new file mode 100644 index 00000000..fdf4aa1c --- /dev/null +++ b/like-common/src/main/java/com/hxkj/common/entity/Article.java @@ -0,0 +1,32 @@ +package com.hxkj.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +/** + * 文章实体 + */ +@Data +public class Article implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; + private Integer cid; + private String title; + private String intro; + private String image; + private String content; + private Integer visit; + private Integer sort; + private Integer isShow; + private Integer isDelete; + private Long createTime; + private Long updateTime; + private Long deleteTime; + +} diff --git a/like-common/src/main/java/com/hxkj/common/entity/ArticleCategory.java b/like-common/src/main/java/com/hxkj/common/entity/ArticleCategory.java new file mode 100644 index 00000000..eff3f566 --- /dev/null +++ b/like-common/src/main/java/com/hxkj/common/entity/ArticleCategory.java @@ -0,0 +1,27 @@ +package com.hxkj.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; + +/** + * 文章分类实体 + */ +@Data +public class ArticleCategory implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value="id", type= IdType.AUTO) + private Integer id; + private String name; + private Integer sort; + private Integer isShow; + private Integer isDelete; + private Long createTime; + private Long updateTime; + private Long deleteTime; + +} diff --git a/like-common/src/main/java/com/hxkj/common/entity/system/SystemLogOperate.java b/like-common/src/main/java/com/hxkj/common/entity/system/SystemLogOperate.java index 58b0776c..1eba7f17 100644 --- a/like-common/src/main/java/com/hxkj/common/entity/system/SystemLogOperate.java +++ b/like-common/src/main/java/com/hxkj/common/entity/system/SystemLogOperate.java @@ -10,8 +10,8 @@ import java.io.Serializable; * 系统操作日志实体 */ @Data -public class SystemLogOperate implements Serializable -{ +public class SystemLogOperate implements Serializable { + private static final long serialVersionUID = 1L; @TableId(value="id", type= IdType.AUTO) diff --git a/like-common/src/main/java/com/hxkj/common/entity/system/SystemRoleMenu.java b/like-common/src/main/java/com/hxkj/common/entity/system/SystemRoleMenu.java index d788cd9d..a5a5992a 100644 --- a/like-common/src/main/java/com/hxkj/common/entity/system/SystemRoleMenu.java +++ b/like-common/src/main/java/com/hxkj/common/entity/system/SystemRoleMenu.java @@ -3,8 +3,6 @@ package com.hxkj.common.entity.system; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; import java.io.Serializable; @@ -12,8 +10,6 @@ import java.io.Serializable; * 系统角色菜单实体 */ @Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) public class SystemRoleMenu implements Serializable { private static final long serialVersionUID = 1L; diff --git a/like-common/src/main/java/com/hxkj/common/enums/HttpEnum.java b/like-common/src/main/java/com/hxkj/common/enums/HttpEnum.java index 231e373e..7dd83c13 100644 --- a/like-common/src/main/java/com/hxkj/common/enums/HttpEnum.java +++ b/like-common/src/main/java/com/hxkj/common/enums/HttpEnum.java @@ -16,6 +16,7 @@ public enum HttpEnum { TOKEN_INVALID(333, "token参数无效"), NO_PERMISSION(403, "无相关权限"), + REQUEST_404_ERROR(404, "请求接口不存在"), SYSTEM_ERROR(500, "系统错误"); diff --git a/like-common/src/main/java/com/hxkj/common/exception/GlobalException.java b/like-common/src/main/java/com/hxkj/common/exception/GlobalException.java index b6ddf2f2..27e5cc0a 100644 --- a/like-common/src/main/java/com/hxkj/common/exception/GlobalException.java +++ b/like-common/src/main/java/com/hxkj/common/exception/GlobalException.java @@ -1,6 +1,7 @@ package com.hxkj.common.exception; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; +import com.hxkj.common.config.GlobalConfig; import com.hxkj.common.core.AjaxResult; import com.hxkj.common.enums.HttpEnum; import lombok.extern.slf4j.Slf4j; @@ -8,7 +9,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.validation.BindException; import org.springframework.validation.BindingResult; -import org.springframework.web.HttpMediaTypeNotSupportedException; import org.springframework.web.HttpRequestMethodNotSupportedException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.MissingServletRequestParameterException; @@ -30,7 +30,11 @@ public class GlobalException { @ExceptionHandler(Exception.class) @ResponseBody public AjaxResult handleException(Exception e) { - System.out.println(e.getMessage()); + if (GlobalConfig.debug) { + e.printStackTrace(); + System.out.println(e.getMessage()); + } + log.error("系统异常 {}", e.getMessage()); return AjaxResult.failed(HttpEnum.SYSTEM_ERROR.getCode(), HttpEnum.SYSTEM_ERROR.getMsg()); } diff --git a/like-common/src/main/java/com/hxkj/common/mapper/ArticleCategoryMapper.java b/like-common/src/main/java/com/hxkj/common/mapper/ArticleCategoryMapper.java new file mode 100644 index 00000000..7ac31d07 --- /dev/null +++ b/like-common/src/main/java/com/hxkj/common/mapper/ArticleCategoryMapper.java @@ -0,0 +1,12 @@ +package com.hxkj.common.mapper; + +import com.hxkj.common.core.basics.IBaseMapper; +import com.hxkj.common.entity.ArticleCategory; +import org.apache.ibatis.annotations.Mapper; + +/** + * 文章分类 + */ +@Mapper +public interface ArticleCategoryMapper extends IBaseMapper { +} diff --git a/like-common/src/main/java/com/hxkj/common/mapper/ArticleMapper.java b/like-common/src/main/java/com/hxkj/common/mapper/ArticleMapper.java new file mode 100644 index 00000000..6979220b --- /dev/null +++ b/like-common/src/main/java/com/hxkj/common/mapper/ArticleMapper.java @@ -0,0 +1,12 @@ +package com.hxkj.common.mapper; + +import com.hxkj.common.core.basics.IBaseMapper; +import com.hxkj.common.entity.Article; +import org.apache.ibatis.annotations.Mapper; + +/** + * 文章 + */ +@Mapper +public interface ArticleMapper extends IBaseMapper
{ +} diff --git a/like-front/pom.xml b/like-front/pom.xml index 1fdc846f..c5340724 100644 --- a/like-front/pom.xml +++ b/like-front/pom.xml @@ -2,18 +2,49 @@ + + likeadmin-java org.hxkj 1.0-SNAPSHOT + + 4.0.0 - like-front + jar + - 1.8 - 1.8 + 1.0-SNAPSHOT + + + + + org.hxkj + like-common + ${like-common} + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + \ No newline at end of file diff --git a/like-front/src/main/java/com/hxkj/front/LikeFrontApplication.java b/like-front/src/main/java/com/hxkj/front/LikeFrontApplication.java new file mode 100644 index 00000000..c539548d --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/LikeFrontApplication.java @@ -0,0 +1,25 @@ +package com.hxkj.front; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * 启动器 + */ +@Configuration +@ComponentScan(basePackages = {"com.hxkj"}) +@MapperScan(basePackages = {"com.hxkj.*.mapper"}) +@EnableTransactionManagement +@SpringBootApplication(exclude = {RedisRepositoriesAutoConfiguration.class}) +public class LikeFrontApplication { + + public static void main(String[] args) { + SpringApplication.run(LikeFrontApplication.class, args); + } + +} diff --git a/like-front/src/main/java/com/hxkj/front/LikeFrontInterceptor.java b/like-front/src/main/java/com/hxkj/front/LikeFrontInterceptor.java new file mode 100644 index 00000000..deba9434 --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/LikeFrontInterceptor.java @@ -0,0 +1,38 @@ +package com.hxkj.front; + +import com.alibaba.fastjson.JSON; +import com.hxkj.common.core.AjaxResult; +import com.hxkj.common.enums.HttpEnum; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 拦截器 + */ +@Component +public class LikeFrontInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + // 404拦截 + response.setContentType("application/json;charset=utf-8"); + if (response.getStatus() == 404) { + AjaxResult result = AjaxResult.failed(HttpEnum.REQUEST_404_ERROR.getCode(), HttpEnum.REQUEST_404_ERROR.getMsg()); + response.getWriter().print(JSON.toJSONString(result)); + return false; + } + + // 验证通过继续操作 + return HandlerInterceptor.super.preHandle(request, response, handler); + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + LikeFrontThreadLocal.remove(); + HandlerInterceptor.super.afterCompletion(request, response, handler, ex); + } + +} diff --git a/like-front/src/main/java/com/hxkj/front/LikeFrontThreadLocal.java b/like-front/src/main/java/com/hxkj/front/LikeFrontThreadLocal.java new file mode 100644 index 00000000..307439f6 --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/LikeFrontThreadLocal.java @@ -0,0 +1,55 @@ +package com.hxkj.front; + +import java.util.LinkedHashMap; + +public class LikeFrontThreadLocal { + + /** + * 构造方法 + */ + public LikeFrontThreadLocal() {} + + /** + * 取得本地线程对象 + */ + private static final java.lang.ThreadLocal> MY_LOCAL = new java.lang.ThreadLocal<>(); + + /** + * 写入本地线程 + */ + public static void put(String key, Object val) { + LinkedHashMap map = MY_LOCAL.get(); + if (map == null) { + map = new LinkedHashMap<>(); + } + + map.put(key, val); + MY_LOCAL.set(map); + } + + /** + * 获取本地线程 + */ + public static Object get(String key) { + return MY_LOCAL.get().getOrDefault(key, ""); + } + + /** + * 获取用户ID + */ + public static Integer getUserId() { + String adminId = LikeFrontThreadLocal.get("userId").toString(); + if (adminId.equals("")) { + return 0; + } + return Integer.parseInt(adminId); + } + + /** + * 删除本地线程 + */ + public static void remove() { + MY_LOCAL.remove(); + } + +} diff --git a/like-front/src/main/java/com/hxkj/front/config/FrontConfig.java b/like-front/src/main/java/com/hxkj/front/config/FrontConfig.java new file mode 100644 index 00000000..e31dab32 --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/config/FrontConfig.java @@ -0,0 +1,16 @@ +package com.hxkj.front.config; + +/** + * 前台公共配置 + */ +public class FrontConfig { + + // 免登录验证 + public static String[] notLoginUri = new String[]{ + "/api/login" + }; + + // 免权限验证 + public static String[] notAuthUri = new String[]{}; + +} diff --git a/like-front/src/main/java/com/hxkj/front/config/MybatisPlusConfig.java b/like-front/src/main/java/com/hxkj/front/config/MybatisPlusConfig.java new file mode 100644 index 00000000..0c23dd38 --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/config/MybatisPlusConfig.java @@ -0,0 +1,21 @@ +package com.hxkj.front.config; + +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class MybatisPlusConfig { + + /** + * 分页插件集成 + */ + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); + return interceptor; + } + +} diff --git a/like-front/src/main/java/com/hxkj/front/config/WebMvcConfig.java b/like-front/src/main/java/com/hxkj/front/config/WebMvcConfig.java new file mode 100644 index 00000000..36611946 --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/config/WebMvcConfig.java @@ -0,0 +1,54 @@ +package com.hxkj.front.config; + +import com.hxkj.common.config.GlobalConfig; +import com.hxkj.common.utils.YmlUtil; +import com.hxkj.front.LikeFrontInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import javax.annotation.Resource; + +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + @Resource + LikeFrontInterceptor likeFrontInterceptor; + + /** + * 配置允许跨域 + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedHeaders("*") + .allowedMethods("GET", "POST", "DELETE", "PUT") + .maxAge(3600); + } + + /** + * 登录拦截器 + */ + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(likeFrontInterceptor).addPathPatterns("/**"); + } + + /** + * 资源目录映射 + */ + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + String directory = YmlUtil.get("like.upload-directory"); + if (directory == null || directory.equals("")) { + directory = GlobalConfig.uploadDirectory; + } + + registry.addResourceHandler("/"+ GlobalConfig.publicPrefix +"/**") + .addResourceLocations("file:" + directory); + } + +} diff --git a/like-front/src/main/java/com/hxkj/front/controller/IndexController.java b/like-front/src/main/java/com/hxkj/front/controller/IndexController.java new file mode 100644 index 00000000..bf2732dc --- /dev/null +++ b/like-front/src/main/java/com/hxkj/front/controller/IndexController.java @@ -0,0 +1,17 @@ +package com.hxkj.front.controller; + +import com.hxkj.common.core.AjaxResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api") +public class IndexController { + + @GetMapping("/index") + public Object index() { + return AjaxResult.success(); + } + +} diff --git a/like-front/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/like-front/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 00000000..6a59a7b2 --- /dev/null +++ b/like-front/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,9 @@ +{ + "properties": [ + { + "name": "like.upload-directory", + "type": "java.lang.String", + "description": "Description for like.upload-directory." + } + ] +} \ No newline at end of file diff --git a/like-front/src/main/resources/banner.txt b/like-front/src/main/resources/banner.txt new file mode 100644 index 00000000..e6c8979a --- /dev/null +++ b/like-front/src/main/resources/banner.txt @@ -0,0 +1,10 @@ +Spring Boot Version: ${spring-boot.version} +/////////////////////////////////////////////////////// +// _ _ _ _ _ _ // +// | | (_) | __ / \ __| |_ __ ___ (_)_ __ // +// | | | | |/ / / _ \ / _` | '_ ` _ \| | '_ \ // +// | |___| | < / ___ \ (_| | | | | | | | | | | // +// |_____|_|_|\_\/_/ \_\__,_|_| |_| |_|_|_| |_| // +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // +// 佛祖保佑 永不宕机 永无BUG // +////////////////////////////////////////////////////// \ No newline at end of file diff --git a/like-front/src/main/resources/log4j2-spring.xml b/like-front/src/main/resources/log4j2-spring.xml new file mode 100644 index 00000000..4cf2a796 --- /dev/null +++ b/like-front/src/main/resources/log4j2-spring.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +