标签调整,优化

This commit is contained in:
yaoyuan2.chu
2020-11-11 23:39:08 +08:00
parent 16a0e65627
commit ae0650fac4
46 changed files with 769 additions and 634 deletions
@@ -49,10 +49,11 @@ public class UserPageController {
/** /**
* 用户页面 * 用户页面
*
* @return * @return
*/ */
@RequestMapping("/user") @RequestMapping("/user")
public String user( @RequestParam(defaultValue = "discussion") String type, ModelMap map) { public String user(@RequestParam(defaultValue = "discussion") String type, ModelMap map) {
if (type.equals("discussion")) { if (type.equals("discussion")) {
map.put("discussion", "active"); map.put("discussion", "active");
@@ -119,8 +119,8 @@ public class UserPostController extends BaseController {
if (null != discussion.getTag()) { if (null != discussion.getTag()) {
//执行组装标签 //执行组装标签
String[] strArray = discussion.getTag().split(","); String[] strArray = discussion.getTag().split(",");
for(String str : strArray){ for (String str : strArray) {
DiscussionTag dtag= new DiscussionTag(); DiscussionTag dtag = new DiscussionTag();
dtag.setDiscussionId(saveDiscussion.getId()); dtag.setDiscussionId(saveDiscussion.getId());
dtag.setTagId(Integer.parseInt(str)); dtag.setTagId(Integer.parseInt(str));
iDiscussionsTagsService.insert(dtag); iDiscussionsTagsService.insert(dtag);
@@ -201,15 +201,16 @@ public class UserPostController extends BaseController {
/** /**
* 新建主题页 * 新建主题页
*
* @param request * @param request
* @param map * @param map
* @return * @return
*/ */
@RequestMapping({"/newDiscussionsPage"}) @RequestMapping({"/newDiscussionsPage"})
public String newdiccuss( HttpServletRequest request, ModelMap map) { public String newdiccuss(HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取) //获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList(); List<Tag> allTags = tagsService.getAllListDiscussions();
map.put("allTags", allTags); map.put("allTags", allTags);
UserInfo user = getUserInfo(request); UserInfo user = getUserInfo(request);
@@ -222,12 +223,13 @@ public class UserPostController extends BaseController {
/** /**
* 新建标签页 * 新建标签页
*
* @param request * @param request
* @param map * @param map
* @return * @return
*/ */
@RequestMapping({"/newTagPage"}) @RequestMapping({"/newTagPage"})
public String newtag( HttpServletRequest request, ModelMap map) { public String newtag(HttpServletRequest request, ModelMap map) {
//获取所有标签(以后尝试去缓存中取) //获取所有标签(以后尝试去缓存中取)
List<Tag> allTags = tagsService.getAllList(); List<Tag> allTags = tagsService.getAllList();
@@ -41,6 +41,7 @@ public class UserSystemController extends BaseController {
/** /**
* 首页index * 首页index
*
* @param tag * @param tag
* @param type * @param type
* @param pageNum * @param pageNum
@@ -49,8 +50,8 @@ public class UserSystemController extends BaseController {
* @return * @return
*/ */
@RequestMapping({"/", "/main", "/index"}) @RequestMapping({"/", "/main", "/index"})
public String home(@RequestParam(defaultValue = "all") String tag, @RequestParam(defaultValue = "all") String type, @RequestParam(defaultValue = "1") Integer public String home(@RequestParam(defaultValue = "all") String tag, @RequestParam(defaultValue = "all") String type,
pageNum, HttpServletRequest request, ModelMap map) { @RequestParam(defaultValue = "1") Integer pageNum, HttpServletRequest request, ModelMap map) {
logger.info(">>> index"); logger.info(">>> index");
logger.info(">>> tag:" + tag); logger.info(">>> tag:" + tag);
logger.info(">>> pageNum:" + pageNum); logger.info(">>> pageNum:" + pageNum);
@@ -64,7 +65,7 @@ public class UserSystemController extends BaseController {
List<Discussion> allDiscussions = allDiscussionsPage.getContent(); List<Discussion> allDiscussions = allDiscussionsPage.getContent();
List<DiscussionCustom> newAllD = new ArrayList<>(); List<DiscussionCustom> newAllD = new ArrayList<>();
setTagAndUserList(newAllD,allDiscussions); setTagAndUserList(newAllD, allDiscussions);
logger.info("全部主题==>{}", allDiscussions); logger.info("全部主题==>{}", allDiscussions);
@@ -77,6 +78,12 @@ public class UserSystemController extends BaseController {
List<Tag> allTags = tagsService.getAllList(); List<Tag> allTags = tagsService.getAllList();
logger.info("全部标签==>{}", allTags); logger.info("全部标签==>{}", allTags);
if(!tag.equals("all")){
//获取是否有子标签
List<Tag> allChildTags = tagsService.findByParentId(tag);
map.put("allChildTags", allChildTags);
}
map.put("data", "Jiscuss 用户"); map.put("data", "Jiscuss 用户");
map.put("allDiscussions", newAllD); map.put("allDiscussions", newAllD);
map.put("allUser", usersService.getAllList()); map.put("allUser", usersService.getAllList());
@@ -108,6 +115,7 @@ public class UserSystemController extends BaseController {
/** /**
* 组装DiscussionCustom * 组装DiscussionCustom
*
* @param newAllD * @param newAllD
* @param allDiscussions * @param allDiscussions
*/ */
@@ -122,13 +130,13 @@ public class UserSystemController extends BaseController {
Map<Integer, List<TagCustom>> tagMap = new HashMap<>(); Map<Integer, List<TagCustom>> tagMap = new HashMap<>();
for (TagCustom tc : TagCustomList) { for (TagCustom tc : TagCustomList) {
List<TagCustom> tagCustomListTemp = new ArrayList<>(); List<TagCustom> tagCustomListTemp = new ArrayList<>();
if(tagMap.containsKey(tc.getDiscussionId())){ if (tagMap.containsKey(tc.getDiscussionId())) {
tagCustomListTemp = tagMap.get(tc.getDiscussionId()); tagCustomListTemp = tagMap.get(tc.getDiscussionId());
tagCustomListTemp.add(tc); tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp); tagMap.put(tc.getDiscussionId(), tagCustomListTemp);
}else{ } else {
tagCustomListTemp.add(tc); tagCustomListTemp.add(tc);
tagMap.put(tc.getDiscussionId(),tagCustomListTemp); tagMap.put(tc.getDiscussionId(), tagCustomListTemp);
} }
} }
for (Discussion dd : allDiscussions) { for (Discussion dd : allDiscussions) {
@@ -162,6 +170,7 @@ public class UserSystemController extends BaseController {
/** /**
* 分页信息 * 分页信息
*
* @param size * @param size
* @return * @return
*/ */
@@ -176,6 +185,7 @@ public class UserSystemController extends BaseController {
/** /**
* 登录页 * 登录页
*
* @param error * @param error
* @param logout * @param logout
* @param map * @param map
@@ -199,6 +209,7 @@ public class UserSystemController extends BaseController {
/** /**
* 注册提交 * 注册提交
*
* @param username * @param username
* @param email * @param email
* @param password * @param password
@@ -228,6 +239,7 @@ public class UserSystemController extends BaseController {
/** /**
* 注册页面 * 注册页面
*
* @return * @return
*/ */
@RequestMapping("/register") @RequestMapping("/register")
@@ -21,8 +21,8 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@RestController @RestController
@RequestMapping(path="/other_api",produces="application/json;charset=utf-8") @RequestMapping(path = "/other_api", produces = "application/json;charset=utf-8")
@Api(value = "主题帖子(其他)接口管理", tags = { "主题帖子(其他)接口管理"}) @Api(value = "主题帖子(其他)接口管理", tags = {"主题帖子(其他)接口管理"})
public class RestPostController { public class RestPostController {
private static Logger logger = LoggerFactory.getLogger(RestPostController.class); private static Logger logger = LoggerFactory.getLogger(RestPostController.class);
@@ -33,7 +33,7 @@ public class RestPostController {
@ApiOperation("新增主题") @ApiOperation("新增主题")
public Discussion save(@RequestBody Discussion discussion) { public Discussion save(@RequestBody Discussion discussion) {
Discussion saveDiscussion = discussionsService.insert(discussion); Discussion saveDiscussion = discussionsService.insert(discussion);
if (saveDiscussion !=null) { if (saveDiscussion != null) {
return saveDiscussion; return saveDiscussion;
} else { } else {
throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST); throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST);
@@ -52,7 +52,7 @@ public class RestPostController {
@ApiOperation("获取全部主题") @ApiOperation("获取全部主题")
public List<Discussion> getAllDiscussions() { public List<Discussion> getAllDiscussions() {
List<Discussion> allDiscussions = discussionsService.getAllList(); List<Discussion> allDiscussions = discussionsService.getAllList();
logger.info("全部主题==>{}",allDiscussions); logger.info("全部主题==>{}", allDiscussions);
return allDiscussions; return allDiscussions;
} }
@@ -24,7 +24,7 @@ import io.swagger.annotations.ApiOperation;
@RestController @RestController
@RequestMapping("/user_api") @RequestMapping("/user_api")
@Api(value = "用户接口管理", tags = { "用户接口管理" }) @Api(value = "用户接口管理", tags = {"用户接口管理"})
public class RestUserController { public class RestUserController {
private static Logger logger = LoggerFactory.getLogger(RestUserController.class); private static Logger logger = LoggerFactory.getLogger(RestUserController.class);
@@ -36,7 +36,7 @@ public class RestUserController {
@ApiOperation("新增用户") @ApiOperation("新增用户")
public User save(@RequestBody User user) { public User save(@RequestBody User user) {
User saveUser = usersService.insert(user); User saveUser = usersService.insert(user);
if (saveUser!=null) { if (saveUser != null) {
return saveUser; return saveUser;
} else { } else {
throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST); throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST);
@@ -60,7 +60,7 @@ public class RestUserController {
@ApiOperation("修改用户") @ApiOperation("修改用户")
public User update(@RequestBody User user, @PathVariable Integer id) { public User update(@RequestBody User user, @PathVariable Integer id) {
User updateuser = usersService.update(user, id); User updateuser = usersService.update(user, id);
if (updateuser!=null) { if (updateuser != null) {
return updateuser; return updateuser;
} else { } else {
throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST); throw new BaseException(ResponseCode.RESOURCES_NOT_EXIST);
@@ -78,7 +78,7 @@ public class RestUserController {
@ApiOperation("获取全部用户") @ApiOperation("获取全部用户")
public List<User> getUser(User user) { public List<User> getUser(User user) {
List<User> userall = usersService.getAllList(); List<User> userall = usersService.getAllList();
logger.info("全部用户==>{}",userall); logger.info("全部用户==>{}", userall);
return userall; return userall;
} }
@@ -11,9 +11,10 @@ import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import lombok.Data; import lombok.Data;
@Data @Data
@Entity @Entity
@Table(name="discussion") @Table(name = "discussion")
public class Discussion implements Serializable { public class Discussion implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -22,56 +23,56 @@ public class Discussion implements Serializable {
@Column(name = "id", unique = true) @Column(name = "id", unique = true)
private Integer id; private Integer id;
@Column(name="title") @Column(name = "title")
private String title; private String title;
@Column(name="content") @Column(name = "content")
private String content; private String content;
@Column(name="comments_count") @Column(name = "comments_count")
private Integer commentsCount; private Integer commentsCount;
@Column(name="participants_count") @Column(name = "participants_count")
private Integer participantsCount; private Integer participantsCount;
@Column(name="number_index") @Column(name = "number_index")
private Integer numberIndex; private Integer numberIndex;
@Column(name="start_time") @Column(name = "start_time")
private Date startTime; private Date startTime;
@Column(name="start_user_id") @Column(name = "start_user_id")
private Integer startUserId; private Integer startUserId;
@Column(name="start_post_id") @Column(name = "start_post_id")
private Integer startPostId; private Integer startPostId;
@Column(name="last_time") @Column(name = "last_time")
private Date lastTime; private Date lastTime;
@Column(name="last_user_id") @Column(name = "last_user_id")
private Integer lastUserId; private Integer lastUserId;
@Column(name="last_post_id") @Column(name = "last_post_id")
private Integer lastPostId; private Integer lastPostId;
@Column(name="last_post_number") @Column(name = "last_post_number")
private Integer lastPostNumber; private Integer lastPostNumber;
@Column(name="is_approved") @Column(name = "is_approved")
private Integer isApproved; private Integer isApproved;
@Column(name="like_count") @Column(name = "like_count")
private Integer likeCount; private Integer likeCount;
@Column(name="ip_address") @Column(name = "ip_address")
private String ipAddress; private String ipAddress;
@Column(name="create_id") @Column(name = "create_id")
private Integer createId; private Integer createId;
@Column(name="create_time") @Column(name = "create_time")
private Date createTime; private Date createTime;
} }
@@ -5,20 +5,21 @@ import java.io.Serializable;
import javax.persistence.*; import javax.persistence.*;
import lombok.Data; import lombok.Data;
@Data @Data
@Entity @Entity
@Table(name="discussiontag") @Table(name = "discussiontag")
public class DiscussionTag implements Serializable{ public class DiscussionTag implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="discussion_id") @Column(name = "discussion_id")
private Integer discussionId; private Integer discussionId;
@Column(name="tag_id") @Column(name = "tag_id")
private Integer tagId; private Integer tagId;
@@ -15,7 +15,7 @@ import java.util.Date;
*/ */
@Data @Data
@Entity @Entity
@Table(name="likecollect") @Table(name = "likecollect")
public class LikeCollect implements Serializable { public class LikeCollect implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -23,40 +23,40 @@ public class LikeCollect implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="discussion_id") @Column(name = "discussion_id")
private Integer discussionId; private Integer discussionId;
@Column(name="discussion_name") @Column(name = "discussion_name")
private String discussionName; private String discussionName;
@Column(name="tag_id") @Column(name = "tag_id")
private Integer tagId; private Integer tagId;
@Column(name="post_id") @Column(name = "post_id")
private Integer postId; private Integer postId;
@Column(name="post_content") @Column(name = "post_content")
private String postContent; private String postContent;
@Column(name="user_id") @Column(name = "user_id")
private Integer userId; private Integer userId;
@Column(name="user_name") @Column(name = "user_name")
private String userName; private String userName;
@Column(name="type") @Column(name = "type")
private String type; private String type;
@Column(name="like_type") @Column(name = "like_type")
private String likeType; private String likeType;
@Column(name="collect_type") @Column(name = "collect_type")
private String collectType; private String collectType;
@Column(name="create_id") @Column(name = "create_id")
private Integer createId; private Integer createId;
@Column(name="create_time") @Column(name = "create_time")
private Date createTime; private Date createTime;
} }
@@ -14,54 +14,54 @@ import lombok.Data;
@Data @Data
@Entity @Entity
@Table(name="post") @Table(name = "post")
public class Post implements Serializable{ public class Post implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="discussion_id") @Column(name = "discussion_id")
private Integer discussionId; private Integer discussionId;
@Column(name="number") @Column(name = "number")
private Integer number; private Integer number;
@Column(name="time") @Column(name = "time")
private Date time; private Date time;
@Column(name="user_id") @Column(name = "user_id")
private Integer userId; private Integer userId;
@Column(name="type") @Column(name = "type")
private String type; private String type;
@Column(name="content") @Column(name = "content")
private String content; private String content;
@Column(name="parent_id") @Column(name = "parent_id")
private Integer parentId; private Integer parentId;
@Column(name="edit_time") @Column(name = "edit_time")
private Date editTime; private Date editTime;
@Column(name="edit_user_id") @Column(name = "edit_user_id")
private Integer editUserId; private Integer editUserId;
@Column(name="ip_address") @Column(name = "ip_address")
private String ipAddress; private String ipAddress;
@Column(name="copyright") @Column(name = "copyright")
private String copyright; private String copyright;
@Column(name="is_approved") @Column(name = "is_approved")
private Integer isApproved; private Integer isApproved;
@Column(name="create_id") @Column(name = "create_id")
private Integer createId; private Integer createId;
@Column(name="create_time") @Column(name = "create_time")
private Date createTime; private Date createTime;
} }
@@ -8,8 +8,8 @@ import lombok.Data;
@Data @Data
@Entity @Entity
@Table(name="setting") @Table(name = "setting")
public class Setting implements Serializable{ public class Setting implements Serializable {
/** /**
* *
*/ */
@@ -19,9 +19,9 @@ public class Setting implements Serializable{
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="setting_key") @Column(name = "setting_key")
private String settingKey; private String settingKey;
@Column(name="setting_value") @Column(name = "setting_value")
private String settingValue; private String settingValue;
} }
@@ -14,44 +14,44 @@ import lombok.Data;
@Data @Data
@Entity @Entity
@Table(name="tag") @Table(name = "tag")
public class Tag implements Serializable{ public class Tag implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="name") @Column(name = "name")
private String name; private String name;
@Column(name="description") @Column(name = "description")
private String description; private String description;
@Column(name="color") @Column(name = "color")
private String color; private String color;
@Column(name="icon") @Column(name = "icon")
private String icon; private String icon;
@Column(name="position") @Column(name = "position")
private Integer position; private Integer position;
@Column(name="parent_id") @Column(name = "parent_id")
private Integer parentId; private Integer parentId;
@Column(name="discussions_count") @Column(name = "discussions_count")
private String discussionsCount; private String discussionsCount;
@Column(name="last_time") @Column(name = "last_time")
private Date lastTime; private Date lastTime;
@Column(name="last_discussion_id") @Column(name = "last_discussion_id")
private Integer lastDiscussionId; private Integer lastDiscussionId;
@Column(name="create_id") @Column(name = "create_id")
private Integer createId; private Integer createId;
@Column(name="create_time") @Column(name = "create_time")
private Date createTime; private Date createTime;
} }
@@ -15,15 +15,13 @@ import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import lombok.Data; import lombok.Data;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetails;
@Data @Data
@Entity @Entity
@Table(name="user") @Table(name = "user")
public class User implements Serializable { public class User implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@@ -31,46 +29,46 @@ public class User implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Integer id;
@Column(name="username") @Column(name = "username")
private String username; private String username;
@Column(name="realname") @Column(name = "realname")
private String realname; private String realname;
@Column(name="email") @Column(name = "email")
private String email; private String email;
@Column(name="password") @Column(name = "password")
private String password; private String password;
@Column(name="join_time") @Column(name = "join_time")
private Date joinTime; private Date joinTime;
@Column(name="age") @Column(name = "age")
private Integer age; private Integer age;
@Column(name="gender") @Column(name = "gender")
private String gender; private String gender;
@Column(name="avatar") @Column(name = "avatar")
private String avatar; private String avatar;
@Column(name="phone") @Column(name = "phone")
private String phone; private String phone;
@Column(name="discussions_count") @Column(name = "discussions_count")
private Integer discussionsCount; private Integer discussionsCount;
@Column(name="comments_count") @Column(name = "comments_count")
private Integer commentsCount; private Integer commentsCount;
@Column(name="last_seen_time") @Column(name = "last_seen_time")
private Date lastSeenTime; private Date lastSeenTime;
@Column(name="flag") @Column(name = "flag")
private Integer flag; private Integer flag;
@Column(name="level") @Column(name = "level")
private Integer level; private Integer level;
} }
@@ -15,7 +15,7 @@ import java.util.Set;
* @date 2020/7/16 14:55 * @date 2020/7/16 14:55
*/ */
@Data @Data
public class UserInfo implements UserDetails{ public class UserInfo implements UserDetails {
private Collection<GrantedAuthority> authorities; private Collection<GrantedAuthority> authorities;
private String password; private String password;
@@ -36,5 +36,4 @@ public class PostCustom extends Post {
private List<PostCustom> child; private List<PostCustom> child;
} }
@@ -22,19 +22,19 @@ import javax.persistence.GenerationType;
@Getter @Getter
public class TagCustom { public class TagCustom {
@Column(name="name") @Column(name = "name")
private String name; private String name;
@Column(name="description") @Column(name = "description")
private String description; private String description;
@Column(name="color") @Column(name = "color")
private String color; private String color;
@Column(name="icon") @Column(name = "icon")
private String icon; private String icon;
@Column(name="discussion_id") @Column(name = "discussion_id")
private Integer discussionId; private Integer discussionId;
@@ -13,7 +13,7 @@ import lombok.EqualsAndHashCode;
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
public class BaseException extends RuntimeException{ public class BaseException extends RuntimeException {
/** /**
* *
@@ -17,8 +17,8 @@ import java.io.PrintWriter;
/** /**
* 处理无权请求 * 处理无权请求
* @author charlie
* *
* @author charlie
*/ */
@Component @Component
public class CustomAccessDeniedHandler implements AccessDeniedHandler { public class CustomAccessDeniedHandler implements AccessDeniedHandler {
@@ -9,11 +9,11 @@ import java.util.List;
/** /**
* RBAC数据模型控制权限 * RBAC数据模型控制权限
* @author charlie
* *
* @author charlie
*/ */
@Component("rbacPermission") @Component("rbacPermission")
public class RbacPermission{ public class RbacPermission {
private AntPathMatcher antPathMatcher = new AntPathMatcher(); private AntPathMatcher antPathMatcher = new AntPathMatcher();
@@ -13,12 +13,11 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @Repository
public interface DiscussionsRepository extends JpaRepository<Discussion,Integer> { public interface DiscussionsRepository extends JpaRepository<Discussion, Integer> {
@Query(value = "SELECT * from discussion where id in (\n" + @Query(value = "SELECT * from discussion where id in (\n" +
"SELECT discussion_id from discussiontag where tag_id = ?1 ) ", nativeQuery = true) "SELECT discussion_id from discussiontag where tag_id = ?1 ) ", nativeQuery = true)
Page<Discussion> findByQuery(String tagId, Pageable pageable); Page<Discussion> findByQuery(String tagId, Pageable pageable);
} }
@@ -6,5 +6,5 @@ import org.springframework.stereotype.Repository;
@Repository @Repository
public interface DiscussionsTagsRepository extends JpaRepository<DiscussionTag,Integer> { public interface DiscussionsTagsRepository extends JpaRepository<DiscussionTag, Integer> {
} }
@@ -11,15 +11,14 @@ import java.util.List;
import java.util.Map; import java.util.Map;
@Repository @Repository
public interface PostsRepository extends JpaRepository<Post,Integer> { public interface PostsRepository extends JpaRepository<Post, Integer> {
/** /**
*
* @param dId * @param dId
* @return * @return
*/ */
@Query("from Post where discussionId = :dId") @Query("from Post where discussionId = :dId")
List<Post> findOneBy(@Param("dId")Integer dId); List<Post> findOneBy(@Param("dId") Integer dId);
@Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," + @Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," +
"u2.avatar as create_avatar ,u2.username as create_username ,u2.realname as create_realname \n" + "u2.avatar as create_avatar ,u2.username as create_username ,u2.realname as create_realname \n" +
@@ -28,7 +27,7 @@ public interface PostsRepository extends JpaRepository<Post,Integer> {
"left join User u2 on p.create_id = u2.id \n" + "left join User u2 on p.create_id = u2.id \n" +
"where p.discussion_id = :dId order by p.create_time desc" "where p.discussion_id = :dId order by p.create_time desc"
, nativeQuery = true) , nativeQuery = true)
List<Map<String, Object>> findPostCustomById(@Param("dId")Integer dId); List<Map<String, Object>> findPostCustomById(@Param("dId") Integer dId);
@Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," + @Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," +
@@ -38,7 +37,7 @@ public interface PostsRepository extends JpaRepository<Post,Integer> {
"left join User u2 on p.create_id = u2.id \n" + "left join User u2 on p.create_id = u2.id \n" +
"where p.discussion_id = :dId and p.parent_id is null order by p.create_time desc" "where p.discussion_id = :dId and p.parent_id is null order by p.create_time desc"
, nativeQuery = true) , nativeQuery = true)
List<Map<String, Object>> findAllByDIdAndparentIdNull(@Param("dId")Integer dId); List<Map<String, Object>> findAllByDIdAndparentIdNull(@Param("dId") Integer dId);
@Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," + @Query(value = "select p.*,u.avatar as user_avatar ,u.username as user_username ,u.realname as user_realname ," +
"u2.avatar as create_avatar ,u2.username as create_username ,u2.realname as create_realname \n" + "u2.avatar as create_avatar ,u2.username as create_username ,u2.realname as create_realname \n" +
@@ -47,7 +46,7 @@ public interface PostsRepository extends JpaRepository<Post,Integer> {
"left join User u2 on p.create_id = u2.id \n" + "left join User u2 on p.create_id = u2.id \n" +
"where p.discussion_id = :dId and p.parent_id is not null order by p.create_time desc" "where p.discussion_id = :dId and p.parent_id is not null order by p.create_time desc"
, nativeQuery = true) , nativeQuery = true)
List<Map<String, Object>> findAllByDIdAndparentIdNotNull(@Param("dId")Integer dId); List<Map<String, Object>> findAllByDIdAndparentIdNotNull(@Param("dId") Integer dId);
// @Query("from Post where parentId is null and discussionId = :dId") // @Query("from Post where parentId is null and discussionId = :dId")
@@ -5,5 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
public interface SettingsRepository extends JpaRepository<Setting,Integer> { public interface SettingsRepository extends JpaRepository<Setting, Integer> {
} }
@@ -10,10 +10,10 @@ import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
@Repository @Repository
public interface TagsRepository extends JpaRepository<Tag,Integer> { public interface TagsRepository extends JpaRepository<Tag, Integer> {
@Query(value = "FROM Tag a, DiscussionTag b WHERE a.id = b.tagId and b.discussionId = :dId") @Query(value = "FROM Tag a, DiscussionTag b WHERE a.id = b.tagId and b.discussionId = :dId")
List<Tag> findByDId(@Param("dId")Integer dId); List<Tag> findByDId(@Param("dId") Integer dId);
@Query("select new com.yaoyuan.jiscuss.entity.custom.TagCustom(" + @Query("select new com.yaoyuan.jiscuss.entity.custom.TagCustom(" +
@@ -23,4 +23,8 @@ public interface TagsRepository extends JpaRepository<Tag,Integer> {
"where u.id=d.tagId and d.discussionId in (:discussionIdlist)") "where u.id=d.tagId and d.discussionId in (:discussionIdlist)")
List<TagCustom> findByDiscussionIdlistId(@Param(value = "discussionIdlist") List<Integer> discussionIdlist); List<TagCustom> findByDiscussionIdlistId(@Param(value = "discussionIdlist") List<Integer> discussionIdlist);
List<Tag> findByParentId(Integer tagId);
@Query(value = "FROM Tag a WHERE a.parentId is null")
List<Tag> findAllIsNull();
} }
@@ -11,24 +11,21 @@ import com.yaoyuan.jiscuss.entity.User;
@Repository @Repository
public interface UsersRepository extends JpaRepository<User,Integer> { public interface UsersRepository extends JpaRepository<User, Integer> {
/** /**
*
* @param username * @param username
* @return * @return
*/ */
@Query("from User where username like %:username%") @Query("from User where username like %:username%")
List<User> getByUsernameIsLike(@Param("username")String username); List<User> getByUsernameIsLike(@Param("username") String username);
/** /**
*
* @param id * @param id
* @return * @return
*/ */
User getById(Integer id); User getById(Integer id);
/** /**
*
* @param username * @param username
* @return * @return
*/ */
@@ -36,7 +33,6 @@ public interface UsersRepository extends JpaRepository<User,Integer> {
User getByUsername(String username); User getByUsername(String username);
/** /**
*
* @param username * @param username
* @param password * @param password
* @return * @return
@@ -7,6 +7,7 @@ import lombok.Data;
/** /**
* 统一的公共响应体 * 统一的公共响应体
*
* @author NULL * @author NULL
* @date 2019-12-16 * @date 2019-12-16
*/ */
@@ -14,4 +14,8 @@ public interface ITagsService {
List<Tag> findByDId(Integer id); List<Tag> findByDId(Integer id);
List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit); List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit);
List<Tag> findByParentId(String tag);
List<Tag> getAllListDiscussions();
} }
@@ -14,7 +14,7 @@ public interface IUsersService {
List<User> getByUsernameIsLike(String name); List<User> getByUsernameIsLike(String name);
// @Cacheable("myCache") // @Cacheable("myCache")
User findOne(Integer id); User findOne(Integer id);
User insert(User user); User insert(User user);
@@ -37,22 +37,22 @@ public class DiscussionsServiceImpl implements IDiscussionsService {
} }
@Override @Override
public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize,String tag,String type) { public Page<Discussion> queryAllDiscussionsList(Discussion discussion, int pageNum, int pageSize, String tag, String type) {
Sort sort = new Sort(Sort.Direction.DESC, "id"); Sort sort = new Sort(Sort.Direction.DESC, "id");
if(type.equals("hot")){ if (type.equals("hot")) {
sort = new Sort(Sort.Direction.DESC, "likeCount"); sort = new Sort(Sort.Direction.DESC, "likeCount");
}else if(type.equals("new")){ } else if (type.equals("new")) {
sort = new Sort(Sort.Direction.DESC, "startTime"); sort = new Sort(Sort.Direction.DESC, "startTime");
} }
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
Pageable pageable = new PageRequest(pageNum, pageSize, sort); Pageable pageable = new PageRequest(pageNum, pageSize, sort);
//将匹配对象封装成Example对象 //将匹配对象封装成Example对象
Example<Discussion> example = Example.of(discussion); Example<Discussion> example = Example.of(discussion);
if(null!=tag && !"all".equals(tag)){ if (null != tag && !"all".equals(tag)) {
Page<Discussion> pageList= discussionsRepository.findByQuery(tag, pageable); Page<Discussion> pageList = discussionsRepository.findByQuery(tag, pageable);
return pageList; return pageList;
}else{ } else {
Page<Discussion> pageList= discussionsRepository.findAll(example, pageable); Page<Discussion> pageList = discussionsRepository.findAll(example, pageable);
return pageList; return pageList;
} }
@@ -20,6 +20,11 @@ public class TagsServiceImpl implements ITagsService {
@Override @Override
public List<Tag> getAllList() { public List<Tag> getAllList() {
return tagsRepository.findAllIsNull();
}
@Override
public List<Tag> getAllListDiscussions() {
return tagsRepository.findAll(); return tagsRepository.findAll();
} }
@@ -37,6 +42,12 @@ public class TagsServiceImpl implements ITagsService {
public List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit) { public List<TagCustom> findByDiscussionIdlistId(List<Integer> discussionIdLsit) {
return tagsRepository.findByDiscussionIdlistId(discussionIdLsit); return tagsRepository.findByDiscussionIdlistId(discussionIdLsit);
} }
@Override
public List<Tag> findByParentId(String tag){
int tagId = Integer.parseInt(tag);
return tagsRepository.findByParentId(tagId);
}
} }
@@ -1,8 +1,6 @@
package com.yaoyuan.jiscuss.service.impl; package com.yaoyuan.jiscuss.service.impl;
import java.util.List; import java.util.List;
import javax.transaction.Transactional; import javax.transaction.Transactional;
@@ -29,6 +27,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 获取全部用户 * 获取全部用户
*
* @return * @return
*/ */
@Cacheable(value = "user") @Cacheable(value = "user")
@@ -39,20 +38,22 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 分页查询 * 分页查询
*
* @param pageNum * @param pageNum
* @param pageSize * @param pageSize
* @return * @return
*/ */
@Override @Override
public Page<User> queryAllUsersList(int pageNum, int pageSize) { public Page<User> queryAllUsersList(int pageNum, int pageSize) {
Sort sort=new Sort(Sort.Direction.DESC,"id"); Sort sort = new Sort(Sort.Direction.DESC, "id");
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
Pageable pageable=new PageRequest(pageNum,pageSize,sort); Pageable pageable = new PageRequest(pageNum, pageSize, sort);
return usersRepository.findAll(pageable); return usersRepository.findAll(pageable);
} }
/** /**
* 根据名称模糊查询 * 根据名称模糊查询
*
* @param name * @param name
* @return * @return
*/ */
@@ -63,6 +64,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 根据id查询 * 根据id查询
*
* @param id * @param id
* @return * @return
*/ */
@@ -74,6 +76,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 新增 * 新增
*
* @param user * @param user
* @return * @return
*/ */
@@ -85,6 +88,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 更新修改 * 更新修改
*
* @param user * @param user
* @param id * @param id
* @return * @return
@@ -97,6 +101,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 移除 * 移除
*
* @param id * @param id
*/ */
@CacheEvict(value = "user", key = "#id") @CacheEvict(value = "user", key = "#id")
@@ -115,6 +120,7 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 根据名称查询 * 根据名称查询
*
* @param username * @param username
* @return * @return
*/ */
@@ -125,13 +131,14 @@ public class UsersServiceImpl implements IUsersService {
/** /**
* 验证用户名密码 * 验证用户名密码
*
* @param username * @param username
* @param password * @param password
* @return * @return
*/ */
@Override @Override
public User checkByUsernameAndPassword(String username, String password) { public User checkByUsernameAndPassword(String username, String password) {
return usersRepository.checkByUsernameAndPassword(username,password); return usersRepository.checkByUsernameAndPassword(username, password);
} }
@@ -7,23 +7,24 @@ package com.yaoyuan.jiscuss.util;
* @Description: * @Description:
* @date 2020/8/31 20:52 * @date 2020/8/31 20:52
*/ */
/** /**
* 去除内容页代码里的HTML标签 * 去除内容页代码里的HTML标签
*
*/ */
public class DelTagsUtil { public class DelTagsUtil {
/** /**
* 去除html代码中含有的标签 * 去除html代码中含有的标签
*
* @param htmlStr * @param htmlStr
* @return * @return
*/ */
public static String delHtmlTags(String htmlStr) { public static String delHtmlTags(String htmlStr) {
//定义script的正则表达式,去除js可以防止注入 //定义script的正则表达式,去除js可以防止注入
String scriptRegex="<script[^>]*?>[\\s\\S]*?<\\/script>"; String scriptRegex = "<script[^>]*?>[\\s\\S]*?<\\/script>";
//定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码 //定义style的正则表达式,去除style样式,防止css代码过多时只截取到css样式代码
String styleRegex="<style[^>]*?>[\\s\\S]*?<\\/style>"; String styleRegex = "<style[^>]*?>[\\s\\S]*?<\\/style>";
//定义HTML标签的正则表达式,去除标签,只提取文字内容 //定义HTML标签的正则表达式,去除标签,只提取文字内容
String htmlRegex="<[^>]+>"; String htmlRegex = "<[^>]+>";
//定义空格,回车,换行符,制表符 //定义空格,回车,换行符,制表符
String spaceRegex = "\\s*|\t|\r|\n"; String spaceRegex = "\\s*|\t|\r|\n";
@@ -37,21 +38,23 @@ public class DelTagsUtil {
htmlStr = htmlStr.replaceAll(spaceRegex, ""); htmlStr = htmlStr.replaceAll(spaceRegex, "");
return htmlStr.trim(); // 返回文本字符串 return htmlStr.trim(); // 返回文本字符串
} }
/** /**
* 获取HTML代码里的内容 * 获取HTML代码里的内容
*
* @param htmlStr * @param htmlStr
* @return * @return
*/ */
public static String getTextFromHtml(String htmlStr){ public static String getTextFromHtml(String htmlStr) {
//去除html标签 //去除html标签
htmlStr = delHtmlTags(htmlStr); htmlStr = delHtmlTags(htmlStr);
//去除空格" " //去除空格" "
htmlStr = htmlStr.replaceAll(" ",""); htmlStr = htmlStr.replaceAll(" ", "");
return htmlStr; return htmlStr;
} }
public static void main(String[] args){ public static void main(String[] args) {
String htmlStr= "<script type>var i=1; alert(i)</script><style> .font1{font-size:12px}</style><span>少年中国说。</span>红日初升,其道大光。<h3>河出伏流,一泻汪洋。</h3>潜龙腾渊, 鳞爪飞扬。乳 虎啸 谷,百兽震惶。鹰隼试翼,风尘吸张。奇花初胎,矞矞皇皇。干将发硎,有作其芒。天戴其苍,地履其黄。纵有千古,横有" + String htmlStr = "<script type>var i=1; alert(i)</script><style> .font1{font-size:12px}</style><span>少年中国说。</span>红日初升,其道大光。<h3>河出伏流,一泻汪洋。</h3>潜龙腾渊, 鳞爪飞扬。乳 虎啸 谷,百兽震惶。鹰隼试翼,风尘吸张。奇花初胎,矞矞皇皇。干将发硎,有作其芒。天戴其苍,地履其黄。纵有千古,横有" +
"八荒。<a href=\"www.baidu.com\">前途似海,来日方长</a>。<h1>美哉我少年中国,与天不老!</h1><p>壮哉我中国少年,与国无疆!</p>"; "八荒。<a href=\"www.baidu.com\">前途似海,来日方长</a>。<h1>美哉我少年中国,与天不老!</h1><p>壮哉我中国少年,与国无疆!</p>";
System.out.println(getTextFromHtml(htmlStr)); System.out.println(getTextFromHtml(htmlStr));
} }
+17 -10
View File
@@ -1,22 +1,29 @@
#mysql 配置 #h2 配置
spring: spring:
cache: cache:
type: ehcache type: ehcache
ehcache: ehcache:
config: classpath:ehcache.xml config: classpath:ehcache.xml
jpa: jpa:
database: MYSQL generate-ddl: false
show-sql: true show-sql: true
hibernate: hibernate:
ddl-auto: update ddl-auto: none
h2:
console:
path: /h2-console
enabled: true
settings:
web-allow-others: true
datasource: datasource:
url: jdbc:mysql://127.0.0.1:3306/jiscuss?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&autoReconnect=true&useSSL=false platform: h2
username: root url: jdbc:h2:~/testjiscuss
password: 123456 username: sa
driver-class-name: com.mysql.cj.jdbc.Driver password:
schema: classpath:schema.sql
data: classpath:data.sql
driver-class-name: org.h2.Driver
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
tomcat:
init-s-q-l: SET NAMES utf8mb4
druid: druid:
min-idle: 2 min-idle: 2
initial-size: 5 initial-size: 5
@@ -27,7 +34,7 @@ spring:
filter: filter:
stat: stat:
enabled: true enabled: true
db-type: mysql db-type: h2
log-slow-sql: true log-slow-sql: true
slow-sql-millis: 2000 slow-sql-millis: 2000
# 监控过滤器 # 监控过滤器
+1 -1
View File
@@ -45,7 +45,7 @@ insert into discussion
values (11, '测试主题11', '测试内容3测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试',null,null,null,null,null,null,null,1,null,null,null,null,null,null,null); values (11, '测试主题11', '测试内容3测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试',null,null,null,null,null,null,null,1,null,null,null,null,null,null,null);
insert into tag insert into tag
values (1, '测试标签1',null,null,null,null,null,null,null,null,null,null); values (1, '测试标签1',null,null,'edit',null,null,null,null,null,null,null);
insert into post insert into post
+13 -14
View File
@@ -20,7 +20,7 @@ $("#upPage").click(function () {
let page = pageNum - 1 let page = pageNum - 1
window.location.href = pageUrl + "?pageNum=" + page; window.location.href = pageUrl + "?pageNum=" + page;
} else { } else {
massage('已经是首页!','warn', ''); massage('已经是首页!', 'warn', '');
} }
}); });
@@ -32,25 +32,23 @@ $("#nextPage").click(function () {
let page = pageNum + 1 let page = pageNum + 1
window.location.href = pageUrl + "?pageNum=" + page; window.location.href = pageUrl + "?pageNum=" + page;
} else { } else {
massage('已经是尾页!','warn', ''); massage('已经是尾页!', 'warn', '');
} }
}); });
$("#createNewDiccuss2").click(function () { $("#createNewDiccuss2").click(function () {
console.log("点击 createNewDiccuss2"); console.log("点击 createNewDiccuss2");
console.log(username); console.log(username);
if (username && username != null) { if (username && username != null) {
layx.iframe('createNewDiccussContent','新建主题','./newDiscussionsPage',{ layx.iframe('createNewDiccussContent', '新建主题', './newDiscussionsPage', {
shadable:0.8, shadable: 0.8,
event: { event: {
ondestroy: { ondestroy: {
before: function (layxWindow, winform, inside, escKey) { before: function (layxWindow, winform, inside, escKey) {
massage('操作成功!','success', '') massage('操作成功!', 'success', '')
console.log(new Date() + "关闭之前~") console.log(new Date() + "关闭之前~")
console.log(winform); console.log(winform);
console.log("=============分割线===============") console.log("=============分割线===============")
@@ -58,7 +56,7 @@ $("#createNewDiccuss2").click(function () {
after: function () { after: function () {
location.reload(); location.reload();
console.log(new Date() + "关闭之后~") console.log(new Date() + "关闭之后~")
massage('操作成功!','success', '') massage('操作成功!', 'success', '')
console.log("=============分割线===============") console.log("=============分割线===============")
} }
} }
@@ -66,20 +64,21 @@ $("#createNewDiccuss2").click(function () {
}); });
} else { } else {
massage('您未登录,请先登录!','error', ''); massage('您未登录,请先登录!', 'error', '');
} }
}); });
function onTags(data) { function onTags(data) {
console.log('123'); console.log('点击标签跳转' + data);
console.log(data); if (username && username != null) {
window.location.href = '/main?tag=' + data
} else {
window.location.href = '/?tag=' + data
}
} }
$('#menu') $('#menu')
.sticky({ .sticky({
context: '#container' context: '#container'
+4 -4
View File
@@ -7,14 +7,14 @@
</head> </head>
<body> <body>
<h2>后台管理登录页</h2> <h2>后台管理登录页</h2>
<form id="loginForm" action="/login" method="post"> <form id="loginForm" action="/login" method="post">
用户名:<input type="text" id="username" name="username"><br/><br/> 用户名:<input type="text" id="username" name="username"><br/><br/>
密&nbsp;&nbsp;&nbsp;码:<input type="password" id="password" name="password"><br/><br/> 密&nbsp;&nbsp;&nbsp;码:<input type="password" id="password" name="password"><br/><br/>
<!-- <button id="loginBtn" type="submit">登录</button> --> <!-- <button id="loginBtn" type="submit">登录</button> -->
<button id="loginBtn" type="button">登录</button> <button id="loginBtn" type="button">登录</button>
</form> </form>
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
+2 -5
View File
@@ -1,4 +1,4 @@
<div class="ui main menu" > <div class="ui main menu" id="menu">
<div class="ui container"> <div class="ui container">
<div href="/" class="header borderless item"> <div href="/" class="header borderless item">
<img class="logo" src="static/assets/images/logo.png"> <img class="logo" src="static/assets/images/logo.png">
@@ -10,9 +10,7 @@
更多 更多
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="menu transition hidden" tabindex="-1"> <div class="menu transition hidden" tabindex="-1">
<div class="item">行为</div> <a class=" item " href="/user">用户页</a>
<div class="item">另一个行为</div>
<div class="item">其他东西</div>
<div class="divider"></div> <div class="divider"></div>
<div class="item">分割链接</div> <div class="item">分割链接</div>
<div class="divider"></div> <div class="divider"></div>
@@ -40,5 +38,4 @@
</div> </div>
</div> </div>
<script type="text/javascript" charset="UTF-8" src="/static/js/user/header.js"></script> <script type="text/javascript" charset="UTF-8" src="/static/js/user/header.js"></script>
+6 -6
View File
@@ -13,7 +13,7 @@
<i class="left chevron icon"></i> <i class="left chevron icon"></i>
</a> </a>
<#-- <li class="page-item"><span class="page-link">共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></li>--> <#-- <li class="page-item"><span class="page-link">共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></li>-->
<a class="item" ><span >共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></a> <a class="item"><span>共条${totalrecords}记录&nbsp;&nbsp;第${page}页/共${totalpages}页</span></a>
<#--startpage:起始页码就是pageendpage:结束页码,showfirstpage是否显示首页按钮,showlastpage:是否显示末页按钮,showpre是否显示前...shownext是否显示后...--> <#--startpage:起始页码就是pageendpage:结束页码,showfirstpage是否显示首页按钮,showlastpage:是否显示末页按钮,showpre是否显示前...shownext是否显示后...-->
<#assign startpage = page,endpage=10,showfirstpage=false,showlastpage=false,showpre=false,shownext=false,prepage = 1,nextpage=11> <#assign startpage = page,endpage=10,showfirstpage=false,showlastpage=false,showpre=false,shownext=false,prepage = 1,nextpage=11>
@@ -50,27 +50,27 @@
<#--首页--> <#--首页-->
<#if showfirstpage> <#if showfirstpage>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=1">首页</a></span></li>--> <#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=1">首页</a></span></li>-->
<a class="item" href="${url}&pageNum=1">首页</a> <a class="item" href="${url}&pageNum=1">首页</a>
</#if> </#if>
<#--前面的...--> <#--前面的...-->
<#if showpre> <#if showpre>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&page=${prepage}">...</a></span></li>--> <#-- <li class="page-item"><span><a class="page-link" href="${url}&page=${prepage}">...</a></span></li>-->
<a class="item" href="${url}&pageNum=${prepage}">...</a> <a class="item" href="${url}&pageNum=${prepage}">...</a>
</#if> </#if>
<#--显示的页码按钮--> <#--显示的页码按钮-->
<#list startpage..endpage as p> <#list startpage..endpage as p>
<#-- <li class="page-item <#if p == page>active</#if>"><span><a class="page-link" href="${url}&pageNum=${p}">${p}</a></span></li>--> <#-- <li class="page-item <#if p == page>active</#if>"><span><a class="page-link" href="${url}&pageNum=${p}">${p}</a></span></li>-->
<a class="item" style=" <#if p == page>background-color: #7d827d;</#if>" href="${url}&pageNum=${p}">${p}</a> <a class="item" style=" <#if p == page>background-color: #7d827d;</#if>" href="${url}&pageNum=${p}">${p}</a>
</#list> </#list>
<#--后面的...--> <#--后面的...-->
<#if shownext> <#if shownext>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${nextpage}">...</a></span></li>--> <#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${nextpage}">...</a></span></li>-->
<a class="item" href="${url}&pageNum=${nextpage}">...</a> <a class="item" href="${url}&pageNum=${nextpage}">...</a>
</#if> </#if>
<#--显示尾页--> <#--显示尾页-->
<#if showlastpage> <#if showlastpage>
<#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${totalpages}">末页</a></span></li>--> <#-- <li class="page-item"><span><a class="page-link" href="${url}&pageNum=${totalpages}">末页</a></span></li>-->
<a class="item" href="${url}&pageNum=${totalpages}">末页</a> <a class="item" href="${url}&pageNum=${totalpages}">末页</a>
</#if> </#if>
</#macro> </#macro>
+1 -1
View File
@@ -20,7 +20,7 @@
<i class="close icon"></i> <i class="close icon"></i>
<div class="header">欢迎来到这里</div> <div class="header">欢迎来到这里</div>
<ul class="list"> <ul class="list">
<li>JAVA + DISCUSS = JISCUSS 。${posts?size}</li> <li>JAVA + DISCUSS = JISCUSS 。</li>
<li>简单的,易用的JAVA论坛。</li> <li>简单的,易用的JAVA论坛。</li>
<li>请享受发帖回帖带来的乐趣吧!</li> <li>请享受发帖回帖带来的乐趣吧!</li>
</ul> </ul>
+93 -43
View File
@@ -32,7 +32,8 @@
<div class="ui four column grid"> <div class="ui four column grid">
<div class="widescreen large screen computer tablet only four wide column"> <div class="widescreen large screen computer tablet only four wide column">
<div class="fluid ui animated fade primary button" tabindex="0" id="createNewDiccuss2" style=" margin-bottom: 20px;"> <div class="fluid ui animated fade primary button" tabindex="0" id="createNewDiccuss2"
style=" margin-bottom: 20px;">
<div class="visible content"> <div class="visible content">
<i class="pen square icon"></i>创建新帖 <i class="pen square icon"></i>创建新帖
</div> </div>
@@ -41,12 +42,12 @@
</div> </div>
</div> </div>
<div class="ui modal createNewDiccuss" id = "createNewDiccussContent"> <div class="ui modal createNewDiccuss" id="createNewDiccussContent">
<i class="close icon"></i> <i class="close icon"></i>
<div class="header"> <div class="header">
创建新帖 创建新帖
</div> </div>
<div class=" content" > <div class=" content">
<form class="ui form"> <form class="ui form">
<div class="field"> <div class="field">
@@ -64,8 +65,8 @@
</div> </div>
<div class="field"> <div class="field">
<#-- <button class="ui teal button" id="newtags">新增标签</button>--> <#-- <button class="ui teal button" id="newtags">新增标签</button>-->
<#-- <a href="/login" id="loginmodel">登录&nbsp;&nbsp;&&nbsp;&nbsp;注册</a>--> <#-- <a href="/login" id="loginmodel">登录&nbsp;&nbsp;&&nbsp;&nbsp;注册</a>-->
&nbsp;<a onclick="onNewtags()">新增标签</a> &nbsp;<a onclick="onNewtags()">新增标签</a>
</div> </div>
@@ -74,11 +75,11 @@
<input type="text" placeholder="标签名" id="tagsname"> <input type="text" placeholder="标签名" id="tagsname">
</div> </div>
<div class="two fields" id="tagDescriptionDiv" style="display:none"> <div class="two fields" id="tagDescriptionDiv" style="display:none">
<div class="field" > <div class="field">
<label>描述</label> <label>描述</label>
<input type="text" placeholder="描述" id="tagdescription"> <input type="text" placeholder="描述" id="tagdescription">
</div> </div>
<div class="field" > <div class="field">
<label>父标签</label> <label>父标签</label>
<select class="ui fluid dropdown" id="parentTag"> <select class="ui fluid dropdown" id="parentTag">
<#list allTags as tag> <#list allTags as tag>
@@ -95,19 +96,58 @@
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="default text">选择颜色</div> <div class="default text">选择颜色</div>
<div class="menu"> <div class="menu">
<div class="item" data-value="red"><div class="ui red empty circular label"></div>红色</div> <div class="item" data-value="red">
<div class="item" data-value="orange"><div class="ui orange empty circular label"></div>橙色</div> <div class="ui red empty circular label"></div>
<div class="item" data-value="yellow"><div class="ui yellow empty circular label"></div>黄色</div> 红色
<div class="item" data-value="olive"><div class="ui olive empty circular label"></div>橄榄绿</div> </div>
<div class="item" data-value="green"><div class="ui green empty circular label"></div>纯绿</div> <div class="item" data-value="orange">
<div class="item" data-value="teal"><div class="ui teal empty circular label"></div>水鸭蓝</div> <div class="ui orange empty circular label"></div>
<div class="item" data-value="blue"><div class="ui blue empty circular label"></div>纯蓝</div> 橙色
<div class="item" data-value="violet"><div class="ui violet empty circular label"></div>紫罗兰</div> </div>
<div class="item" data-value="purple"><div class="ui purple empty circular label"></div>纯紫</div> <div class="item" data-value="yellow">
<div class="item" data-value="pink"><div class="ui pink empty circular label"></div>粉红</div> <div class="ui yellow empty circular label"></div>
<div class="item" data-value="brown"><div class="ui brown empty circular label"></div>棕色</div> 黄色
<div class="item" data-value="grey"><div class="ui grey empty circular label"></div>灰色</div> </div>
<div class="item" data-value="black"><div class="ui black empty circular label"></div>黑色</div> <div class="item" data-value="olive">
<div class="ui olive empty circular label"></div>
橄榄绿
</div>
<div class="item" data-value="green">
<div class="ui green empty circular label"></div>
纯绿
</div>
<div class="item" data-value="teal">
<div class="ui teal empty circular label"></div>
水鸭蓝
</div>
<div class="item" data-value="blue">
<div class="ui blue empty circular label"></div>
纯蓝
</div>
<div class="item" data-value="violet">
<div class="ui violet empty circular label"></div>
紫罗兰
</div>
<div class="item" data-value="purple">
<div class="ui purple empty circular label"></div>
纯紫
</div>
<div class="item" data-value="pink">
<div class="ui pink empty circular label"></div>
粉红
</div>
<div class="item" data-value="brown">
<div class="ui brown empty circular label"></div>
棕色
</div>
<div class="item" data-value="grey">
<div class="ui grey empty circular label"></div>
灰色
</div>
<div class="item" data-value="black">
<div class="ui black empty circular label"></div>
黑色
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -124,8 +164,12 @@
<div class="item" data-value="fax"><i class="fax"></i>fax</div> <div class="item" data-value="fax"><i class="fax"></i>fax</div>
<div class="item" data-value="bug"><i class="bug"></i>bug</div> <div class="item" data-value="bug"><i class="bug"></i>bug</div>
<div class="item" data-value="keyboard"><i class="keyboard"></i>keyboard</div> <div class="item" data-value="keyboard"><i class="keyboard"></i>keyboard</div>
<div class="item" data-value="folder open outline"><i class="folder open outline"></i>folder open outline</div> <div class="item" data-value="folder open outline"><i
<div class="item" data-value="comment outline"><i class="comment outline"></i>comment outline</div> class="folder open outline"></i>folder open outline
</div>
<div class="item" data-value="comment outline"><i class="comment outline"></i>comment
outline
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -145,7 +189,7 @@
</div> </div>
</div> </div>
<#-- <div class="ui section divider"></div>--> <#-- <div class="ui section divider"></div>-->
<div class="ui card red "> <div class="ui card red ">
<div class="content"> <div class="content">
@@ -153,28 +197,31 @@
</div> </div>
<div class="content"> <div class="content">
<div class="ui ordered list"> <div class="ui ordered list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">test</div>
<div class="description">test files for test</div>
<div class="list">
<div class="item">
<i class="folder icon"></i>
<div class="content">
<div class="header">test2</div>
<div class="description">Test2 site's test</div>
</div>
</div>
</div>
</div>
</div>
<#list allTags as tags> <#list allTags as tags>
<div class="item"> <div class="item">
<i class="icon ${tags.icon} ${tags.color}"></i> <i class="icon ${tags.icon} ${tags.color}"></i>
<div class="content"> <div class="content">
<a class="header" onclick="onTags(${tags.id})">${tags.name}</a> <a class="header" onclick="onTags(${tags.id})">${tags.name}</a>
<div class="description">${tags.description}</div> <div class="description">${tags.description}</div>
<div class="list">
<#list allChildTags as childTags>
<#if childTags.parentId == tags.id>
<div class="item">
<i class="icon ${childTags.icon} ${childTags.color}"></i>
<div class="content">
<a class="header"
onclick="onTags(${childTags.id})">${childTags.name}</a>
<div class="description">${childTags.description}</div>
</div>
</div>
</#if>
</#list>
</div>
</div> </div>
</div> </div>
</#list> </#list>
@@ -257,7 +304,7 @@
<a class="item ${typeHot}" href="/main?type=hot">热门</a> <a class="item ${typeHot}" href="/main?type=hot">热门</a>
<a class="item ${typeNew}" href="/main?type=new">新帖</a> <a class="item ${typeNew}" href="/main?type=new">新帖</a>
<#else> <#else>
<a class="item ${typeAll}" href="/?type=all" > <i class="icon mail"></i> <a class="item ${typeAll}" href="/?type=all"> <i class="icon mail"></i>
最新回复 最新回复
<div class="floating ui red label">1</div> <div class="floating ui red label">1</div>
</a> </a>
@@ -295,7 +342,8 @@
${discussions.content} ${discussions.content}
</div> </div>
<div class="meta"> <div class="meta">
<div class=" description "><i class="edit icon"></i> <a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp; <div class=" description "><i class="edit icon"></i>
<a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a> <i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}. 回复于${discussions.lastTime}.
</div> </div>
@@ -344,7 +392,8 @@
${discussions.content} ${discussions.content}
</div> </div>
<div class="meta"> <div class="meta">
<div class=" description "><i class="edit icon"></i> <a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp; <div class=" description "><i class="edit icon"></i>
<a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a> <i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}. 回复于${discussions.lastTime}.
</div> </div>
@@ -392,7 +441,8 @@
${discussions.content} ${discussions.content}
</div> </div>
<div class="meta"> <div class="meta">
<div class=" description "><i class="edit icon"></i> <a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp; <div class=" description "><i class="edit icon"></i>
<a><b>${discussions.username}</b></a>&nbsp;&nbsp;•&nbsp;&nbsp;
<i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a> <i class="reply icon"></i>最后由 <a><b>${discussions.usernameLast}</b></a>
回复于${discussions.lastTime}. 回复于${discussions.lastTime}.
</div> </div>
+8 -7
View File
@@ -15,7 +15,7 @@
</head> </head>
<body> <body>
<div class="ui container" id="container"> <div class="ui container" id="container">
<div class=" content" > <div class=" content">
<form class="ui form"> <form class="ui form">
<div class="field"> <div class="field">
@@ -57,15 +57,16 @@
$(document).ready(function () { $(document).ready(function () {
tinymce.init({ tinymce.init({
selector: '#discussionsContent', selector: '#discussionsContent',
height: 280, // 高度
}); });
}); });
function onNewtags() { function onNewtags() {
parent.layx.iframe('createNewTagContent','新建标签','./newTagPage',{ parent.layx.iframe('createNewTagContent', '新建标签', './newTagPage', {
alwaysOnTop:true, alwaysOnTop: true,
shadable:true, shadable: true,
width:380, width: 380,
height:500 height: 500
}); });
} }
@@ -106,7 +107,7 @@
// parent.layx.destroy('createNewTagContent'); // 方法一(推荐) // parent.layx.destroy('createNewTagContent'); // 方法一(推荐)
// location.reload(); // location.reload();
} else { } else {
massage(data.msg,'error', ''); massage(data.msg, 'error', '');
return false; return false;
} }
} }
+67 -24
View File
@@ -15,18 +15,18 @@
<body> <body>
<div class="ui container" id="container"> <div class="ui container" id="container">
<div class=" content" > <div class=" content">
<form class="ui form"> <form class="ui form">
<div class="field" > <div class="field">
<label>标签名</label> <label>标签名</label>
<input type="text" placeholder="标签名" id="tagsname"> <input type="text" placeholder="标签名" id="tagsname">
</div> </div>
<div class="two fields" > <div class="two fields">
<div class="field" > <div class="field">
<label>描述</label> <label>描述</label>
<input type="text" placeholder="描述" id="tagdescription"> <input type="text" placeholder="描述" id="tagdescription">
</div> </div>
<div class="field" > <div class="field">
<label>父标签</label> <label>父标签</label>
<select class="ui fluid dropdown" id="parentTag"> <select class="ui fluid dropdown" id="parentTag">
<option value="">选择父标签</option> <option value="">选择父标签</option>
@@ -36,7 +36,7 @@
</select> </select>
</div> </div>
</div> </div>
<div class="two fields" > <div class="two fields">
<div class="field"> <div class="field">
<label>选择颜色</label> <label>选择颜色</label>
<div class="ui fluid search selection dropdown"> <div class="ui fluid search selection dropdown">
@@ -44,19 +44,58 @@
<i class="dropdown icon"></i> <i class="dropdown icon"></i>
<div class="default text">选择颜色</div> <div class="default text">选择颜色</div>
<div class="menu"> <div class="menu">
<div class="item" data-value="red"><div class="ui red empty circular label"></div>红色</div> <div class="item" data-value="red">
<div class="item" data-value="orange"><div class="ui orange empty circular label"></div>橙色</div> <div class="ui red empty circular label"></div>
<div class="item" data-value="yellow"><div class="ui yellow empty circular label"></div>黄色</div> 红色
<div class="item" data-value="olive"><div class="ui olive empty circular label"></div>橄榄绿</div> </div>
<div class="item" data-value="green"><div class="ui green empty circular label"></div>纯绿</div> <div class="item" data-value="orange">
<div class="item" data-value="teal"><div class="ui teal empty circular label"></div>水鸭蓝</div> <div class="ui orange empty circular label"></div>
<div class="item" data-value="blue"><div class="ui blue empty circular label"></div>纯蓝</div> 橙色
<div class="item" data-value="violet"><div class="ui violet empty circular label"></div>紫罗兰</div> </div>
<div class="item" data-value="purple"><div class="ui purple empty circular label"></div>纯紫</div> <div class="item" data-value="yellow">
<div class="item" data-value="pink"><div class="ui pink empty circular label"></div>粉红</div> <div class="ui yellow empty circular label"></div>
<div class="item" data-value="brown"><div class="ui brown empty circular label"></div>棕色</div> 黄色
<div class="item" data-value="grey"><div class="ui grey empty circular label"></div>灰色</div> </div>
<div class="item" data-value="black"><div class="ui black empty circular label"></div>黑色</div> <div class="item" data-value="olive">
<div class="ui olive empty circular label"></div>
橄榄绿
</div>
<div class="item" data-value="green">
<div class="ui green empty circular label"></div>
纯绿
</div>
<div class="item" data-value="teal">
<div class="ui teal empty circular label"></div>
水鸭蓝
</div>
<div class="item" data-value="blue">
<div class="ui blue empty circular label"></div>
纯蓝
</div>
<div class="item" data-value="violet">
<div class="ui violet empty circular label"></div>
紫罗兰
</div>
<div class="item" data-value="purple">
<div class="ui purple empty circular label"></div>
纯紫
</div>
<div class="item" data-value="pink">
<div class="ui pink empty circular label"></div>
粉红
</div>
<div class="item" data-value="brown">
<div class="ui brown empty circular label"></div>
棕色
</div>
<div class="item" data-value="grey">
<div class="ui grey empty circular label"></div>
灰色
</div>
<div class="item" data-value="black">
<div class="ui black empty circular label"></div>
黑色
</div>
</div> </div>
</div> </div>
</div> </div>
@@ -73,13 +112,17 @@
<div class="item" data-value="fax"><i class="fax"></i>fax</div> <div class="item" data-value="fax"><i class="fax"></i>fax</div>
<div class="item" data-value="bug"><i class="bug"></i>bug</div> <div class="item" data-value="bug"><i class="bug"></i>bug</div>
<div class="item" data-value="keyboard"><i class="keyboard"></i>keyboard</div> <div class="item" data-value="keyboard"><i class="keyboard"></i>keyboard</div>
<div class="item" data-value="folder open outline"><i class="folder open outline"></i>folder open outline</div> <div class="item" data-value="folder open outline"><i class="folder open outline"></i>folder
<div class="item" data-value="comment outline"><i class="comment outline"></i>comment outline</div> open outline
</div>
<div class="item" data-value="comment outline"><i class="comment outline"></i>comment
outline
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="field" > </div>
<div class="field">
<a class="ui teal button" id="commitnewtags">保存</a> <a class="ui teal button" id="commitnewtags">保存</a>
<a class="ui grey button" id="cancelnewtags">取消</a> <a class="ui grey button" id="cancelnewtags">取消</a>
</div> </div>
@@ -136,11 +179,11 @@
console.log(data); console.log(data);
if (data.flag) { if (data.flag) {
parent.layx.reloadFrame('createNewDiccussContent'); parent.layx.reloadFrame('createNewDiccussContent');
massage(name + ',添加成功!', 'success',''); massage(name + ',添加成功!', 'success', '');
top.layx.destroy('createNewTagContent'); // 方法二 top.layx.destroy('createNewTagContent'); // 方法二
} else { } else {
massage(name + ',添加失败!', 'error',''); massage(name + ',添加失败!', 'error', '');
} }
} }
}); });
+3 -3
View File
@@ -28,13 +28,13 @@
<a class="item ${like}" href="/user?type=like">喜欢收藏</a> <a class="item ${like}" href="/user?type=like">喜欢收藏</a>
</div> </div>
<div class="ui bottom attached tab segment ${discussion}" > <div class="ui bottom attached tab segment ${discussion}">
主题... 主题...
</div> </div>
<div class="ui bottom attached tab segment ${change}" > <div class="ui bottom attached tab segment ${change}">
动态... 动态...
</div> </div>
<div class="ui bottom attached tab segment ${like}" > <div class="ui bottom attached tab segment ${like}">
喜欢收藏... 喜欢收藏...
</div> </div>
</div> </div>