From 3663f4498952ea8d9e156190151b60b60986494c Mon Sep 17 00:00:00 2001 From: "yaoyuan2.chu" Date: Mon, 9 Nov 2020 23:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=80=81=E6=A1=86=E8=B7=9F=E6=8D=A2?= =?UTF-8?q?=E4=B8=BAlayx=EF=BC=8C=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=BB=BA=E5=B8=96=E5=AD=90=E6=97=B6=E5=8F=AF?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jiscuss/controller/TestController.java | 32 -- .../controller/UserPageController.java | 68 ++++ .../controller/UserPostController.java | 48 ++- .../controller/UserSystemController.java | 188 +++++++--- .../yaoyuan/jiscuss/entity/DiscussionTag.java | 10 +- .../yaoyuan/jiscuss/entity/LikeCollect.java | 62 ++++ .../entity/custom/DiscussionCustom.java | 2 +- .../jiscuss/entity/custom/TagCustom.java | 48 +++ .../repository/DiscussionsRepository.java | 15 +- .../jiscuss/repository/TagsRepository.java | 10 + .../jiscuss/service/IDiscussionsService.java | 3 +- .../yaoyuan/jiscuss/service/ITagsService.java | 3 + .../service/impl/DiscussionsServiceImpl.java | 16 +- .../jiscuss/service/impl/TagsServiceImpl.java | 6 + src/main/resources/schema.sql | 21 +- src/main/resources/static/js/comm/util.js | 3 + .../resources/static/js/user/discussions.js | 10 +- .../static/js/user/newdiscussiontag.js | 110 ++++++ src/main/resources/static/js/user/system.js | 137 ++----- src/main/resources/static/js/user/user.js | 9 + src/main/resources/static/layx/layx.min.css | 10 + src/main/resources/static/layx/layx.min.js | 10 + src/main/resources/templates/comm/commjs.ftl | 16 +- src/main/resources/templates/comm/footer.ftl | 6 - src/main/resources/templates/comm/header.ftl | 2 +- src/main/resources/templates/discussions.ftl | 1 - src/main/resources/templates/index.ftl | 347 ++++++++---------- src/main/resources/templates/login.ftl | 13 +- src/main/resources/templates/newdiccuss.ftl | 122 ++++++ src/main/resources/templates/newtag.ftl | 161 ++++++++ src/main/resources/templates/register.ftl | 94 +++++ src/main/resources/templates/test.ftl | 108 ------ src/main/resources/templates/user.ftl | 118 ++++++ src/main/resources/templates/world.ftl | 20 - 34 files changed, 1274 insertions(+), 555 deletions(-) delete mode 100644 src/main/java/com/yaoyuan/jiscuss/controller/TestController.java create mode 100644 src/main/java/com/yaoyuan/jiscuss/controller/UserPageController.java create mode 100644 src/main/java/com/yaoyuan/jiscuss/entity/LikeCollect.java create mode 100644 src/main/java/com/yaoyuan/jiscuss/entity/custom/TagCustom.java create mode 100644 src/main/resources/static/js/comm/util.js create mode 100644 src/main/resources/static/js/user/newdiscussiontag.js create mode 100644 src/main/resources/static/js/user/user.js create mode 100644 src/main/resources/static/layx/layx.min.css create mode 100644 src/main/resources/static/layx/layx.min.js create mode 100644 src/main/resources/templates/newdiccuss.ftl create mode 100644 src/main/resources/templates/newtag.ftl delete mode 100644 src/main/resources/templates/test.ftl create mode 100644 src/main/resources/templates/user.ftl delete mode 100644 src/main/resources/templates/world.ftl diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/TestController.java b/src/main/java/com/yaoyuan/jiscuss/controller/TestController.java deleted file mode 100644 index 0977840..0000000 --- a/src/main/java/com/yaoyuan/jiscuss/controller/TestController.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.yaoyuan.jiscuss.controller; - -import java.util.Map; - -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - -@Controller -public class TestController { - - - /** - * 登录页面跳转 - * - * @return - */ - @GetMapping("loginpage") - public String loginpage() { - return "login"; - } - - - @RequestMapping("/world") - public String world(Map model) { - model.put("data", "2019"); -// request.setAttribute("name", "xxxxxxxxx"); - model.put("msg", "xxxxxxx2222xx"); - return "world"; - - } -} \ No newline at end of file diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserPageController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserPageController.java new file mode 100644 index 0000000..078dc4b --- /dev/null +++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserPageController.java @@ -0,0 +1,68 @@ +package com.yaoyuan.jiscuss.controller; + +import com.yaoyuan.jiscuss.entity.Discussion; +import com.yaoyuan.jiscuss.entity.Tag; +import com.yaoyuan.jiscuss.entity.User; +import com.yaoyuan.jiscuss.entity.UserInfo; +import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom; +import com.yaoyuan.jiscuss.entity.custom.TagCustom; +import com.yaoyuan.jiscuss.service.IDiscussionsService; +import com.yaoyuan.jiscuss.service.ITagsService; +import com.yaoyuan.jiscuss.service.IUsersService; +import com.yaoyuan.jiscuss.util.DelTagsUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; + +/** + * @author yaoyuan2.chu + * @Title: + * @Package com.yaoyuan.jiscuss.controller + * @Description: + * @date + */ +@Controller +public class UserPageController { + + private static Logger logger = LoggerFactory.getLogger(UserPageController.class); + + @Autowired + private IUsersService usersService; + + @Autowired + private IDiscussionsService discussionsService; + + @Autowired + private ITagsService tagsService; + + + /** + * 用户页面 + * @return + */ + @RequestMapping("/user") + public String user( @RequestParam(defaultValue = "discussion") String type, ModelMap map) { + + if (type.equals("discussion")) { + map.put("discussion", "active"); + } + if (type.equals("change")) { + map.put("change", "active"); + } + if (type.equals("like")) { + map.put("like", "active"); + } + return "user"; + } +} diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java index 82d7f1e..053bbad 100644 --- a/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java +++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserPostController.java @@ -6,7 +6,6 @@ import javax.servlet.http.HttpServletRequest; import com.yaoyuan.jiscuss.entity.*; import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom; -import com.yaoyuan.jiscuss.entity.custom.PostCustom; import com.yaoyuan.jiscuss.service.*; import org.json.JSONObject; import org.slf4j.Logger; @@ -93,7 +92,7 @@ public class UserPostController extends BaseController { //新建主题 - @PostMapping(value = "/newdiscussions") + @PostMapping(value = "/newDiscussions") @ResponseBody public String newDiscussions(@RequestBody DiscussionCustom discussion) { logger.info(">>> newPost" + discussion); @@ -143,7 +142,7 @@ public class UserPostController extends BaseController { //删除主题 //新建评论 - @PostMapping(value = "/newpost") + @PostMapping(value = "/newPost") @ResponseBody public String newPosts(@RequestBody Post post) { logger.info(">>> newpost" + post); @@ -199,4 +198,47 @@ public class UserPostController extends BaseController { } //排行榜等 + + /** + * 新建主题页 + * @param request + * @param map + * @return + */ + @RequestMapping({"/newDiscussionsPage"}) + public String newdiccuss( HttpServletRequest request, ModelMap map) { + + //获取所有标签(以后尝试去缓存中取) + List allTags = tagsService.getAllList(); + map.put("allTags", allTags); + + UserInfo user = getUserInfo(request); + if (user != null) { + map.put("username", user.getUsername()); + map.put("data", "Jiscuss 用户:" + user.getUsername()); + } + return "newdiccuss"; + } + + /** + * 新建标签页 + * @param request + * @param map + * @return + */ + @RequestMapping({"/newTagPage"}) + public String newtag( HttpServletRequest request, ModelMap map) { + + //获取所有标签(以后尝试去缓存中取) + List allTags = tagsService.getAllList(); + map.put("allTags", allTags); + + UserInfo user = getUserInfo(request); + if (user != null) { + map.put("username", user.getUsername()); + map.put("data", "Jiscuss 用户:" + user.getUsername()); + } + return "newtag"; + } + } diff --git a/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java b/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java index 6702928..158d318 100644 --- a/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java +++ b/src/main/java/com/yaoyuan/jiscuss/controller/UserSystemController.java @@ -5,6 +5,7 @@ import com.yaoyuan.jiscuss.entity.Tag; import com.yaoyuan.jiscuss.entity.UserInfo; import com.yaoyuan.jiscuss.entity.User; import com.yaoyuan.jiscuss.entity.custom.DiscussionCustom; +import com.yaoyuan.jiscuss.entity.custom.TagCustom; import com.yaoyuan.jiscuss.service.IDiscussionsService; import com.yaoyuan.jiscuss.service.ITagsService; import com.yaoyuan.jiscuss.service.IUsersService; @@ -16,16 +17,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** - * 用户页面系统控制器 + * 首页页面系统控制器 */ @Controller public class UserSystemController extends BaseController { @@ -41,28 +39,98 @@ public class UserSystemController extends BaseController { @Autowired private ITagsService tagsService; - //首页 + /** + * 首页index + * @param tag + * @param type + * @param pageNum + * @param request + * @param map + * @return + */ @RequestMapping({"/", "/main", "/index"}) public String home(@RequestParam(defaultValue = "all") String tag, @RequestParam(defaultValue = "all") String type, @RequestParam(defaultValue = "1") Integer pageNum, HttpServletRequest request, ModelMap map) { logger.info(">>> index"); logger.info(">>> tag:" + tag); logger.info(">>> pageNum:" + pageNum); - List userall = usersService.getAllList(); - logger.info(">>> 第一遍的全部用户:" + userall); - - List useral2 = usersService.getAllList(); - logger.info(">>> 第二遍的全部用户:" + useral2); int pageSiz = 10; int pageNumNew = pageNum - 1; Discussion discussion = new Discussion(); - //分页获取主题帖子 - Page allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz); + //分页获取主题帖子-默认 + Page allDiscussionsPage = discussionsService.queryAllDiscussionsList(discussion, pageNumNew, pageSiz, tag, type); List allDiscussions = allDiscussionsPage.getContent(); List newAllD = new ArrayList<>(); + setTagAndUserList(newAllD,allDiscussions); + + logger.info("全部主题==>:{}", allDiscussions); + + Long total = allDiscussionsPage.getTotalElements(); + + //获取主题帖子的分页数据 + List pageNumList = getPageNumList(allDiscussionsPage.getTotalPages()); + + //获取所有标签(以后尝试去缓存中取) + List allTags = tagsService.getAllList(); + logger.info("全部标签==>:{}", allTags); + + map.put("data", "Jiscuss 用户"); + map.put("allDiscussions", newAllD); + map.put("allUser", usersService.getAllList()); + map.put("pageDiscussions", pageNumList); + map.put("allTags", allTags); + map.put("tag", tag); + map.put("type", type); + + if (type.equals("all")) { + map.put("typeAll", "active"); + } + if (type.equals("hot")) { + map.put("typeHot", "active"); + } + if (type.equals("new")) { + map.put("typeNew", "active"); + } + map.put("pageSize", pageSiz); + map.put("pageTotal", total); + map.put("pageNum", pageNum); + map.put("pageTotalPages", allDiscussionsPage.getTotalPages()); + UserInfo user = getUserInfo(request); + if (user != null) { + map.put("username", user.getUsername()); + map.put("data", "Jiscuss 用户:" + user.getUsername()); + } + return "index"; + } + + /** + * 组装DiscussionCustom + * @param newAllD + * @param allDiscussions + */ + private void setTagAndUserList(List newAllD, List allDiscussions) { + + List discussionIdLsit = new ArrayList<>(); + for (Discussion dd : allDiscussions) { + discussionIdLsit.add(dd.getId()); + } + List TagCustomList = tagsService.findByDiscussionIdlistId(discussionIdLsit); + + Map> tagMap = new HashMap<>(); + for (TagCustom tc : TagCustomList) { + List tagCustomListTemp = new ArrayList<>(); + if(tagMap.containsKey(tc.getDiscussionId())){ + tagCustomListTemp = tagMap.get(tc.getDiscussionId()); + tagCustomListTemp.add(tc); + tagMap.put(tc.getDiscussionId(),tagCustomListTemp); + }else{ + tagCustomListTemp.add(tc); + tagMap.put(tc.getDiscussionId(),tagCustomListTemp); + } + } for (Discussion dd : allDiscussions) { DiscussionCustom newdd = new DiscussionCustom(); BeanUtils.copyProperties(dd, newdd); @@ -86,42 +154,17 @@ public class UserSystemController extends BaseController { newdd.setRealnameLast(lastUser.getRealname()); newdd.setUsernameLast(lastUser.getUsername()); } - + //组装tag + newdd.setTagList(tagMap.get(dd.getId())); newAllD.add(newdd); } - - logger.info("全部主题==>:{}", allDiscussions); - - Long total = allDiscussionsPage.getTotalElements(); - - //获取主题帖子的分页数据 - List pageNumList = getPageNumList(allDiscussionsPage.getTotalPages()); - - //获取所有标签(以后尝试去缓存中取) - List allTags = tagsService.getAllList(); - logger.info("全部标签==>:{}", allTags); - - System.out.println(userall.toString()); - map.put("data", "Jiscuss 用户"); - map.put("allDiscussions", newAllD); - map.put("pageDiscussions", pageNumList); - map.put("allTags", allTags); - map.put("tag", tag); - map.put("type", type); - - map.put("pageSize", pageSiz); - map.put("pageTotal", total); - map.put("pageNum", pageNum); - map.put("pageTotalPages", allDiscussionsPage.getTotalPages()); - UserInfo user = getUserInfo(request); - if (user != null) { - map.put("username", user.getUsername()); - map.put("data", "Jiscuss 用户:" + user.getUsername()); - } - return "index"; } - + /** + * 分页信息 + * @param size + * @return + */ private List getPageNumList(int size) { List pageNumList = new ArrayList(); for (int i = 0; i < size; i++) { @@ -130,14 +173,14 @@ public class UserSystemController extends BaseController { return pageNumList; } - //登录页 - @GetMapping("/test") - public String test() { - return "test"; - } - - //登录页 + /** + * 登录页 + * @param error + * @param logout + * @param map + * @return + */ @GetMapping("/login") public String login(@RequestParam(value = "error", required = false) String error, @RequestParam(value = "logout", required = false) String logout, ModelMap map) { @@ -154,7 +197,44 @@ public class UserSystemController extends BaseController { } - //注册 + /** + * 注册提交 + * @param username + * @param email + * @param password + * @param map + * @return + */ + @PostMapping("/registerDo") + public String registerDo(@RequestParam String username, @RequestParam String email, + @RequestParam String password, ModelMap map) { + //验证用户名是否存在 + if (null != usersService.getByUsername(username)) { + map.put("msg", "用户已存在,请重试!"); + return "register"; + } else { + User user = new User(); + + user.setEmail(email); + user.setPassword(password); + user.setUsername(username); + user.setRealname(username); + user.setJoinTime(new Date()); + User userInsert = usersService.insert(user); + map.put("msg", "注册成功,请登陆!"); + return "login"; + } + } + + /** + * 注册页面 + * @return + */ + @RequestMapping("/register") + public String register() { + return "register"; + } + //获取设置信息 diff --git a/src/main/java/com/yaoyuan/jiscuss/entity/DiscussionTag.java b/src/main/java/com/yaoyuan/jiscuss/entity/DiscussionTag.java index 8ac974b..6bf7609 100644 --- a/src/main/java/com/yaoyuan/jiscuss/entity/DiscussionTag.java +++ b/src/main/java/com/yaoyuan/jiscuss/entity/DiscussionTag.java @@ -2,10 +2,7 @@ package com.yaoyuan.jiscuss.entity; import java.io.Serializable; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Table; +import javax.persistence.*; import lombok.Data; @Data @@ -13,8 +10,11 @@ import lombok.Data; @Table(name="discussiontag") public class DiscussionTag implements Serializable{ private static final long serialVersionUID = 1L; - + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + @Column(name="discussion_id") private Integer discussionId; diff --git a/src/main/java/com/yaoyuan/jiscuss/entity/LikeCollect.java b/src/main/java/com/yaoyuan/jiscuss/entity/LikeCollect.java new file mode 100644 index 0000000..cdd8c7f --- /dev/null +++ b/src/main/java/com/yaoyuan/jiscuss/entity/LikeCollect.java @@ -0,0 +1,62 @@ +package com.yaoyuan.jiscuss.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author yaoyuan2.chu + * @Title: + * @Package com.yaoyuan.jiscuss.entity + * @Description: + * @date 2020/10/21 12:00 + */ +@Data +@Entity +@Table(name="likecollect") +public class LikeCollect implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + @Column(name="discussion_id") + private Integer discussionId; + + @Column(name="discussion_name") + private String discussionName; + + @Column(name="tag_id") + private Integer tagId; + + @Column(name="post_id") + private Integer postId; + + @Column(name="post_content") + private String postContent; + + @Column(name="user_id") + private Integer userId; + + @Column(name="user_name") + private String userName; + + @Column(name="type") + private String type; + + @Column(name="like_type") + private String likeType; + + @Column(name="collect_type") + private String collectType; + + @Column(name="create_id") + private Integer createId; + + @Column(name="create_time") + private Date createTime; + +} diff --git a/src/main/java/com/yaoyuan/jiscuss/entity/custom/DiscussionCustom.java b/src/main/java/com/yaoyuan/jiscuss/entity/custom/DiscussionCustom.java index 4717df0..697cad4 100644 --- a/src/main/java/com/yaoyuan/jiscuss/entity/custom/DiscussionCustom.java +++ b/src/main/java/com/yaoyuan/jiscuss/entity/custom/DiscussionCustom.java @@ -36,7 +36,7 @@ public class DiscussionCustom extends Discussion { private String tag; - private List tagList; + private List tagList; } diff --git a/src/main/java/com/yaoyuan/jiscuss/entity/custom/TagCustom.java b/src/main/java/com/yaoyuan/jiscuss/entity/custom/TagCustom.java new file mode 100644 index 0000000..c90aa83 --- /dev/null +++ b/src/main/java/com/yaoyuan/jiscuss/entity/custom/TagCustom.java @@ -0,0 +1,48 @@ +package com.yaoyuan.jiscuss.entity.custom; + +import com.yaoyuan.jiscuss.entity.Post; +import com.yaoyuan.jiscuss.entity.Tag; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.Column; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; + +/** + * @author yaoyuan2.chu + * @Title: + * @Package com.yaoyuan.jiscuss.entity.custom + * @Description: + * @date 2020/10/21 10:05 + */ +@Data +@Setter +@Getter +public class TagCustom { + + @Column(name="name") + private String name; + + @Column(name="description") + private String description; + + @Column(name="color") + private String color; + + @Column(name="icon") + private String icon; + + @Column(name="discussion_id") + private Integer discussionId; + + + public TagCustom(String name, String color, String icon, String description, Integer discussionId) { + this.name = name; + this.color = color; + this.icon = icon; + this.description = description; + this.discussionId = discussionId; + } +} diff --git a/src/main/java/com/yaoyuan/jiscuss/repository/DiscussionsRepository.java b/src/main/java/com/yaoyuan/jiscuss/repository/DiscussionsRepository.java index a3100e0..fd98a18 100644 --- a/src/main/java/com/yaoyuan/jiscuss/repository/DiscussionsRepository.java +++ b/src/main/java/com/yaoyuan/jiscuss/repository/DiscussionsRepository.java @@ -1,11 +1,24 @@ package com.yaoyuan.jiscuss.repository; import com.yaoyuan.jiscuss.entity.Discussion; +import com.yaoyuan.jiscuss.entity.User; +import org.springframework.data.domain.Example; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface DiscussionsRepository extends JpaRepository { - + @Query(value = "SELECT * from discussion where id in (\n" + + "SELECT discussion_id from discussiontag where tag_id = ?1 ) ", nativeQuery = true) + Page findByQuery(String tagId, Pageable pageable); + + + } diff --git a/src/main/java/com/yaoyuan/jiscuss/repository/TagsRepository.java b/src/main/java/com/yaoyuan/jiscuss/repository/TagsRepository.java index c4f3356..4dc39b7 100644 --- a/src/main/java/com/yaoyuan/jiscuss/repository/TagsRepository.java +++ b/src/main/java/com/yaoyuan/jiscuss/repository/TagsRepository.java @@ -1,6 +1,7 @@ package com.yaoyuan.jiscuss.repository; import com.yaoyuan.jiscuss.entity.Tag; +import com.yaoyuan.jiscuss.entity.custom.TagCustom; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -13,4 +14,13 @@ public interface TagsRepository extends JpaRepository { @Query(value = "FROM Tag a, DiscussionTag b WHERE a.id = b.tagId and b.discussionId = :dId") List findByDId(@Param("dId")Integer dId); + + + @Query("select new com.yaoyuan.jiscuss.entity.custom.TagCustom(" + + "u.name,u.color,u.icon,u.description, d.discussionId" + + ") " + + "from Tag u, DiscussionTag d " + + "where u.id=d.tagId and d.discussionId in (:discussionIdlist)") + List findByDiscussionIdlistId(@Param(value = "discussionIdlist") List discussionIdlist); + } diff --git a/src/main/java/com/yaoyuan/jiscuss/service/IDiscussionsService.java b/src/main/java/com/yaoyuan/jiscuss/service/IDiscussionsService.java index 4d3f88f..564daf1 100644 --- a/src/main/java/com/yaoyuan/jiscuss/service/IDiscussionsService.java +++ b/src/main/java/com/yaoyuan/jiscuss/service/IDiscussionsService.java @@ -14,6 +14,5 @@ public interface IDiscussionsService { Discussion findOne(Integer id); - Page queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize); - + Page queryAllDiscussionsList(Discussion discussion, int pageNumNew, int pageSiz, String tag, String type); } diff --git a/src/main/java/com/yaoyuan/jiscuss/service/ITagsService.java b/src/main/java/com/yaoyuan/jiscuss/service/ITagsService.java index ef19921..16ea297 100644 --- a/src/main/java/com/yaoyuan/jiscuss/service/ITagsService.java +++ b/src/main/java/com/yaoyuan/jiscuss/service/ITagsService.java @@ -3,6 +3,7 @@ package com.yaoyuan.jiscuss.service; import java.util.List; import com.yaoyuan.jiscuss.entity.Tag; +import com.yaoyuan.jiscuss.entity.custom.TagCustom; public interface ITagsService { @@ -11,4 +12,6 @@ public interface ITagsService { Tag insert(Tag tag); List findByDId(Integer id); + + List findByDiscussionIdlistId(List discussionIdLsit); } diff --git a/src/main/java/com/yaoyuan/jiscuss/service/impl/DiscussionsServiceImpl.java b/src/main/java/com/yaoyuan/jiscuss/service/impl/DiscussionsServiceImpl.java index 5d01d92..0cf1a49 100644 --- a/src/main/java/com/yaoyuan/jiscuss/service/impl/DiscussionsServiceImpl.java +++ b/src/main/java/com/yaoyuan/jiscuss/service/impl/DiscussionsServiceImpl.java @@ -37,13 +37,25 @@ public class DiscussionsServiceImpl implements IDiscussionsService { } @Override - public Page queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize) { + public Page queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize,String tag,String type) { Sort sort = new Sort(Sort.Direction.DESC, "id"); + if(type.equals("hot")){ + sort = new Sort(Sort.Direction.DESC, "likeCount"); + }else if(type.equals("new")){ + sort = new Sort(Sort.Direction.DESC, "startTime"); + } @SuppressWarnings("deprecation") Pageable pageable = new PageRequest(pageNum, pageSize, sort); //将匹配对象封装成Example对象 Example example = Example.of(discussion); + if(null!=tag && !"all".equals(tag)){ + Page pageList= discussionsRepository.findByQuery(tag, pageable); + return pageList; + }else{ + Page pageList= discussionsRepository.findAll(example, pageable); + return pageList; + } + - return discussionsRepository.findAll(example, pageable); } } diff --git a/src/main/java/com/yaoyuan/jiscuss/service/impl/TagsServiceImpl.java b/src/main/java/com/yaoyuan/jiscuss/service/impl/TagsServiceImpl.java index 906255e..dc8768f 100644 --- a/src/main/java/com/yaoyuan/jiscuss/service/impl/TagsServiceImpl.java +++ b/src/main/java/com/yaoyuan/jiscuss/service/impl/TagsServiceImpl.java @@ -4,6 +4,7 @@ import java.util.List; import javax.transaction.Transactional; +import com.yaoyuan.jiscuss.entity.custom.TagCustom; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,6 +32,11 @@ public class TagsServiceImpl implements ITagsService { public List findByDId(Integer id) { return tagsRepository.findByDId(id); } + + @Override + public List findByDiscussionIdlistId(List discussionIdLsit) { + return tagsRepository.findByDiscussionIdlistId(discussionIdLsit); + } } diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 66cd0f5..ff00b53 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -42,6 +42,7 @@ create_time datetime -- 主题标签关联表3 drop table if exists discussiontag; CREATE TABLE discussiontag( +id INTEGER not null primary key auto_increment, discussion_id INTEGER not null , tag_id INTEGER ); @@ -86,4 +87,22 @@ last_time datetime, last_discussion_id INTEGER, create_id INTEGER, create_time datetime -); \ No newline at end of file +); +-- 喜欢收藏表7 +drop table if exists likecollect; +CREATE TABLE likecollect( +id INTEGER not null primary key auto_increment, +discussion_id INTEGER , +discussion_name varchar(200), +tag_id INTEGER , +post_id INTEGER , +post_content text, +user_id INTEGER , +user_name varchar(200), +type varchar(20), +like_type varchar(20), +collect_type varchar(20), +create_id INTEGER, +create_time datetime +); + diff --git a/src/main/resources/static/js/comm/util.js b/src/main/resources/static/js/comm/util.js new file mode 100644 index 0000000..74229dc --- /dev/null +++ b/src/main/resources/static/js/comm/util.js @@ -0,0 +1,3 @@ +function massage(msg,type,title){ + layx.msg(msg,{dialogIcon:type}); +} \ No newline at end of file diff --git a/src/main/resources/static/js/user/discussions.js b/src/main/resources/static/js/user/discussions.js index 7fcdfe0..c95924d 100644 --- a/src/main/resources/static/js/user/discussions.js +++ b/src/main/resources/static/js/user/discussions.js @@ -20,7 +20,7 @@ $("#addPost").click(function () { console.log(content); $.ajax({ type: "POST", - url: "/newpost", + url: "/newPost", data: JSON.stringify({ content: content, discussionId: discussionsId, @@ -34,17 +34,17 @@ $("#addPost").click(function () { success: function (data) { console.log(data); if(data.flag){ - massage(content+',添加成功!',''); + massage(content+',添加成功!','success',''); location.reload(); - massage('评论添加成功!',''); + massage('评论添加成功!','success',''); }else{ - massage(data.msg,''); + massage(data.msg,'error',''); return false; } } }); }else{ - massage('您未登录,请先登录!',''); + massage('您未登录,请先登录!','error',''); } }); diff --git a/src/main/resources/static/js/user/newdiscussiontag.js b/src/main/resources/static/js/user/newdiscussiontag.js new file mode 100644 index 0000000..562a1d7 --- /dev/null +++ b/src/main/resources/static/js/user/newdiscussiontag.js @@ -0,0 +1,110 @@ +let pageNum = null; +let pageAll = null; +let pageUrl = '/'; + + +$("#newdiscussions").click(function () { + + var token = $("meta[name='_csrf']").attr("content"); + var header = $("meta[name='_csrf_header']").attr("content"); + console.warn(header) + console.warn(token) + var title = $("#discussionstitle").val(); + var tag = $("#selectTag").val(); +// $("#discussionscontent").val(); + console.log(tinyMCE.editors[0].getContent()); + var content = tinyMCE.editors[0].getContent(); + console.log(title); + console.log(content); + $.ajax({ + type: "POST", + url: "/newdiscussions", + data: JSON.stringify({ + title: title, + content: content + }), + contentType: 'application/json', + beforeSend: function (request) { + request.setRequestHeader(header, token); // 添加 CSRF Token + }, + dataType: "JSON", + success: function (data) { + console.log(data); + if (data.flag) { + massage(title + ',添加成功!','success', ''); + $('.ui.modal.createNewDiccuss').modal('hide'); + location.reload(); + } else { + massage(data.msg,'error', ''); + return false; + } + } + }); + +}); + +$("#cancelnewtags").click(function () { + $('#createNewtagsDiv').hide(); + $('#tagDescriptionDiv').hide(); + $('#parentTagDiv').hide(); + $('#colorIconDiv').hide(); +}); + +$("#newtags").click(function () { + debugger + $('#createNewtagsDiv').show(); + $('#tagDescriptionDiv').show(); + $('#colorIconDiv').show(); +}); + + + +$("#commitnewtags").click(function () { + + var header = $("meta[name='_csrf_header']").attr("content"); + var token = $("meta[name='_csrf']").attr("content"); + + var name = $("#tagsname").val(); + + var tagColor = $("#tagColor").val(); + var tagIcon = $("#tagIcon").val(); + var parentTag = $("#parentTag").val(); + + let coloricon = tagColor + ',' + tagIcon + var tagdescription = $("#tagdescription").val(); + + console.log(tagColor); + console.log(tagIcon); + console.log(parentTag); + console.log(tagdescription); + console.log(name); + $.ajax({ + type: "POST", + url: "/newtags", + data: JSON.stringify({ + name: name, + color: coloricon, + description: tagdescription, + parentId: parentTag + }), + contentType: 'application/json', + beforeSend: function (xhr) { + xhr.setRequestHeader(header, token); + }, + dataType: "JSON", + success: function (data) { + console.log(data); + if (data.flag) { + massage(name + ',添加成功!', 'success',''); + $("#selectTag").html(""); + } else { + massage(name + ',添加失败!', 'error',''); + } + } + }); + + +}); + + + diff --git a/src/main/resources/static/js/user/system.js b/src/main/resources/static/js/user/system.js index 50d7451..c9b347b 100644 --- a/src/main/resources/static/js/user/system.js +++ b/src/main/resources/static/js/user/system.js @@ -20,7 +20,7 @@ $("#upPage").click(function () { let page = pageNum - 1 window.location.href = pageUrl + "?pageNum=" + page; } else { - massage('已经是首页!', ''); + massage('已经是首页!','warn', ''); } }); @@ -32,133 +32,52 @@ $("#nextPage").click(function () { let page = pageNum + 1 window.location.href = pageUrl + "?pageNum=" + page; } else { - massage('已经是尾页!', ''); + massage('已经是尾页!','warn', ''); } }); -$("#createNewDiccuss").click(function () { - console.log("点击 createNewDiccuss"); + + + +$("#createNewDiccuss2").click(function () { + console.log("点击 createNewDiccuss2"); console.log(username); if (username && username != null) { - $('.ui.modal.createNewDiccuss') - .modal('show') - ; - tinymce.init({ - selector: '#discussionscontent', + + layx.iframe('createNewDiccussContent','新建主题','./newDiscussionsPage',{ + shadable:0.8, + event: { + ondestroy: { + before: function (layxWindow, winform, inside, escKey) { + massage('操作成功!','success', '') + console.log(new Date() + "关闭之前~") + console.log(winform); + console.log("=============分割线===============") + }, + after: function () { + location.reload(); + console.log(new Date() + "关闭之后~") + massage('操作成功!','success', '') + console.log("=============分割线===============") + } + } + } }); + } else { - massage('您未登录,请先登录!', ''); + massage('您未登录,请先登录!','error', ''); } }); -$("#newdiscussions").click(function () { - - var token = $("meta[name='_csrf']").attr("content"); - var header = $("meta[name='_csrf_header']").attr("content"); - console.warn(header) - console.warn(token) - var title = $("#discussionstitle").val(); - var tag = $("#selectTag").val(); -// $("#discussionscontent").val(); - console.log(tinyMCE.editors[0].getContent()); - var content = tinyMCE.editors[0].getContent(); - console.log(title); - console.log(content); - $.ajax({ - type: "POST", - url: "/newdiscussions", - data: JSON.stringify({ - title: title, - content: content - }), - contentType: 'application/json', - beforeSend: function (request) { - request.setRequestHeader(header, token); // 添加 CSRF Token - }, - dataType: "JSON", - success: function (data) { - console.log(data); - if (data.flag) { - massage(title + ',添加成功!', ''); - $('.ui.modal.createNewDiccuss').modal('hide'); - location.reload(); - } else { - massage(data.msg, ''); - return false; - } - } - }); - -}); - -$("#cancelnewtags").click(function () { - $('#createNewtagsDiv').hide(); - $('#tagDescriptionDiv').hide(); - $('#parentTagDiv').hide(); - $('#colorIconDiv').hide(); -}); - -$("#newtags").click(function () { - $('#createNewtagsDiv').show(); - $('#tagDescriptionDiv').show(); - $('#parentTagDiv').show(); - $('#colorIconDiv').show(); -}); - function onTags(data) { console.log('123'); console.log(data); } -$("#commitnewtags").click(function () { - var header = $("meta[name='_csrf_header']").attr("content"); - var token = $("meta[name='_csrf']").attr("content"); - - var name = $("#tagsname").val(); - - var tagColor = $("#tagColor").val(); - var tagIcon = $("#tagIcon").val(); - var parentTag = $("#parentTag").val(); - - let coloricon = tagColor + ',' + tagIcon - var tagdescription = $("#tagdescription").val(); - - console.log(tagColor); - console.log(tagIcon); - console.log(parentTag); - console.log(tagdescription); - console.log(name); - $.ajax({ - type: "POST", - url: "/newtags", - data: JSON.stringify({ - name: name, - color: coloricon, - description: tagdescription, - parentId: parentTag - }), - contentType: 'application/json', - beforeSend: function (xhr) { - xhr.setRequestHeader(header, token); - }, - dataType: "JSON", - success: function (data) { - console.log(data); - if (data.flag) { - massage(name + ',添加成功!', ''); - $("#selectTag").html(""); - } else { - massage(name + ',添加失败!', ''); - } - } - }); - - -}); $('#menu') diff --git a/src/main/resources/static/js/user/user.js b/src/main/resources/static/js/user/user.js new file mode 100644 index 0000000..8f8d3d3 --- /dev/null +++ b/src/main/resources/static/js/user/user.js @@ -0,0 +1,9 @@ +$("#userButton").click(function () { + console.log("点击 userButton"); + $('#userButtonsidebar') + .sidebar({ + transition:'scale down' //默认uncover,可以取值push\overlay\slide along\slide out\scale down + }) + .sidebar('toggle') + ; +}); diff --git a/src/main/resources/static/layx/layx.min.css b/src/main/resources/static/layx/layx.min.css new file mode 100644 index 0000000..7b80df1 --- /dev/null +++ b/src/main/resources/static/layx/layx.min.css @@ -0,0 +1,10 @@ +/*! + * file : layx.css + * gitee : https://gitee.com/monksoul/LayX + * github : https://github.com/MonkSoul/Layx/ + * author : 百小僧/MonkSoul + * version : v2.5.4 + * create time : 2018.05.11 + * update time : 2018.11.03 + */ +*[class^="layx-"]{box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;margin:0;padding:0;outline:none;border:none;background-color:transparent}.layx-flexbox{display:-webkit-box;display:-ms-flexbox;display:flex;display:-webkit-flex}.layx-flex-vertical{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-justify-content:flex-start}.layx-flex-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-justify-content:center}.layx-flexauto{flex:1;-webkit-box-flex:1;-moz-box-flex:1;-webkit-flex:1;-ms-flex:1}.layx-shade,#layx-window-move{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:transparent}body.ilayx-body{overflow:hidden !important}.layx-window{position:fixed;overflow:visible !important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;color:#000;-webkit-tap-highlight-color:rgba(0,0,0,0);visibility:visible;border:none}.layx-window.layx-flicker{animation-name:layx-flicker;-webkit-animation-name:layx-flicker;-moz-animation-name:layx-flicker;animation-duration:.12s;-webkit-animation-duration:.12s;-moz-animation-duration:.12s;animation-iteration-count:8;-webkit-animation-iteration-count:8;-moz-animation-iteration-count:8}.layx-window.layx-max-statu,.layx-window.layx-max-statu .layx-control-bar,.layx-window.layx-max-statu .layx-main,.layx-window.layx-max-statu .layx-statu-bar{border-radius:0 !important;-webkit-border-radius:0 !important;-moz-border-radius:0 !important}.layx-window.layx-min-statu{min-height:0 !important;overflow:hidden !important;min-width:0 !important}.layx-window.layx-min-statu .layx-title{overflow:hidden !important}.layx-window.layx-min-statu .layx-inlay-menus .layx-stick-menu,.layx-window.layx-min-statu .layx-inlay-menus .layx-debug-menu{display:none}.layx-window.layx-bubble-type{overflow:visible !important;position:absolute !important}.layx-window.layx-hide-statu{display:none !important}.layx-control-bar{min-height:30px;overflow:hidden;width:100%;padding-left:5px}.layx-iconfont{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden;font-size:14px;line-height:normal;display:block;line-height:normal}.layx-icon{text-align:center}.layx-icon *{pointer-events:none}.layx-left-bar{margin-right:5px}.layx-window-icon{-webkit-tap-highlight-color:rgba(0,0,0,0)}.layx-window-icon .layx-iconfont{font-size:16px}.layx-title,.layx-group-tab{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:5px;min-width:0;-ms-touch-action:none;touch-action:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.layx-title{-webkit-app-region:drag}.layx-group-tab{-webkit-app-region:no-drag}.layx-title .layx-label,.layx-group-title .layx-label{line-height:normal;font-size:14px;max-width:100%;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-wrap:break-word;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;display:inline-block;pointer-events:none;visibility:visible;position:relative;top:-1px;top:0px\0}.layx-group-tab .layx-label{line-height:28px}.layx-group-tab.layx-type-group{overflow:visible;margin-right:0;border-bottom:1px solid #ddd}.layx-control-bar.layx-type-group{overflow:visible;border-bottom:1px solid #ddd}.layx-group-title{height:27px;line-height:25px;max-width:150px;width:150px;padding:0 8px;background-color:#f5f5f5;border:1px solid #ddd;border-width:1px 1px 0 0;position:relative;color:#666;white-space:nowrap;min-width:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}.layx-title.layx-type-group .layx-group-title{height:30px;line-height:34px}.layx-title.layx-type-group{overflow:visible}.layx-title.layx-type-group .layx-group-title:first-child{border-left:1px solid #ddd}.layx-group-title[data-enable="1"]{background-color:#fff;color:#000}.layx-group-title[data-enable="1"]::after{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%;content:'';border-bottom:1px solid #fff}.layx-inlay-menus{height:100%;height:30px;line-height:30px;position:relative;max-height:30px;z-index:2}.layx-inlay-menus .layx-icon{width:45px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.layx-inlay-menus .layx-icon:hover{background-color:#e5e5e5}.layx-inlay-menus .layx-icon.layx-destroy-menu:hover{background-color:#e81123 !important;color:#fff !important}.layx-inlay-menus .layx-icon.layx-stick-menu[data-enable='1']{color:#f00}.layx-main{overflow:auto;position:relative;clear:both;-webkit-overflow-scrolling:touch;-webkit-transform:translate3d(0,0,0);-webkit-app-region:no-drag}.layx-readonly{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:transparent;z-index:199205270356}.layx-group-main{position:absolute;top:0;right:0;bottom:0;left:0;height:100%;width:100%;z-index:0;visibility:hidden;overflow:auto;-webkit-overflow-scrolling:touch;-webkit-transform:translate3d(0,0,0)}.layx-group-main[data-enable="1"]{z-index:1;visibility:visible}.layx-mouse-preventDefault{position:absolute;z-index:3;height:100%;width:100%;left:0;top:0;right:0;bottom:0;overflow:hidden;background-color:transparent}.layx-content-shade{position:absolute;z-index:2;width:100%;height:100%;left:0;right:0;bottom:0;top:0;overflow:hidden;background-color:#fff}.layx-html{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;-webkit-overflow-scrolling:touch;-webkit-transform:translate3d(0,0,0);overflow:auto}.layx-dialog-icon{margin-right:10px;position:relative;top:-5px}.layx-dialog-icon .layx-iconfont{font-size:40px !important}.layx-dialog-msg .layx-dialog-icon .layx-iconfont,.layx-dialog-tip .layx-dialog-icon .layx-iconfont{font-size:25px !important}.layx-dialog-msg .layx-dialog-icon,.layx-dialog-tip .layx-dialog-icon{top:0}.layx-dialog-icon-success{color:#01aaed}.layx-dialog-icon-warn{color:#ffb800}.layx-dialog-icon-error{color:#f00}.layx-dialog-icon-help{color:#009688}.layx-dialog-msg,.layx-dialog-tip,.layx-dialog-load{color:#000;padding:10px}.layx-dialog-alert,.layx-dialog-confirm,.layx-dialog-prompt{padding:10px;color:#039}.layx-dialog-prompt{width:100%}.layx-dialog-msg,.layx-dialog-tip{height:100%}.layx-dialog-content{font-size:14px}.layx-textarea{display:block;border:1px solid #ddd;width:100%;resize:none;height:60px;margin-top:8px;padding:8px;font-size:15px;color:#000;line-height:1.5}.layx-textarea:focus{border:1px solid #3baced}.layx-buttons{padding:8px 10px;text-align:right}.layx-button-item{padding:0 16px;height:24px;line-height:normal;color:#000;font-size:14px;border:1px solid #adadad;outline:none;margin-left:8px;display:inline-block;background-color:#e1e1e1;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.layx-buttons .layx-button-item:hover{background-color:#e5f1fb;border:1px solid #0078d7}.layx-buttons .layx-button-item[disabled]{color:#999;cursor:not-allowed}.layx-buttons .layx-button-item[disabled]:hover{background-color:#e1e1e1;border:1px solid #adadad}.layx-iframe{width:1px;min-width:100%;*width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.layx-statu-bar{border-top:1px solid #ddd;min-height:25px;background-color:#eeeef2}.layx-resizes[data-enable='0']{visibility:hidden}.layx-resizes>div{position:absolute;z-index:3;-ms-touch-action:none;touch-action:none}.layx-resize-top,.layx-resize-bottom{height:3px;left:3px;right:3px}.layx-resize-top{top:0;cursor:n-resize}.layx-resize-bottom{bottom:0;cursor:s-resize}.layx-resize-left,.layx-resize-right{width:3px;top:3px;bottom:3px}.layx-resize-left{left:0;cursor:w-resize}.layx-resize-right{right:0;cursor:e-resize}.layx-resize-left-top,.layx-resize-right-top,.layx-resize-left-bottom,.layx-resize-right-bottom{width:3px;height:3px}.layx-resize-left-top{left:0;top:0;cursor:nw-resize}.layx-resize-right-top{right:0;top:0;cursor:ne-resize}.layx-resize-left-bottom{left:0;bottom:0;cursor:sw-resize}.layx-resize-right-bottom{right:0;bottom:0;cursor:se-resize}.layx-resize-top.layx-reisize-touch,.layx-resize-bottom.layx-reisize-touch{height:16px;left:16px;right:16px}.layx-resize-left.layx-reisize-touch,.layx-resize-right.layx-reisize-touch{width:16px;top:16px;bottom:16px}.layx-resize-left-top.layx-reisize-touch,.layx-resize-right-top.layx-reisize-touch,.layx-resize-left-bottom.layx-reisize-touch,.layx-resize-right-bottom.layx-reisize-touch{width:16px;height:16px}.layx-resize-top.layx-reisize-touch{top:-8px}.layx-resize-bottom.layx-reisize-touch{bottom:-8px}.layx-resize-left.layx-reisize-touch{left:-8px}.layx-resize-right.layx-reisize-touch{right:-8px}.layx-resize-left-top.layx-reisize-touch{left:-8px;top:-8px}.layx-resize-right-top.layx-reisize-touch{right:-8px;top:-8px}.layx-resize-left-bottom.layx-reisize-touch{left:-8px;bottom:-8px}.layx-resize-right-bottom.layx-reisize-touch{right:-8px;bottom:-8px}.layx-resize-left[data-enable='0'],.layx-resize-top[data-enable='0'],.layx-resize-right[data-enable='0'],.layx-resize-bottom[data-enable='0'],.layx-resize-left-top[data-enable='0'],.layx-resize-left-bottom[data-enable='0'],.layx-resize-right-top[data-enable='0'],.layx-resize-right-bottom[data-enable='0']{visibility:hidden}.layx-auto-destroy-tip{position:absolute;bottom:3px;right:3px;height:25px;line-height:25px;z-index:5;color:#444;background-color:#f1f1f1;padding:0 8px;font-size:13px}.layx-code{border:1px solid #dedede;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;padding:10px;width:100%;height:100%;-webkit-overflow-scrolling:touch;-webkit-transform:translate3d(0,0,0);background:#f5f5f5;overflow:auto}.layx-bubble,.layx-bubble-inlay{position:absolute;width:0;height:0}.layx-bubble-bottom{top:-11px;left:2px;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:11px solid transparent}.layx-bubble-inlay-bottom{top:2px;left:-9px;border-left:9px solid transparent;border-right:9px solid transparent;border-bottom:9px solid transparent}.layx-bubble-top{bottom:-11px;left:2px;border-left:10px solid transparent;border-right:10px solid transparent;border-top:11px solid transparent}.layx-bubble-inlay-top{bottom:2px;left:-9px;border-left:9px solid transparent;border-right:9px solid transparent;border-top:9px solid transparent}.layx-bubble-right{top:2px;left:-11px;border-top:10px solid transparent;border-bottom:10px solid transparent;border-right:11px solid transparent}.layx-bubble-inlay-right{top:-9px;left:2px;border-top:9px solid transparent;border-bottom:9px solid transparent;border-right:9px solid transparent}.layx-bubble-left{top:2px;right:-11px;border-top:10px solid transparent;border-bottom:10px solid transparent;border-left:11px solid transparent}.layx-bubble-inlay-left{top:-9px;right:2px;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:9px solid transparent}.layx-pre{height:auto;width:100%;font-size:14px;font-family:Arial;border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;display:block;font-family:Arial}.layx-dot{display:inline-block;width:25px}.layx-load-animate{width:32px;height:32px;position:relative;margin-right:10px}.layx-load-inner,.layx-load-inner2{position:absolute;width:100%;height:100%;border-radius:40px;-webkit-border-radius:40px;-moz-border-radius:40px;overflow:hidden;left:0;top:0}.layx-load-inner{opacity:1;background-color:#89abdd;-webkit-animation:layx-second-half-hide 1.6s steps(1,end) infinite;animation:layx-second-half-hide 1.6s steps(1,end) infinite;-moz-animation:layx-second-half-hide 1.6s steps(1,end) infinite}.layx-load-inner2{opacity:0;background-color:#4b86db;-webkit-animation:layx-second-half-show 1.6s steps(1,end) infinite;animation:layx-second-half-show 1.6s steps(1,end) infinite;-moz-animation:layx-second-half-show 1.6s steps(1,end) infinite}.layx-load-spiner,.layx-load-filler,.layx-load-masker{position:absolute;width:50%;height:100%}.layx-load-spiner{border-radius:40px 0 0 40px;-webkit-border-radius:40px 0 0 40px;-moz-border-radius:40px 0 0 40px;background-color:#4b86db;-webkit-transform-origin:right center;-ms-transform-origin:right center;transform-origin:right center;-moz-transform-origin:right center;-webkit-animation:layx-spin 800ms infinite linear;animation:layx-spin 800ms infinite linear;-moz-animation:layx-spin 800ms infinite linear;left:0;top:0}.layx-load-filler{border-radius:0 40px 40px 0;-webkit-border-radius:0 40px 40px 0;-moz-border-radius:0 40px 40px 0;background-color:#4b86db;-webkit-animation:layx-second-half-hide 800ms steps(1,end) infinite;animation:layx-second-half-hide 800ms steps(1,end) infinite;-moz-animation:layx-second-half-hide 800ms steps(1,end) infinite;left:50%;top:0;opacity:1}.layx-load-masker{border-radius:40px 0 0 40px;-moz-border-radius:40px 0 0 40px;-webkit-border-radius:40px 0 0 40px;background-color:#89abdd;-webkit-animation:layx-second-half-show 800ms steps(1,end) infinite;animation:layx-second-half-show 800ms steps(1,end) infinite;-moz-animation:layx-second-half-show 800ms steps(1,end) infinite;left:0;top:0;opacity:0}.layx-load-inner2 .layx-load-spiner,.layx-load-inner2 .layx-load-filler{background-color:#89abdd}.layx-load-inner2 .layx-load-masker{background-color:#4b86db}.layx-window.layx-skin-default{border:1px solid #3baced}.layx-window.layx-skin-default .layx-control-bar{background-color:#fff}.layx-window.layx-skin-cloud .layx-control-bar{background-color:#ecf0f1}.layx-window.layx-skin-cloud .layx-inlay-menus .layx-icon:hover{background-color:#bdc3c7}.layx-window.layx-skin-cloud .layx-button-item{background-color:#ecf0f1;border:1px solid #ccc}.layx-window.layx-skin-cloud .layx-button-item:hover{background-color:#bdc3c7;color:#fff;border:1px solid #ecf0f1}.layx-window.layx-skin-turquoise .layx-control-bar{background-color:#1abc9c;color:#fff}.layx-window.layx-skin-turquoise .layx-inlay-menus .layx-icon:hover{background-color:#16a085}.layx-window.layx-skin-turquoise .layx-button-item{background-color:#1abc9c;color:#fff;border:1px solid #1abc9c}.layx-window.layx-skin-turquoise .layx-button-item:hover{background-color:#16a085;border:1px solid #1abc9c}.layx-window.layx-skin-river .layx-control-bar{background-color:#3498db;color:#fff}.layx-window.layx-skin-river .layx-inlay-menus .layx-icon:hover{background-color:#2980b9}.layx-window.layx-skin-river .layx-button-item{background-color:#3498db;color:#fff;border:1px solid #3498db}.layx-window.layx-skin-river .layx-button-item:hover{background-color:#2980b9;border:1px solid #3498db}.layx-window.layx-skin-asphalt .layx-control-bar{background-color:#34495e;color:#fff}.layx-window.layx-skin-asphalt .layx-inlay-menus .layx-icon:hover{background-color:#2c3e50}.layx-window.layx-skin-asphalt .layx-button-item{background-color:#34495e;color:#fff;border:1px solid #34495e}.layx-window.layx-skin-asphalt .layx-button-item:hover{background-color:#2c3e50;border:1px solid #34495e}@keyframes layx-flicker{from{-webkit-box-shadow:1px 1px 24px rgba(0,0,0,.3);box-shadow:1px 1px 24px rgba(0,0,0,.3);-moz-box-shadow:1px 1px 24px rgba(0,0,0,.3)}to{-webkit-box-shadow:1px 1px 12px rgba(0,0,0,.3);box-shadow:1px 1px 12px rgba(0,0,0,.3);-moz-box-shadow:1px 1px 12px rgba(0,0,0,.3)}}@-webkit-keyframes layx-flicker{from{-webkit-box-shadow:1px 1px 24px rgba(0,0,0,.3);box-shadow:1px 1px 24px rgba(0,0,0,.3);-moz-box-shadow:1px 1px 24px rgba(0,0,0,.3)}to{-webkit-box-shadow:1px 1px 12px rgba(0,0,0,.3);box-shadow:1px 1px 12px rgba(0,0,0,.3);-moz-box-shadow:1px 1px 12px rgba(0,0,0,.3)}}@-webkit-keyframes layx-spin{0%{-webkit-transform:rotate(360deg);transform:rotate(360deg);-moz-transform:rotate(360deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform:rotate(0deg)}}@keyframes layx-spin{0%{-webkit-transform:rotate(360deg);transform:rotate(360deg);-moz-transform:rotate(360deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform:rotate(0deg)}}@-webkit-keyframes layx-second-half-hide{0%{opacity:1}50%,100%{opacity:0}}@keyframes layx-second-half-hide{0%{opacity:1}50%,100%{opacity:0}}@-webkit-keyframes layx-second-half-show{0%{opacity:0}50%,100%{opacity:1}}@keyframes layx-second-half-show{0%{opacity:0}50%,100%{opacity:1}} \ No newline at end of file diff --git a/src/main/resources/static/layx/layx.min.js b/src/main/resources/static/layx/layx.min.js new file mode 100644 index 0000000..80620d2 --- /dev/null +++ b/src/main/resources/static/layx/layx.min.js @@ -0,0 +1,10 @@ +/*! + * file : layx.js + * gitee : https://gitee.com/monksoul/LayX + * github : https://github.com/MonkSoul/Layx/ + * author : 百小僧/MonkSoul + * version : v2.5.4 + * create time : 2018.05.11 + * update time : 2018.11.03 + */ +!function(n,t){var r={version:"2.5.4",defaults:{id:"",icon:!0,title:"",width:800,height:600,minWidth:200,minHeight:200,position:"ct",storeStatus:!0,control:!0,style:"",controlStyle:"",existFlicker:!0,bgColor:"#fff",shadow:!0,border:!0,borderRadius:"3px",skin:"default",type:"html",focusToReveal:!0,enableDomainFocus:!0,dialogType:"",frames:[],frameIndex:0,preload:1,mergeTitle:!0,content:"",dialogIcon:!1,cloneElementContent:!0,url:"",useFrameTitle:!1,opacity:1,escKey:!0,floatTarget:!1,floatDirection:"bottom",shadable:!1,shadeDestroy:!1,readonly:!1,loadingText:"内容正在加载中,请稍后",dragInTopToMax:!0,isOverToMax:!0,stickMenu:!1,stickable:!0,minMenu:!0,minable:!0,maxMenu:!0,maxable:!0,closeMenu:!0,closable:!0,debugMenu:!1,restorable:!0,resizable:!0,autodestroy:!1,autodestroyText:"此窗口将在 {second}<\/strong> 秒内自动关闭.",resizeLimit:{t:!1,r:!1,b:!1,l:!1,lt:!1,rt:!1,lb:!1,rb:!1},buttonKey:"enter",buttons:[],movable:!0,moveLimit:{vertical:!1,horizontal:!1,leftOut:!0,rightOut:!0,topOut:!0,bottomOut:!0},focusable:!0,alwaysOnTop:!1,allowControlDbclick:!0,statusBar:!1,statusBarStyle:"",event:{onload:{before:function(){},after:function(){}},onmin:{before:function(){},after:function(){}},onmax:{before:function(){},after:function(){}},onrestore:{before:function(){},after:function(){}},ondestroy:{before:function(){},after:function(){}},onvisual:{before:function(){},after:function(){}},onmove:{before:function(){},progress:function(){},after:function(){}},onresize:{before:function(){},progress:function(){},after:function(){}},onfocus:function(){},onexist:function(){},onswitch:{before:function(){},after:function(){}},onstick:{before:function(){},after:function(){}}}},defaultButtons:{label:"确定",callback:function(){},id:"",classes:[],style:""},defaultFrames:{id:"",title:"",type:"html",url:"",content:"",useFrameTitle:!1,cloneElementContent:!0,bgColor:"#fff"},zIndex:1e7,windows:{},stickZIndex:2e7,prevFocusId:null,focusId:null,create:function(n){var s=this,e=layxDeepClone({},s.defaults,n||{}),o={},ct,lt,at,h,vi,yi,d,rt,ut,ft,ki,yt,oi,pi,l,p,pt,wt,v,bt,g,y,si,kt,wi,et,ot,k,nt,tt,st,a,hi,dt,vt,gi,c,b,ht,bi,ci,li,w,gt,ni,ti,ii,ri,ui,fi,ei,it,di,ai;if(!e.id){console.error("窗口id不能为空且唯一");return}if(r.prevFocusId=r.focusId,r.focusId=e.id,ct=s.windows[e.id],ct){if(ct.status==="min"&&s.restore(ct.id),ct.existFlicker===!0&&s.flicker(e.id),i.isFunction(e.event.onexist))e.event.onexist(ct.layxWindow,ct);return ai=setInterval(function(){e.id!==r.focusId?s.updateZIndex(e.id):clearInterval(ai)},0),ct}if(i.isArray(e.frames))for(c=0;c0&&e.frames[e.frameIndex]?e.frames[e.frameIndex].id:null,o.area={width:d,height:rt,minWidth:vi,minHeight:yi,top:ut,left:ft},o.border=e.border,o.control=e.control,o.isFloatTarget=i.isDom(e.floatTarget),o.floatTarget=e.floatTarget,o.floatDirection=e.floatDirection,o.loadingText=e.loadingText,o.focusable=e.focusable,o.isStick=e.alwaysOnTop===!0,o.zIndex=e.alwaysOnTop===!0?s.stickZIndex:s.zIndex,o.movable=e.movable,o.moveLimit=e.moveLimit,o.resizable=e.resizable,o.resizeLimit=e.resizeLimit,o.stickable=e.stickable,o.minable=e.minable,o.maxable=e.maxable,o.restorable=e.restorable,o.closable=e.closable,o.skin=e.skin,o.event=e.event,o.dragInTopToMax=e.dragInTopToMax,s.windows[e.id]=o,e.control===!0){if(p=document.createElement("div"),p.classList.add("layx-control-bar"),p.classList.add("layx-flexbox"),p.style.setProperty("border-radius",l.borderRadius+" "+l.borderRadius+" 0 0"),p.style.setProperty("-moz-border-radius",l.borderRadius+" "+l.borderRadius+" 0 0"),p.style.setProperty("-webkit-border-radius",l.borderRadius+" "+l.borderRadius+" 0 0"),e.controlStyle&&p.setAttribute("style",e.controlStyle),e.type==="group"&&e.mergeTitle===!0&&p.classList.add("layx-type-group"),h.appendChild(p),e.icon!==!1&&(pt=document.createElement("div"),pt.classList.add("layx-left-bar"),pt.classList.add("layx-flexbox"),pt.classList.add("layx-flex-vertical"),p.appendChild(pt),wt=document.createElement("div"),wt.classList.add("layx-icon"),wt.classList.add("layx-window-icon"),wt.innerHTML=e.icon===!0?'
'+t+"<\/pre><\/div><\/div>",shadable:!0,debugMenu:!1,minMenu:!1,minable:!1,position:[h.offsetTop+10,h.offsetLeft+10],storeStatus:!1})},et.appendChild(ot)),(e.stickMenu===!0||e.alwaysOnTop===!0&&e.stickMenu)&&(k=document.createElement("div"),k.classList.add("layx-icon"),k.classList.add("layx-flexbox"),k.classList.add("layx-flex-center"),k.classList.add("layx-stick-menu"),e.alwaysOnTop===!0?k.setAttribute("title","取消置顶"):k.setAttribute("title","置顶"),e.alwaysOnTop===!0&&k.setAttribute("data-enable","1"),k.innerHTML='
- \ No newline at end of file diff --git a/src/main/resources/templates/comm/header.ftl b/src/main/resources/templates/comm/header.ftl index 56722ad..de93283 100644 --- a/src/main/resources/templates/comm/header.ftl +++ b/src/main/resources/templates/comm/header.ftl @@ -1,4 +1,4 @@ -