diff --git "a/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" "b/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" new file mode 100644 index 0000000..7281db4 Binary files /dev/null and "b/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" differ diff --git "a/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" "b/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" new file mode 100644 index 0000000..5008ddf Binary files /dev/null and "b/\343\200\22002\343\200\221SQL \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" new file mode 100644 index 0000000..4da8b32 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/.DS_Store" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" new file mode 100644 index 0000000..89fd26c Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/.DS_Store" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/1.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/1.png" new file mode 100644 index 0000000..6bf2155 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/1.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/10.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/10.png" new file mode 100644 index 0000000..0f47e5d Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/10.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/11.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/11.png" new file mode 100644 index 0000000..910084c Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/11.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/12.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/12.png" new file mode 100644 index 0000000..66bee10 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/12.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/13.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/13.png" new file mode 100644 index 0000000..28e0e50 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/13.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/14.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/14.png" new file mode 100644 index 0000000..c786977 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/14.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/15.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/15.png" new file mode 100644 index 0000000..fc9aea3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/15.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/16.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/16.png" new file mode 100644 index 0000000..0a6a179 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/16.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/17.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/17.png" new file mode 100644 index 0000000..4192eb6 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/17.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/18.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/18.png" new file mode 100644 index 0000000..369801d Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/18.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/19.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/19.png" new file mode 100644 index 0000000..6aad425 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/19.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/2.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/2.png" new file mode 100644 index 0000000..c6d262c Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/2.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/3.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/3.png" new file mode 100644 index 0000000..f60a495 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/3.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/4.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/4.png" new file mode 100644 index 0000000..3af1b29 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/4.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/5.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/5.png" new file mode 100644 index 0000000..8bddb7b Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/5.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/6.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/6.png" new file mode 100644 index 0000000..283e0b2 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/6.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/7.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/7.png" new file mode 100644 index 0000000..ea0ee5f Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/7.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/8.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/8.png" new file mode 100644 index 0000000..2152c14 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/8.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/9.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/9.png" new file mode 100644 index 0000000..7423ef3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/img/9.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/.gitignore" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/.gitignore" new file mode 100755 index 0000000..8fc0a1a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/.gitignore" @@ -0,0 +1,7 @@ +.idea +/target +/out +/overlays +.DS_Store +*.iml +*.class diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/LICENSE" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/LICENSE" new file mode 100755 index 0000000..6699efa --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/LICENSE" @@ -0,0 +1,19 @@ + JEESNS用户许可协议 + 版权所有 (c)2017-2018,jeesns.cn 保留所有权利 + 感谢您使用JEESNS,JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。数据库使用MYSQL,全部源代码开放,官方网址:www.jeesns.cn。 +无论您处于什么目的使用本软件,均请先仔细阅读本许可协议,如果您安装、使用、修改或分发本软件,则表示您已经完全接受本许可协议的所有条款。 +一、许可 + 1.1 如果您是个人用户,可将本软件用于非商业用途,而不必支付软件授权许可费,商业网站则需购买JEESNS商业授权。 + 1.2 您可以在本协议的许可范围内,修改JEESNS源代码和界面风格以适应您的网站要求。 + 1.3 您拥有使用本软件构建的网站中全部会员资料、文章及相关信息的所有权,并独立承担内容的相关法律义务。 + 1.4 在获得商业授权之后,您可以将本软件用于商业用途,获得更多的软件功能,并且得到技术支持和服务。 + 1.5 商业授权用户享有反映和提出意见的权力,并被优先考虑。 +二、约束和限制 + 2.1 在未获得商业授权之前,任何单位或个人不得将本软件用于商业用途和任何非个人所有的项目中。 + 2.2 在未获得商业授权之前,无论如何,即无论用途如何、是否经过修改或美化、修改程度如何,只要使用JEESNS的整体或任何部分,未经书面许可,页面标题和页脚处的Powered by JEESNS名称、链接(http://www.jeesns.cn/)都必须保留,而不能清除、修改或隐藏。 + 2.3 未经官方许可,禁止修改本软件的整体或任何部分用于重新发布第三方版本。 + 2.4 未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。 + 2.5 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。 +三、免责声明 + 3.1 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。 + 3.2 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。 \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/README.md" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/README.md" new file mode 100755 index 0000000..b78cb99 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/README.md" @@ -0,0 +1,98 @@ +# JEESNS + +开发语言:JAVA + +数据库:MYSQL + +JAVA开发框架:Spring MVC+Spring+Mybatis + +前台前端开发框架:ZUI+JQuery+Bootstrap + +前台模板引擎:Freemarker + +## 简介 +JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。数据库使用MYSQL,全部源代码开放。 + +交流社区:[http://www.jeesns.cn](http://www.jeesns.cn/) + +官方网址:[http://www.lxinet.com](http://www.lxinet.com/) + +github:[https://github.com/zchuanzhao/jeesns](https://github.com/zchuanzhao/jeesns/) + + +## 应用场景 +- JEESNS是一个企业级的开源社区系统,是一个可以用来搭建门户、群组、论坛和微博的社区系统。 +- JEESNS是将SNS社会化网络元素,人和群组结合在一起的新型的社交系统。 +- JEESNS以人为中心,通过用户的需求和行为将最有价值的信息得以不断整合。 +- JEESNS是一个稳定、安全、可扩展的社区系统,可以帮您搭建与众不同的交流社区。 +- 如果您要需要搭建一个论坛,那么您可以用JEESNS +- 如果您需要一个群组,那么您可以用JEESNS +- 如果您需要因为某个话题来汇聚人群,那么您可以用JEESNS + +## 功能模块 +- 私信功能 +1. 界面模仿PC版微信 +2. 可以查看私聊过的联系人 +3. 聊天界面自动刷新 + +- 个人主页 +1. 关注会员 +2. 私信会员 +3. 查看动态 +4. 查看粉丝、关注、微博、文章、帖子、群组 + +- 微博模块 +1. 支持图片类型的微博 +2. 多图画廊展示 +3. 支持添加Emoji标签 +4. 点赞功能 + +- 群组模块 +1. 可以关注群组 +2. 支持上传群组logo +3. 支持发帖审核开关 +4. 授权管理员 +5. 帖子喜欢功能 +6. 帖子加精、置顶 + +- 文章模块 +1. 文章喜欢功能 +2. 文章投稿功能开关 +3. 文章审核功能开关 +4. 文章评论 + +- 动态模块 +1. 洞悉一切 + +## 环境要求 + +- JDK7或更高版本 +- Tomcat7.0或更高版本 +- MySQL5.1或更高版本 + +## 部署说明 + +1. 创建数据库。如使用MySQL,字符集选择为`utf8`或者`utf8mb4`(支持更多特殊字符,推荐)。 +2. 执行数据库脚本。数据库脚本在`/src/main/webapp/database`目录下。 +3. 在eclipse中导入maven项目。点击eclipse菜单`File` - `Import`,选择`Maven` - `Existing Maven Projects`。 +4. 设置项目编码为utf-8,选择jdk1.7版本或以上,不要选择jre。 +5. 修改数据库连接。打开`/src/main/resources/jeesns.propertis`文件,根据实际情况修改`jdbc.url`、`jdbc.user`、`jdbc.password`的值,修改后台路径:`managePath`,如:`managePath=manage` +6. 编译项目。在eclipse中,右键点击项目名,选择`Run as` - `Maven build...`,`Goals`填入`clean package`,然后点击`Run`,第一次运行需要下载jar包,请耐心等待。 +7. 部署项目。将项目部署到Tomcat7或以上版本,启动Tomcat。 +8. 访问系统。前台地址:[http://localhost:8080/](http://localhost:8080/);用户名:admin,密码:jeesns,登录成功之后,在右上角展开有个'管理',点击即可进入后台管理。 + +## 部署详细说明 +1. [JDK安装说明](https://my.oschina.net/zchuanzhao/blog/853387) +2. [Maven安装说明](https://my.oschina.net/zchuanzhao/blog/853392) +3. [JEESNS使用Maven打包介绍](https://my.oschina.net/zchuanzhao/blog/853393) +4. [JEESNS导入数据库说明](https://my.oschina.net/zchuanzhao/blog/853394) +5. [Eclipse导入JEESNS项目和部署说明](https://my.oschina.net/zchuanzhao/blog/853397) +6. [IDEA导入JEESNS1.2.0项目和部署教程](https://my.oschina.net/zchuanzhao/blog/1486494) + + +## 相关网站 +官方网站:[http://www.jeesns.cn](http://www.jeesns.cn/) + +技术支持:[http://www.lxinet.com](http://www.lxinet.com/) + +服务器支持:[http://www.919dns.com](http://www.919dns.com/) diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/pom.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/pom.xml" new file mode 100755 index 0000000..7fcb985 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/pom.xml" @@ -0,0 +1,43 @@ + + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-common + 1.3 + jeesns-common + + + + com.lxinet + jeesns-model + 1.3 + + + com.lxinet + jeesns-dao + 1.3 + + + + + + jeesns-common + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionLogType.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionLogType.java" new file mode 100755 index 0000000..e14fc1e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionLogType.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.common.utils; + +/** + * Created by zchuanzhao on 2017/2/15. + */ +public enum ActionLogType { + TEXT(0),ARTICLE(1),WEIBO(2),GROUP_TOPIC(4); + private Integer value; + + ActionLogType(Integer value){ + this.value = value; + } + + public Integer getValue() { + return value; + } + + public void setValue(Integer value) { + this.value = value; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionUtil.java" new file mode 100755 index 0000000..53af99e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ActionUtil.java" @@ -0,0 +1,82 @@ +package com.lxinet.jeesns.common.utils; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public class ActionUtil { + /** + * 会员注册 + */ + public static final Integer MEMBER_REG = 1; + + /** + * 会员登录 + */ + public static final Integer MEMBER_LOGIN = 2; + + /** + * 修改密码 + */ + public static final Integer CHANGE_PWD = 3; + + /** + * 找回密码 + */ + public static final Integer FIND_PWD = 4; + + /** + * 登录失败 + */ + public static final Integer MEMBER_LOGIN_ERROR = 5; + + /** + * 删除微博 + */ + public static final Integer DELETE_WEIBO = 3001; + + /** + * 删除微博评论 + */ + public static final Integer DELETE_WEIBO_COMMENT = 3002; + + /** + * 删除群组帖子 + */ + public static final Integer DELETE_GROUP = 3003; + + /** + * 删除群组帖子 + */ + public static final Integer DELETE_GROUP_TOPIC = 3004; + + /** + * 群组帖子评论删除 + */ + public static final Integer DELETE_GROUP_TOPIC_COMMENT = 3005; + + /** + * 删除文章 + */ + public static final Integer DELETE_ARTICLE = 3006; + + /** + * 删除文章评论 + */ + public static final Integer DELETE_ARTICLE_COMMENT = 3007; + + /** + * 发布微博 + */ + public static final Integer POST_WEIBO = 10001; + /** + * 群组发帖 + */ + public static final Integer POST_GROUP_TOPIC = 10002; + + /** + * 发布文章 + */ + public static final Integer POST_ARTICLE = 10003; + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ConfigUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ConfigUtil.java" new file mode 100755 index 0000000..6d392ee --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ConfigUtil.java" @@ -0,0 +1,33 @@ +package com.lxinet.jeesns.common.utils; + + +/** + * Created by zchuanzhao on 2017/1/5. + */ +public class ConfigUtil { + public static final String CMS_POST = "cms_post"; + public static final String CMS_POST_REVIEW = "cms_post_review"; + public static final String GROUP_ALIAS = "group_alias"; + public static final String GROUP_APPLY = "group_apply"; + public static final String GROUP_APPLY_REVIEW = "group_apply_review"; + public static final String MEMBER_EMAIL_VALID = "member_email_valid"; + public static final String MEMBER_LOGIN_OPEN = "member_login_open"; + public static final String MEMBER_REGISTER_OPEN = "member_register_open"; + public static final String SITE_DESCRIPTION = "site_description"; + public static final String SITE_DOMAIN = "site_domain"; + public static final String SITE_KEYS = "site_keys"; + public static final String SITE_LOGO = "site_logo"; + public static final String SITE_NAME = "site_name"; + public static final String SITE_SEND_EMAIL_ACCOUNT = "site_send_email_account"; + public static final String SITE_SEND_EMAIL_PASSWORD = "site_send_email_password"; + public static final String SITE_SEND_EMAIL_SMTP = "site_send_email_smtp"; + public static final String SITE_SEO_TITLE = "site_seo_title"; + public static final String WEIBO_ALIAS = "weibo_alias"; + public static final String WEIBO_POST = "weibo_post"; + public static final String WEIBO_POST_MAXCONTENT = "weibo_post_maxcontent"; + + private ConfigUtil(){ + + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmailSendUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmailSendUtil.java" new file mode 100755 index 0000000..34f41e1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmailSendUtil.java" @@ -0,0 +1,82 @@ +package com.lxinet.jeesns.common.utils; + +import java.io.UnsupportedEncodingException; +import java.util.Properties; +import javax.mail.Authenticator; +import javax.mail.Message; +import javax.mail.PasswordAuthentication; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.Message.RecipientType; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.servlet.http.HttpServletRequest; + +public class EmailSendUtil { + + private EmailSendUtil(){ + + } + + private static boolean sendMail(HttpServletRequest request, String email, String content,String title) { + final String account = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_SEND_EMAIL_ACCOUNT.toUpperCase()); + final String passWord = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_SEND_EMAIL_PASSWORD.toUpperCase()); + final String smtp = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_SEND_EMAIL_SMTP.toUpperCase()); + Properties props = new Properties(); + props.setProperty("mail.smtp.auth", "true"); + props.setProperty("mail.transport.protocol", "smtp"); + props.setProperty("mail.host", smtp);// 用户主机 + Session session = Session.getInstance(props, new Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(account, passWord);// 获取用户名和密码 + } + }); + + Message msg = new MimeMessage(session); + session.setDebug(false);// 查看调试信息:true,不查看:false; + try { + msg.setFrom(new InternetAddress(account)); + msg.setSubject(title); + msg.setRecipients(RecipientType.TO, InternetAddress.parse(email));// 多个收件人 + msg.setContent(content, "text/html;charset=utf-8");// 文本/指定文本类型,字符集 + Transport.send(msg); + } catch (javax.mail.MessagingException e) { + e.printStackTrace(); + //发送失败 + return false; + }// 发送端 + return true; + } + + /** + * 会员激活 + * @param email + * @param randomCode + * @return + */ + public static boolean activeMember(HttpServletRequest request, String email, String randomCode){ + String siteName = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_NAME.toUpperCase()); + String title = siteName + "会员账号激活"; + String content = "欢迎加入"+siteName+",您的账号激活验证码为:【"+randomCode+"】,30分钟内有效,请马上进行验证。若非本人操作,请忽略此邮件。"; + return sendMail(request, email, content, title); + } + + /** + * 忘记密码 + * @param email + * @param randomCode + * @return + */ + public static boolean forgetpwd(HttpServletRequest request, String email, String randomCode){ + String siteName = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_NAME.toUpperCase()); + String siteDomain = (String) request.getServletContext().getAttribute(ConfigUtil.SITE_DOMAIN.toUpperCase()); + String title = siteName + "找回密码"; + String content = "

您好," + email + ":

请点击下面的链接来重置您的密码
" + + "" + + siteDomain + "member/resetPwd?email=" + email + "&token=" + randomCode + "
" + + "本链接30分钟内有效。
" + + "(如果点击链接无反应,请复制链接到浏览器里直接打开)

" ; + return sendMail(request, email, content, title); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmojiUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmojiUtil.java" new file mode 100755 index 0000000..97ba260 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/EmojiUtil.java" @@ -0,0 +1,43 @@ +package com.lxinet.jeesns.common.utils; + +import com.lxinet.jeesns.core.utils.Const; +import org.json.JSONArray; +import org.json.JSONObject; + +public class EmojiUtil { + private static final String jsonStr = "[{\"typ\":\"EmojiCategory-People\",\"nm\":\"人物\",\"items\":[{\"name\":\"smile\",\"src\":\"1f604.png\"},{\"name\":\"smiley\",\"src\":\"1f603.png\"},{\"name\":\"grinning\",\"src\":\"1f600.png\"},{\"name\":\"blush\",\"src\":\"1f60a.png\"},{\"name\":\"relaxed\",\"src\":\"263a.png\"},{\"name\":\"wink\",\"src\":\"1f609.png\"},{\"name\":\"heart_eyes\",\"src\":\"1f60d.png\"},{\"name\":\"kissing_heart\",\"src\":\"1f618.png\"},{\"name\":\"kissing_closed_eyes\",\"src\":\"1f61a.png\"},{\"name\":\"kissing\",\"src\":\"1f617.png\"},{\"name\":\"kissing_smiling_eyes\",\"src\":\"1f619.png\"},{\"name\":\"stuck_out_tongue_winking_eye\",\"src\":\"1f61c.png\"},{\"name\":\"stuck_out_tongue_closed_eyes\",\"src\":\"1f61d.png\"},{\"name\":\"stuck_out_tongue\",\"src\":\"1f61b.png\"},{\"name\":\"flushed\",\"src\":\"1f633.png\"},{\"name\":\"grin\",\"src\":\"1f601.png\"},{\"name\":\"pensive\",\"src\":\"1f614.png\"},{\"name\":\"relieved\",\"src\":\"1f60c.png\"},{\"name\":\"unamused\",\"src\":\"1f612.png\"},{\"name\":\"disappointed\",\"src\":\"1f61e.png\"},{\"name\":\"persevere\",\"src\":\"1f623.png\"},{\"name\":\"cry\",\"src\":\"1f622.png\"},{\"name\":\"joy\",\"src\":\"1f602.png\"},{\"name\":\"sob\",\"src\":\"1f62d.png\"},{\"name\":\"sleepy\",\"src\":\"1f62a.png\"},{\"name\":\"disappointed_relieved\",\"src\":\"1f625.png\"},{\"name\":\"cold_sweat\",\"src\":\"1f630.png\"},{\"name\":\"sweat_smile\",\"src\":\"1f605.png\"},{\"name\":\"sweat\",\"src\":\"1f613.png\"},{\"name\":\"weary\",\"src\":\"1f629.png\"},{\"name\":\"tired_face\",\"src\":\"1f62b.png\"},{\"name\":\"fearful\",\"src\":\"1f628.png\"},{\"name\":\"scream\",\"src\":\"1f631.png\"},{\"name\":\"angry\",\"src\":\"1f620.png\"},{\"name\":\"rage\",\"src\":\"1f621.png\"},{\"name\":\"triumph\",\"src\":\"1f624.png\"},{\"name\":\"confounded\",\"src\":\"1f616.png\"},{\"name\":\"laughing\",\"src\":\"1f606.png\"},{\"name\":\"yum\",\"src\":\"1f60b.png\"},{\"name\":\"mask\",\"src\":\"1f637.png\"},{\"name\":\"sunglasses\",\"src\":\"1f60e.png\"},{\"name\":\"sleeping\",\"src\":\"1f634.png\"},{\"name\":\"dizzy_face\",\"src\":\"1f635.png\"},{\"name\":\"astonished\",\"src\":\"1f632.png\"},{\"name\":\"worried\",\"src\":\"1f61f.png\"},{\"name\":\"frowning\",\"src\":\"1f626.png\"},{\"name\":\"anguished\",\"src\":\"1f627.png\"},{\"name\":\"smiling_imp\",\"src\":\"1f608.png\"},{\"name\":\"imp\",\"src\":\"1f47f.png\"},{\"name\":\"open_mouth\",\"src\":\"1f62e.png\"},{\"name\":\"grimacing\",\"src\":\"1f62c.png\"},{\"name\":\"neutral_face\",\"src\":\"1f610.png\"},{\"name\":\"confused\",\"src\":\"1f615.png\"},{\"name\":\"hushed\",\"src\":\"1f62f.png\"},{\"name\":\"no_mouth\",\"src\":\"1f636.png\"},{\"name\":\"innocent\",\"src\":\"1f607.png\"},{\"name\":\"smirk\",\"src\":\"1f60f.png\"},{\"name\":\"expressionless\",\"src\":\"1f611.png\"},{\"name\":\"man_with_gua_pi_mao\",\"src\":\"1f472.png\"},{\"name\":\"man_with_turban\",\"src\":\"1f473.png\"},{\"name\":\"cop\",\"src\":\"1f46e.png\"},{\"name\":\"construction_worker\",\"src\":\"1f477.png\"},{\"name\":\"guardsman\",\"src\":\"1f482.png\"},{\"name\":\"baby\",\"src\":\"1f476.png\"},{\"name\":\"boy\",\"src\":\"1f466.png\"},{\"name\":\"girl\",\"src\":\"1f467.png\"},{\"name\":\"man\",\"src\":\"1f468.png\"},{\"name\":\"woman\",\"src\":\"1f469.png\"},{\"name\":\"older_man\",\"src\":\"1f474.png\"},{\"name\":\"older_woman\",\"src\":\"1f475.png\"},{\"name\":\"person_with_blond_hair\",\"src\":\"1f471.png\"},{\"name\":\"angel\",\"src\":\"1f47c.png\"},{\"name\":\"princess\",\"src\":\"1f478.png\"},{\"name\":\"smiley_cat\",\"src\":\"1f63a.png\"},{\"name\":\"smile_cat\",\"src\":\"1f638.png\"},{\"name\":\"heart_eyes_cat\",\"src\":\"1f63b.png\"},{\"name\":\"kissing_cat\",\"src\":\"1f63d.png\"},{\"name\":\"smirk_cat\",\"src\":\"1f63c.png\"},{\"name\":\"scream_cat\",\"src\":\"1f640.png\"},{\"name\":\"crying_cat_face\",\"src\":\"1f63f.png\"},{\"name\":\"joy_cat\",\"src\":\"1f639.png\"},{\"name\":\"pouting_cat\",\"src\":\"1f63e.png\"},{\"name\":\"japanese_ogre\",\"src\":\"1f479.png\"},{\"name\":\"japanese_goblin\",\"src\":\"1f47a.png\"},{\"name\":\"see_no_evil\",\"src\":\"1f648.png\"},{\"name\":\"hear_no_evil\",\"src\":\"1f649.png\"},{\"name\":\"speak_no_evil\",\"src\":\"1f64a.png\"},{\"name\":\"skull\",\"src\":\"1f480.png\"},{\"name\":\"alien\",\"src\":\"1f47d.png\"},{\"name\":\"hankey\",\"src\":\"1f4a9.png\"},{\"name\":\"fire\",\"src\":\"1f525.png\"},{\"name\":\"sparkles\",\"src\":\"2728.png\"},{\"name\":\"star2\",\"src\":\"1f31f.png\"},{\"name\":\"dizzy\",\"src\":\"1f4ab.png\"},{\"name\":\"boom\",\"src\":\"1f4a5.png\"},{\"name\":\"anger\",\"src\":\"1f4a2.png\"},{\"name\":\"sweat_drops\",\"src\":\"1f4a6.png\"},{\"name\":\"droplet\",\"src\":\"1f4a7.png\"},{\"name\":\"zzz\",\"src\":\"1f4a4.png\"},{\"name\":\"dash\",\"src\":\"1f4a8.png\"},{\"name\":\"ear\",\"src\":\"1f442.png\"},{\"name\":\"eyes\",\"src\":\"1f440.png\"},{\"name\":\"nose\",\"src\":\"1f443.png\"},{\"name\":\"tongue\",\"src\":\"1f445.png\"},{\"name\":\"lips\",\"src\":\"1f444.png\"},{\"name\":\"+1\",\"src\":\"1f44d.png\"},{\"name\":\"-1\",\"src\":\"1f44e.png\"},{\"name\":\"ok_hand\",\"src\":\"1f44c.png\"},{\"name\":\"facepunch\",\"src\":\"1f44a.png\"},{\"name\":\"fist\",\"src\":\"270a.png\"},{\"name\":\"v\",\"src\":\"270c.png\"},{\"name\":\"wave\",\"src\":\"1f44b.png\"},{\"name\":\"hand\",\"src\":\"270b.png\"},{\"name\":\"open_hands\",\"src\":\"1f450.png\"},{\"name\":\"point_up_2\",\"src\":\"1f446.png\"},{\"name\":\"point_down\",\"src\":\"1f447.png\"},{\"name\":\"point_right\",\"src\":\"1f449.png\"},{\"name\":\"point_left\",\"src\":\"1f448.png\"},{\"name\":\"raised_hands\",\"src\":\"1f64c.png\"},{\"name\":\"pray\",\"src\":\"1f64f.png\"},{\"name\":\"point_up\",\"src\":\"261d.png\"},{\"name\":\"clap\",\"src\":\"1f44f.png\"},{\"name\":\"muscle\",\"src\":\"1f4aa.png\"},{\"name\":\"walking\",\"src\":\"1f6b6.png\"},{\"name\":\"runner\",\"src\":\"1f3c3.png\"},{\"name\":\"dancer\",\"src\":\"1f483.png\"},{\"name\":\"couple\",\"src\":\"1f46b.png\"},{\"name\":\"family\",\"src\":\"1f46a.png\"},{\"name\":\"two_men_holding_hands\",\"src\":\"1f46c.png\"},{\"name\":\"two_women_holding_hands\",\"src\":\"1f46d.png\"},{\"name\":\"couplekiss\",\"src\":\"1f48f.png\"},{\"name\":\"couple_with_heart\",\"src\":\"1f491.png\"},{\"name\":\"dancers\",\"src\":\"1f46f.png\"},{\"name\":\"ok_woman\",\"src\":\"1f646.png\"},{\"name\":\"no_good\",\"src\":\"1f645.png\"},{\"name\":\"information_desk_person\",\"src\":\"1f481.png\"},{\"name\":\"raising_hand\",\"src\":\"1f64b.png\"},{\"name\":\"massage\",\"src\":\"1f486.png\"},{\"name\":\"haircut\",\"src\":\"1f487.png\"},{\"name\":\"nail_care\",\"src\":\"1f485.png\"},{\"name\":\"bride_with_veil\",\"src\":\"1f470.png\"},{\"name\":\"person_with_pouting_face\",\"src\":\"1f64e.png\"},{\"name\":\"person_frowning\",\"src\":\"1f64d.png\"},{\"name\":\"bow\",\"src\":\"1f647.png\"},{\"name\":\"tophat\",\"src\":\"1f3a9.png\"},{\"name\":\"crown\",\"src\":\"1f451.png\"},{\"name\":\"womans_hat\",\"src\":\"1f452.png\"},{\"name\":\"athletic_shoe\",\"src\":\"1f45f.png\"},{\"name\":\"mans_shoe\",\"src\":\"1f45e.png\"},{\"name\":\"sandal\",\"src\":\"1f461.png\"},{\"name\":\"high_heel\",\"src\":\"1f460.png\"},{\"name\":\"boot\",\"src\":\"1f462.png\"},{\"name\":\"shirt\",\"src\":\"1f455.png\"},{\"name\":\"necktie\",\"src\":\"1f454.png\"},{\"name\":\"womans_clothes\",\"src\":\"1f45a.png\"},{\"name\":\"dress\",\"src\":\"1f457.png\"},{\"name\":\"running_shirt_with_sash\",\"src\":\"1f3bd.png\"},{\"name\":\"jeans\",\"src\":\"1f456.png\"},{\"name\":\"kimono\",\"src\":\"1f458.png\"},{\"name\":\"bikini\",\"src\":\"1f459.png\"},{\"name\":\"briefcase\",\"src\":\"1f4bc.png\"},{\"name\":\"handbag\",\"src\":\"1f45c.png\"},{\"name\":\"pouch\",\"src\":\"1f45d.png\"},{\"name\":\"purse\",\"src\":\"1f45b.png\"},{\"name\":\"eyeglasses\",\"src\":\"1f453.png\"},{\"name\":\"ribbon\",\"src\":\"1f380.png\"},{\"name\":\"closed_umbrella\",\"src\":\"1f302.png\"},{\"name\":\"lipstick\",\"src\":\"1f484.png\"},{\"name\":\"yellow_heart\",\"src\":\"1f49b.png\"},{\"name\":\"blue_heart\",\"src\":\"1f499.png\"},{\"name\":\"purple_heart\",\"src\":\"1f49c.png\"},{\"name\":\"green_heart\",\"src\":\"1f49a.png\"},{\"name\":\"heart\",\"src\":\"2764.png\"},{\"name\":\"broken_heart\",\"src\":\"1f494.png\"},{\"name\":\"heartpulse\",\"src\":\"1f497.png\"},{\"name\":\"heartbeat\",\"src\":\"1f493.png\"},{\"name\":\"two_hearts\",\"src\":\"1f495.png\"},{\"name\":\"sparkling_heart\",\"src\":\"1f496.png\"},{\"name\":\"revolving_hearts\",\"src\":\"1f49e.png\"},{\"name\":\"cupid\",\"src\":\"1f498.png\"},{\"name\":\"love_letter\",\"src\":\"1f48c.png\"},{\"name\":\"kiss\",\"src\":\"1f48b.png\"},{\"name\":\"ring\",\"src\":\"1f48d.png\"},{\"name\":\"gem\",\"src\":\"1f48e.png\"},{\"name\":\"bust_in_silhouette\",\"src\":\"1f464.png\"},{\"name\":\"busts_in_silhouette\",\"src\":\"1f465.png\"},{\"name\":\"speech_balloon\",\"src\":\"1f4ac.png\"},{\"name\":\"footprints\",\"src\":\"1f463.png\"},{\"name\":\"thought_balloon\",\"src\":\"1f4ad.png\"}]},{\"typ\":\"EmojiCategory-Nature\",\"nm\":\"自然\",\"items\":[{\"name\":\"dog\",\"src\":\"1f436.png\"},{\"name\":\"wolf\",\"src\":\"1f43a.png\"},{\"name\":\"cat\",\"src\":\"1f431.png\"},{\"name\":\"mouse\",\"src\":\"1f42d.png\"},{\"name\":\"hamster\",\"src\":\"1f439.png\"},{\"name\":\"rabbit\",\"src\":\"1f430.png\"},{\"name\":\"frog\",\"src\":\"1f438.png\"},{\"name\":\"tiger\",\"src\":\"1f42f.png\"},{\"name\":\"koala\",\"src\":\"1f428.png\"},{\"name\":\"bear\",\"src\":\"1f43b.png\"},{\"name\":\"pig\",\"src\":\"1f437.png\"},{\"name\":\"pig_nose\",\"src\":\"1f43d.png\"},{\"name\":\"cow\",\"src\":\"1f42e.png\"},{\"name\":\"boar\",\"src\":\"1f417.png\"},{\"name\":\"monkey_face\",\"src\":\"1f435.png\"},{\"name\":\"monkey\",\"src\":\"1f412.png\"},{\"name\":\"horse\",\"src\":\"1f434.png\"},{\"name\":\"sheep\",\"src\":\"1f411.png\"},{\"name\":\"elephant\",\"src\":\"1f418.png\"},{\"name\":\"panda_face\",\"src\":\"1f43c.png\"},{\"name\":\"penguin\",\"src\":\"1f427.png\"},{\"name\":\"bird\",\"src\":\"1f426.png\"},{\"name\":\"baby_chick\",\"src\":\"1f424.png\"},{\"name\":\"hatched_chick\",\"src\":\"1f425.png\"},{\"name\":\"hatching_chick\",\"src\":\"1f423.png\"},{\"name\":\"chicken\",\"src\":\"1f414.png\"},{\"name\":\"snake\",\"src\":\"1f40d.png\"},{\"name\":\"turtle\",\"src\":\"1f422.png\"},{\"name\":\"bug\",\"src\":\"1f41b.png\"},{\"name\":\"bee\",\"src\":\"1f41d.png\"},{\"name\":\"ant\",\"src\":\"1f41c.png\"},{\"name\":\"beetle\",\"src\":\"1f41e.png\"},{\"name\":\"snail\",\"src\":\"1f40c.png\"},{\"name\":\"octopus\",\"src\":\"1f419.png\"},{\"name\":\"shell\",\"src\":\"1f41a.png\"},{\"name\":\"tropical_fish\",\"src\":\"1f420.png\"},{\"name\":\"fish\",\"src\":\"1f41f.png\"},{\"name\":\"dolphin\",\"src\":\"1f42c.png\"},{\"name\":\"whale\",\"src\":\"1f433.png\"},{\"name\":\"whale2\",\"src\":\"1f40b.png\"},{\"name\":\"cow2\",\"src\":\"1f404.png\"},{\"name\":\"ram\",\"src\":\"1f40f.png\"},{\"name\":\"rat\",\"src\":\"1f400.png\"},{\"name\":\"water_buffalo\",\"src\":\"1f403.png\"},{\"name\":\"tiger2\",\"src\":\"1f405.png\"},{\"name\":\"rabbit2\",\"src\":\"1f407.png\"},{\"name\":\"dragon\",\"src\":\"1f409.png\"},{\"name\":\"racehorse\",\"src\":\"1f40e.png\"},{\"name\":\"goat\",\"src\":\"1f410.png\"},{\"name\":\"rooster\",\"src\":\"1f413.png\"},{\"name\":\"dog2\",\"src\":\"1f415.png\"},{\"name\":\"pig2\",\"src\":\"1f416.png\"},{\"name\":\"mouse2\",\"src\":\"1f401.png\"},{\"name\":\"ox\",\"src\":\"1f402.png\"},{\"name\":\"dragon_face\",\"src\":\"1f432.png\"},{\"name\":\"blowfish\",\"src\":\"1f421.png\"},{\"name\":\"crocodile\",\"src\":\"1f40a.png\"},{\"name\":\"camel\",\"src\":\"1f42b.png\"},{\"name\":\"dromedary_camel\",\"src\":\"1f42a.png\"},{\"name\":\"leopard\",\"src\":\"1f406.png\"},{\"name\":\"cat2\",\"src\":\"1f408.png\"},{\"name\":\"poodle\",\"src\":\"1f429.png\"},{\"name\":\"feet\",\"src\":\"1f43e.png\"},{\"name\":\"bouquet\",\"src\":\"1f490.png\"},{\"name\":\"cherry_blossom\",\"src\":\"1f338.png\"},{\"name\":\"tulip\",\"src\":\"1f337.png\"},{\"name\":\"four_leaf_clover\",\"src\":\"1f340.png\"},{\"name\":\"rose\",\"src\":\"1f339.png\"},{\"name\":\"sunflower\",\"src\":\"1f33b.png\"},{\"name\":\"hibiscus\",\"src\":\"1f33a.png\"},{\"name\":\"maple_leaf\",\"src\":\"1f341.png\"},{\"name\":\"leaves\",\"src\":\"1f343.png\"},{\"name\":\"fallen_leaf\",\"src\":\"1f342.png\"},{\"name\":\"herb\",\"src\":\"1f33f.png\"},{\"name\":\"ear_of_rice\",\"src\":\"1f33e.png\"},{\"name\":\"mushroom\",\"src\":\"1f344.png\"},{\"name\":\"cactus\",\"src\":\"1f335.png\"},{\"name\":\"palm_tree\",\"src\":\"1f334.png\"},{\"name\":\"evergreen_tree\",\"src\":\"1f332.png\"},{\"name\":\"deciduous_tree\",\"src\":\"1f333.png\"},{\"name\":\"chestnut\",\"src\":\"1f330.png\"},{\"name\":\"seedling\",\"src\":\"1f331.png\"},{\"name\":\"blossom\",\"src\":\"1f33c.png\"},{\"name\":\"globe_with_meridians\",\"src\":\"1f310.png\"},{\"name\":\"sun_with_face\",\"src\":\"1f31e.png\"},{\"name\":\"full_moon_with_face\",\"src\":\"1f31d.png\"},{\"name\":\"new_moon_with_face\",\"src\":\"1f31a.png\"},{\"name\":\"new_moon\",\"src\":\"1f311.png\"},{\"name\":\"waxing_crescent_moon\",\"src\":\"1f312.png\"},{\"name\":\"first_quarter_moon\",\"src\":\"1f313.png\"},{\"name\":\"moon\",\"src\":\"1f314.png\"},{\"name\":\"full_moon\",\"src\":\"1f315.png\"},{\"name\":\"waning_gibbous_moon\",\"src\":\"1f316.png\"},{\"name\":\"last_quarter_moon\",\"src\":\"1f317.png\"},{\"name\":\"waning_crescent_moon\",\"src\":\"1f318.png\"},{\"name\":\"last_quarter_moon_with_face\",\"src\":\"1f31c.png\"},{\"name\":\"first_quarter_moon_with_face\",\"src\":\"1f31b.png\"},{\"name\":\"crescent_moon\",\"src\":\"1f319.png\"},{\"name\":\"earth_africa\",\"src\":\"1f30d.png\"},{\"name\":\"earth_americas\",\"src\":\"1f30e.png\"},{\"name\":\"earth_asia\",\"src\":\"1f30f.png\"},{\"name\":\"volcano\",\"src\":\"1f30b.png\"},{\"name\":\"milky_way\",\"src\":\"1f30c.png\"},{\"name\":\"stars\",\"src\":\"1f320.png\"},{\"name\":\"star\",\"src\":\"2b50.png\"},{\"name\":\"sunny\",\"src\":\"2600.png\"},{\"name\":\"partly_sunny\",\"src\":\"26c5.png\"},{\"name\":\"cloud\",\"src\":\"2601.png\"},{\"name\":\"zap\",\"src\":\"26a1.png\"},{\"name\":\"umbrella\",\"src\":\"2614.png\"},{\"name\":\"snowflake\",\"src\":\"2744.png\"},{\"name\":\"snowman\",\"src\":\"26c4.png\"},{\"name\":\"cyclone\",\"src\":\"1f300.png\"},{\"name\":\"foggy\",\"src\":\"1f301.png\"},{\"name\":\"rainbow\",\"src\":\"1f308.png\"},{\"name\":\"ocean\",\"src\":\"1f30a.png\"}]},{\"typ\":\"EmojiCategory-Objects\",\"nm\":\"物体\",\"items\":[{\"name\":\"bamboo\",\"src\":\"1f38d.png\"},{\"name\":\"gift_heart\",\"src\":\"1f49d.png\"},{\"name\":\"dolls\",\"src\":\"1f38e.png\"},{\"name\":\"school_satchel\",\"src\":\"1f392.png\"},{\"name\":\"mortar_board\",\"src\":\"1f393.png\"},{\"name\":\"flags\",\"src\":\"1f38f.png\"},{\"name\":\"fireworks\",\"src\":\"1f386.png\"},{\"name\":\"sparkler\",\"src\":\"1f387.png\"},{\"name\":\"wind_chime\",\"src\":\"1f390.png\"},{\"name\":\"rice_scene\",\"src\":\"1f391.png\"},{\"name\":\"jack_o_lantern\",\"src\":\"1f383.png\"},{\"name\":\"ghost\",\"src\":\"1f47b.png\"},{\"name\":\"santa\",\"src\":\"1f385.png\"},{\"name\":\"christmas_tree\",\"src\":\"1f384.png\"},{\"name\":\"gift\",\"src\":\"1f381.png\"},{\"name\":\"tanabata_tree\",\"src\":\"1f38b.png\"},{\"name\":\"tada\",\"src\":\"1f389.png\"},{\"name\":\"confetti_ball\",\"src\":\"1f38a.png\"},{\"name\":\"balloon\",\"src\":\"1f388.png\"},{\"name\":\"crossed_flags\",\"src\":\"1f38c.png\"},{\"name\":\"crystal_ball\",\"src\":\"1f52e.png\"},{\"name\":\"movie_camera\",\"src\":\"1f3a5.png\"},{\"name\":\"camera\",\"src\":\"1f4f7.png\"},{\"name\":\"video_camera\",\"src\":\"1f4f9.png\"},{\"name\":\"vhs\",\"src\":\"1f4fc.png\"},{\"name\":\"cd\",\"src\":\"1f4bf.png\"},{\"name\":\"dvd\",\"src\":\"1f4c0.png\"},{\"name\":\"minidisc\",\"src\":\"1f4bd.png\"},{\"name\":\"floppy_disk\",\"src\":\"1f4be.png\"},{\"name\":\"computer\",\"src\":\"1f4bb.png\"},{\"name\":\"iphone\",\"src\":\"1f4f1.png\"},{\"name\":\"phone\",\"src\":\"260e.png\"},{\"name\":\"telephone_receiver\",\"src\":\"1f4de.png\"},{\"name\":\"pager\",\"src\":\"1f4df.png\"},{\"name\":\"fax\",\"src\":\"1f4e0.png\"},{\"name\":\"satellite\",\"src\":\"1f4e1.png\"},{\"name\":\"tv\",\"src\":\"1f4fa.png\"},{\"name\":\"radio\",\"src\":\"1f4fb.png\"},{\"name\":\"loud_sound\",\"src\":\"1f50a.png\"},{\"name\":\"sound\",\"src\":\"1f509.png\"},{\"name\":\"speaker\",\"src\":\"1f508.png\"},{\"name\":\"mute\",\"src\":\"1f507.png\"},{\"name\":\"bell\",\"src\":\"1f514.png\"},{\"name\":\"no_bell\",\"src\":\"1f515.png\"},{\"name\":\"loudspeaker\",\"src\":\"1f4e2.png\"},{\"name\":\"mega\",\"src\":\"1f4e3.png\"},{\"name\":\"hourglass_flowing_sand\",\"src\":\"23f3.png\"},{\"name\":\"hourglass\",\"src\":\"231b.png\"},{\"name\":\"alarm_clock\",\"src\":\"23f0.png\"},{\"name\":\"watch\",\"src\":\"231a.png\"},{\"name\":\"unlock\",\"src\":\"1f513.png\"},{\"name\":\"lock\",\"src\":\"1f512.png\"},{\"name\":\"lock_with_ink_pen\",\"src\":\"1f50f.png\"},{\"name\":\"closed_lock_with_key\",\"src\":\"1f510.png\"},{\"name\":\"key\",\"src\":\"1f511.png\"},{\"name\":\"mag_right\",\"src\":\"1f50e.png\"},{\"name\":\"bulb\",\"src\":\"1f4a1.png\"},{\"name\":\"flashlight\",\"src\":\"1f526.png\"},{\"name\":\"high_brightness\",\"src\":\"1f506.png\"},{\"name\":\"low_brightness\",\"src\":\"1f505.png\"},{\"name\":\"electric_plug\",\"src\":\"1f50c.png\"},{\"name\":\"battery\",\"src\":\"1f50b.png\"},{\"name\":\"mag\",\"src\":\"1f50d.png\"},{\"name\":\"bathtub\",\"src\":\"1f6c1.png\"},{\"name\":\"bath\",\"src\":\"1f6c0.png\"},{\"name\":\"shower\",\"src\":\"1f6bf.png\"},{\"name\":\"toilet\",\"src\":\"1f6bd.png\"},{\"name\":\"wrench\",\"src\":\"1f527.png\"},{\"name\":\"nut_and_bolt\",\"src\":\"1f529.png\"},{\"name\":\"hammer\",\"src\":\"1f528.png\"},{\"name\":\"door\",\"src\":\"1f6aa.png\"},{\"name\":\"smoking\",\"src\":\"1f6ac.png\"},{\"name\":\"bomb\",\"src\":\"1f4a3.png\"},{\"name\":\"gun\",\"src\":\"1f52b.png\"},{\"name\":\"hocho\",\"src\":\"1f52a.png\"},{\"name\":\"pill\",\"src\":\"1f48a.png\"},{\"name\":\"syringe\",\"src\":\"1f489.png\"},{\"name\":\"moneybag\",\"src\":\"1f4b0.png\"},{\"name\":\"yen\",\"src\":\"1f4b4.png\"},{\"name\":\"dollar\",\"src\":\"1f4b5.png\"},{\"name\":\"pound\",\"src\":\"1f4b7.png\"},{\"name\":\"euro\",\"src\":\"1f4b6.png\"},{\"name\":\"credit_card\",\"src\":\"1f4b3.png\"},{\"name\":\"money_with_wings\",\"src\":\"1f4b8.png\"},{\"name\":\"calling\",\"src\":\"1f4f2.png\"},{\"name\":\"e-mail\",\"src\":\"1f4e7.png\"},{\"name\":\"inbox_tray\",\"src\":\"1f4e5.png\"},{\"name\":\"outbox_tray\",\"src\":\"1f4e4.png\"},{\"name\":\"email\",\"src\":\"2709.png\"},{\"name\":\"envelope_with_arrow\",\"src\":\"1f4e9.png\"},{\"name\":\"incoming_envelope\",\"src\":\"1f4e8.png\"},{\"name\":\"postal_horn\",\"src\":\"1f4ef.png\"},{\"name\":\"mailbox\",\"src\":\"1f4eb.png\"},{\"name\":\"mailbox_closed\",\"src\":\"1f4ea.png\"},{\"name\":\"mailbox_with_mail\",\"src\":\"1f4ec.png\"},{\"name\":\"mailbox_with_no_mail\",\"src\":\"1f4ed.png\"},{\"name\":\"postbox\",\"src\":\"1f4ee.png\"},{\"name\":\"package\",\"src\":\"1f4e6.png\"},{\"name\":\"memo\",\"src\":\"1f4dd.png\"},{\"name\":\"page_facing_up\",\"src\":\"1f4c4.png\"},{\"name\":\"page_with_curl\",\"src\":\"1f4c3.png\"},{\"name\":\"bookmark_tabs\",\"src\":\"1f4d1.png\"},{\"name\":\"bar_chart\",\"src\":\"1f4ca.png\"},{\"name\":\"chart_with_upwards_trend\",\"src\":\"1f4c8.png\"},{\"name\":\"chart_with_downwards_trend\",\"src\":\"1f4c9.png\"},{\"name\":\"scroll\",\"src\":\"1f4dc.png\"},{\"name\":\"clipboard\",\"src\":\"1f4cb.png\"},{\"name\":\"date\",\"src\":\"1f4c5.png\"},{\"name\":\"calendar\",\"src\":\"1f4c6.png\"},{\"name\":\"card_index\",\"src\":\"1f4c7.png\"},{\"name\":\"file_folder\",\"src\":\"1f4c1.png\"},{\"name\":\"open_file_folder\",\"src\":\"1f4c2.png\"},{\"name\":\"scissors\",\"src\":\"2702.png\"},{\"name\":\"pushpin\",\"src\":\"1f4cc.png\"},{\"name\":\"paperclip\",\"src\":\"1f4ce.png\"},{\"name\":\"black_nib\",\"src\":\"2712.png\"},{\"name\":\"pencil2\",\"src\":\"270f.png\"},{\"name\":\"straight_ruler\",\"src\":\"1f4cf.png\"},{\"name\":\"triangular_ruler\",\"src\":\"1f4d0.png\"},{\"name\":\"closed_book\",\"src\":\"1f4d5.png\"},{\"name\":\"green_book\",\"src\":\"1f4d7.png\"},{\"name\":\"blue_book\",\"src\":\"1f4d8.png\"},{\"name\":\"orange_book\",\"src\":\"1f4d9.png\"},{\"name\":\"notebook\",\"src\":\"1f4d3.png\"},{\"name\":\"notebook_with_decorative_cover\",\"src\":\"1f4d4.png\"},{\"name\":\"ledger\",\"src\":\"1f4d2.png\"},{\"name\":\"books\",\"src\":\"1f4da.png\"},{\"name\":\"book\",\"src\":\"1f4d6.png\"},{\"name\":\"bookmark\",\"src\":\"1f516.png\"},{\"name\":\"name_badge\",\"src\":\"1f4db.png\"},{\"name\":\"microscope\",\"src\":\"1f52c.png\"},{\"name\":\"telescope\",\"src\":\"1f52d.png\"},{\"name\":\"newspaper\",\"src\":\"1f4f0.png\"},{\"name\":\"art\",\"src\":\"1f3a8.png\"},{\"name\":\"clapper\",\"src\":\"1f3ac.png\"},{\"name\":\"microphone\",\"src\":\"1f3a4.png\"},{\"name\":\"headphones\",\"src\":\"1f3a7.png\"},{\"name\":\"musical_score\",\"src\":\"1f3bc.png\"},{\"name\":\"musical_note\",\"src\":\"1f3b5.png\"},{\"name\":\"notes\",\"src\":\"1f3b6.png\"},{\"name\":\"musical_keyboard\",\"src\":\"1f3b9.png\"},{\"name\":\"violin\",\"src\":\"1f3bb.png\"},{\"name\":\"trumpet\",\"src\":\"1f3ba.png\"},{\"name\":\"saxophone\",\"src\":\"1f3b7.png\"},{\"name\":\"guitar\",\"src\":\"1f3b8.png\"},{\"name\":\"space_invader\",\"src\":\"1f47e.png\"},{\"name\":\"video_game\",\"src\":\"1f3ae.png\"},{\"name\":\"black_joker\",\"src\":\"1f0cf.png\"},{\"name\":\"flower_playing_cards\",\"src\":\"1f3b4.png\"},{\"name\":\"mahjong\",\"src\":\"1f004.png\"},{\"name\":\"game_die\",\"src\":\"1f3b2.png\"},{\"name\":\"dart\",\"src\":\"1f3af.png\"},{\"name\":\"football\",\"src\":\"1f3c8.png\"},{\"name\":\"basketball\",\"src\":\"1f3c0.png\"},{\"name\":\"soccer\",\"src\":\"26bd.png\"},{\"name\":\"baseball\",\"src\":\"26be.png\"},{\"name\":\"tennis\",\"src\":\"1f3be.png\"},{\"name\":\"8ball\",\"src\":\"1f3b1.png\"},{\"name\":\"rugby_football\",\"src\":\"1f3c9.png\"},{\"name\":\"bowling\",\"src\":\"1f3b3.png\"},{\"name\":\"golf\",\"src\":\"26f3.png\"},{\"name\":\"mountain_bicyclist\",\"src\":\"1f6b5.png\"},{\"name\":\"bicyclist\",\"src\":\"1f6b4.png\"},{\"name\":\"checkered_flag\",\"src\":\"1f3c1.png\"},{\"name\":\"horse_racing\",\"src\":\"1f3c7.png\"},{\"name\":\"trophy\",\"src\":\"1f3c6.png\"},{\"name\":\"ski\",\"src\":\"1f3bf.png\"},{\"name\":\"snowboarder\",\"src\":\"1f3c2.png\"},{\"name\":\"swimmer\",\"src\":\"1f3ca.png\"},{\"name\":\"surfer\",\"src\":\"1f3c4.png\"},{\"name\":\"fishing_pole_and_fish\",\"src\":\"1f3a3.png\"},{\"name\":\"coffee\",\"src\":\"2615.png\"},{\"name\":\"tea\",\"src\":\"1f375.png\"},{\"name\":\"sake\",\"src\":\"1f376.png\"},{\"name\":\"baby_bottle\",\"src\":\"1f37c.png\"},{\"name\":\"beer\",\"src\":\"1f37a.png\"},{\"name\":\"beers\",\"src\":\"1f37b.png\"},{\"name\":\"cocktail\",\"src\":\"1f378.png\"},{\"name\":\"tropical_drink\",\"src\":\"1f379.png\"},{\"name\":\"wine_glass\",\"src\":\"1f377.png\"},{\"name\":\"fork_and_knife\",\"src\":\"1f374.png\"},{\"name\":\"pizza\",\"src\":\"1f355.png\"},{\"name\":\"hamburger\",\"src\":\"1f354.png\"},{\"name\":\"fries\",\"src\":\"1f35f.png\"},{\"name\":\"poultry_leg\",\"src\":\"1f357.png\"},{\"name\":\"meat_on_bone\",\"src\":\"1f356.png\"},{\"name\":\"spaghetti\",\"src\":\"1f35d.png\"},{\"name\":\"curry\",\"src\":\"1f35b.png\"},{\"name\":\"fried_shrimp\",\"src\":\"1f364.png\"},{\"name\":\"bento\",\"src\":\"1f371.png\"},{\"name\":\"sushi\",\"src\":\"1f363.png\"},{\"name\":\"fish_cake\",\"src\":\"1f365.png\"},{\"name\":\"rice_ball\",\"src\":\"1f359.png\"},{\"name\":\"rice_cracker\",\"src\":\"1f358.png\"},{\"name\":\"rice\",\"src\":\"1f35a.png\"},{\"name\":\"ramen\",\"src\":\"1f35c.png\"},{\"name\":\"stew\",\"src\":\"1f372.png\"},{\"name\":\"oden\",\"src\":\"1f362.png\"},{\"name\":\"dango\",\"src\":\"1f361.png\"},{\"name\":\"egg\",\"src\":\"1f373.png\"},{\"name\":\"bread\",\"src\":\"1f35e.png\"},{\"name\":\"doughnut\",\"src\":\"1f369.png\"},{\"name\":\"custard\",\"src\":\"1f36e.png\"},{\"name\":\"icecream\",\"src\":\"1f366.png\"},{\"name\":\"ice_cream\",\"src\":\"1f368.png\"},{\"name\":\"shaved_ice\",\"src\":\"1f367.png\"},{\"name\":\"birthday\",\"src\":\"1f382.png\"},{\"name\":\"cake\",\"src\":\"1f370.png\"},{\"name\":\"cookie\",\"src\":\"1f36a.png\"},{\"name\":\"chocolate_bar\",\"src\":\"1f36b.png\"},{\"name\":\"candy\",\"src\":\"1f36c.png\"},{\"name\":\"lollipop\",\"src\":\"1f36d.png\"},{\"name\":\"honey_pot\",\"src\":\"1f36f.png\"},{\"name\":\"apple\",\"src\":\"1f34e.png\"},{\"name\":\"green_apple\",\"src\":\"1f34f.png\"},{\"name\":\"tangerine\",\"src\":\"1f34a.png\"},{\"name\":\"lemon\",\"src\":\"1f34b.png\"},{\"name\":\"cherries\",\"src\":\"1f352.png\"},{\"name\":\"grapes\",\"src\":\"1f347.png\"},{\"name\":\"watermelon\",\"src\":\"1f349.png\"},{\"name\":\"strawberry\",\"src\":\"1f353.png\"},{\"name\":\"peach\",\"src\":\"1f351.png\"},{\"name\":\"melon\",\"src\":\"1f348.png\"},{\"name\":\"banana\",\"src\":\"1f34c.png\"},{\"name\":\"pear\",\"src\":\"1f350.png\"},{\"name\":\"pineapple\",\"src\":\"1f34d.png\"},{\"name\":\"sweet_potato\",\"src\":\"1f360.png\"},{\"name\":\"eggplant\",\"src\":\"1f346.png\"},{\"name\":\"tomato\",\"src\":\"1f345.png\"},{\"name\":\"corn\",\"src\":\"1f33d.png\"}]},{\"typ\":\"EmojiCategory-Places\",\"nm\":\"地点\",\"items\":[{\"name\":\"house\",\"src\":\"1f3e0.png\"},{\"name\":\"house_with_garden\",\"src\":\"1f3e1.png\"},{\"name\":\"school\",\"src\":\"1f3eb.png\"},{\"name\":\"office\",\"src\":\"1f3e2.png\"},{\"name\":\"post_office\",\"src\":\"1f3e3.png\"},{\"name\":\"hospital\",\"src\":\"1f3e5.png\"},{\"name\":\"bank\",\"src\":\"1f3e6.png\"},{\"name\":\"convenience_store\",\"src\":\"1f3ea.png\"},{\"name\":\"love_hotel\",\"src\":\"1f3e9.png\"},{\"name\":\"hotel\",\"src\":\"1f3e8.png\"},{\"name\":\"wedding\",\"src\":\"1f492.png\"},{\"name\":\"church\",\"src\":\"26ea.png\"},{\"name\":\"department_store\",\"src\":\"1f3ec.png\"},{\"name\":\"european_post_office\",\"src\":\"1f3e4.png\"},{\"name\":\"city_sunrise\",\"src\":\"1f307.png\"},{\"name\":\"city_sunset\",\"src\":\"1f306.png\"},{\"name\":\"japanese_castle\",\"src\":\"1f3ef.png\"},{\"name\":\"european_castle\",\"src\":\"1f3f0.png\"},{\"name\":\"tent\",\"src\":\"26fa.png\"},{\"name\":\"factory\",\"src\":\"1f3ed.png\"},{\"name\":\"tokyo_tower\",\"src\":\"1f5fc.png\"},{\"name\":\"japan\",\"src\":\"1f5fe.png\"},{\"name\":\"mount_fuji\",\"src\":\"1f5fb.png\"},{\"name\":\"sunrise_over_mountains\",\"src\":\"1f304.png\"},{\"name\":\"sunrise\",\"src\":\"1f305.png\"},{\"name\":\"night_with_stars\",\"src\":\"1f303.png\"},{\"name\":\"statue_of_liberty\",\"src\":\"1f5fd.png\"},{\"name\":\"bridge_at_night\",\"src\":\"1f309.png\"},{\"name\":\"carousel_horse\",\"src\":\"1f3a0.png\"},{\"name\":\"ferris_wheel\",\"src\":\"1f3a1.png\"},{\"name\":\"fountain\",\"src\":\"26f2.png\"},{\"name\":\"roller_coaster\",\"src\":\"1f3a2.png\"},{\"name\":\"ship\",\"src\":\"1f6a2.png\"},{\"name\":\"boat\",\"src\":\"26f5.png\"},{\"name\":\"speedboat\",\"src\":\"1f6a4.png\"},{\"name\":\"rowboat\",\"src\":\"1f6a3.png\"},{\"name\":\"anchor\",\"src\":\"2693.png\"},{\"name\":\"rocket\",\"src\":\"1f680.png\"},{\"name\":\"airplane\",\"src\":\"2708.png\"},{\"name\":\"seat\",\"src\":\"1f4ba.png\"},{\"name\":\"helicopter\",\"src\":\"1f681.png\"},{\"name\":\"steam_locomotive\",\"src\":\"1f682.png\"},{\"name\":\"tram\",\"src\":\"1f68a.png\"},{\"name\":\"station\",\"src\":\"1f689.png\"},{\"name\":\"mountain_railway\",\"src\":\"1f69e.png\"},{\"name\":\"train2\",\"src\":\"1f686.png\"},{\"name\":\"bullettrain_side\",\"src\":\"1f684.png\"},{\"name\":\"bullettrain_front\",\"src\":\"1f685.png\"},{\"name\":\"light_rail\",\"src\":\"1f688.png\"},{\"name\":\"metro\",\"src\":\"1f687.png\"},{\"name\":\"monorail\",\"src\":\"1f69d.png\"},{\"name\":\"train\",\"src\":\"1f68b.png\"},{\"name\":\"railway_car\",\"src\":\"1f683.png\"},{\"name\":\"trolleybus\",\"src\":\"1f68e.png\"},{\"name\":\"bus\",\"src\":\"1f68c.png\"},{\"name\":\"oncoming_bus\",\"src\":\"1f68d.png\"},{\"name\":\"blue_car\",\"src\":\"1f699.png\"},{\"name\":\"oncoming_automobile\",\"src\":\"1f698.png\"},{\"name\":\"car\",\"src\":\"1f697.png\"},{\"name\":\"taxi\",\"src\":\"1f695.png\"},{\"name\":\"oncoming_taxi\",\"src\":\"1f696.png\"},{\"name\":\"articulated_lorry\",\"src\":\"1f69b.png\"},{\"name\":\"truck\",\"src\":\"1f69a.png\"},{\"name\":\"rotating_light\",\"src\":\"1f6a8.png\"},{\"name\":\"police_car\",\"src\":\"1f693.png\"},{\"name\":\"oncoming_police_car\",\"src\":\"1f694.png\"},{\"name\":\"fire_engine\",\"src\":\"1f692.png\"},{\"name\":\"ambulance\",\"src\":\"1f691.png\"},{\"name\":\"minibus\",\"src\":\"1f690.png\"},{\"name\":\"bike\",\"src\":\"1f6b2.png\"},{\"name\":\"aerial_tramway\",\"src\":\"1f6a1.png\"},{\"name\":\"suspension_railway\",\"src\":\"1f69f.png\"},{\"name\":\"mountain_cableway\",\"src\":\"1f6a0.png\"},{\"name\":\"tractor\",\"src\":\"1f69c.png\"},{\"name\":\"barber\",\"src\":\"1f488.png\"},{\"name\":\"busstop\",\"src\":\"1f68f.png\"},{\"name\":\"ticket\",\"src\":\"1f3ab.png\"},{\"name\":\"vertical_traffic_light\",\"src\":\"1f6a6.png\"},{\"name\":\"traffic_light\",\"src\":\"1f6a5.png\"},{\"name\":\"warning\",\"src\":\"26a0.png\"},{\"name\":\"construction\",\"src\":\"1f6a7.png\"},{\"name\":\"beginner\",\"src\":\"1f530.png\"},{\"name\":\"fuelpump\",\"src\":\"26fd.png\"},{\"name\":\"izakaya_lantern\",\"src\":\"1f3ee.png\"},{\"name\":\"slot_machine\",\"src\":\"1f3b0.png\"},{\"name\":\"hotsprings\",\"src\":\"2668.png\"},{\"name\":\"moyai\",\"src\":\"1f5ff.png\"},{\"name\":\"circus_tent\",\"src\":\"1f3aa.png\"},{\"name\":\"performing_arts\",\"src\":\"1f3ad.png\"},{\"name\":\"round_pushpin\",\"src\":\"1f4cd.png\"},{\"name\":\"triangular_flag_on_post\",\"src\":\"1f6a9.png\"},{\"name\":\"jp\",\"src\":\"1f1ef-1f1f5.png\"},{\"name\":\"kr\",\"src\":\"1f1f0-1f1f7.png\"},{\"name\":\"de\",\"src\":\"1f1e9-1f1ea.png\"},{\"name\":\"cn\",\"src\":\"1f1e8-1f1f3.png\"},{\"name\":\"us\",\"src\":\"1f1fa-1f1f8.png\"},{\"name\":\"fr\",\"src\":\"1f1eb-1f1f7.png\"},{\"name\":\"es\",\"src\":\"1f1ea-1f1f8.png\"},{\"name\":\"it\",\"src\":\"1f1ee-1f1f9.png\"},{\"name\":\"ru\",\"src\":\"1f1f7-1f1fa.png\"},{\"name\":\"gb\",\"src\":\"1f1ec-1f1e7.png\"}]},{\"typ\":\"EmojiCategory-Symbols\",\"nm\":\"符号\",\"items\":[{\"name\":\"one\",\"src\":\"0031-20e3.png\"},{\"name\":\"two\",\"src\":\"0032-20e3.png\"},{\"name\":\"three\",\"src\":\"0033-20e3.png\"},{\"name\":\"four\",\"src\":\"0034-20e3.png\"},{\"name\":\"five\",\"src\":\"0035-20e3.png\"},{\"name\":\"six\",\"src\":\"0036-20e3.png\"},{\"name\":\"seven\",\"src\":\"0037-20e3.png\"},{\"name\":\"eight\",\"src\":\"0038-20e3.png\"},{\"name\":\"zero\",\"src\":\"0030-20e3.png\"},{\"name\":\"keycap_ten\",\"src\":\"1f51f.png\"},{\"name\":\"1234\",\"src\":\"1f522.png\"},{\"name\":\"hash\",\"src\":\"0023-20e3.png\"},{\"name\":\"symbols\",\"src\":\"1f523.png\"},{\"name\":\"arrow_up\",\"src\":\"2b06.png\"},{\"name\":\"arrow_down\",\"src\":\"2b07.png\"},{\"name\":\"arrow_left\",\"src\":\"2b05.png\"},{\"name\":\"arrow_right\",\"src\":\"27a1.png\"},{\"name\":\"capital_abcd\",\"src\":\"1f520.png\"},{\"name\":\"abcd\",\"src\":\"1f521.png\"},{\"name\":\"abc\",\"src\":\"1f524.png\"},{\"name\":\"arrow_upper_right\",\"src\":\"2197.png\"},{\"name\":\"arrow_upper_left\",\"src\":\"2196.png\"},{\"name\":\"arrow_lower_right\",\"src\":\"2198.png\"},{\"name\":\"arrow_lower_left\",\"src\":\"2199.png\"},{\"name\":\"left_right_arrow\",\"src\":\"2194.png\"},{\"name\":\"arrow_up_down\",\"src\":\"2195.png\"},{\"name\":\"arrows_counterclockwise\",\"src\":\"1f504.png\"},{\"name\":\"arrow_backward\",\"src\":\"25c0.png\"},{\"name\":\"arrow_forward\",\"src\":\"25b6.png\"},{\"name\":\"arrow_up_small\",\"src\":\"1f53c.png\"},{\"name\":\"arrow_down_small\",\"src\":\"1f53d.png\"},{\"name\":\"leftwards_arrow_with_hook\",\"src\":\"21a9.png\"},{\"name\":\"arrow_right_hook\",\"src\":\"21aa.png\"},{\"name\":\"information_source\",\"src\":\"2139.png\"},{\"name\":\"rewind\",\"src\":\"23ea.png\"},{\"name\":\"fast_forward\",\"src\":\"23e9.png\"},{\"name\":\"arrow_double_up\",\"src\":\"23eb.png\"},{\"name\":\"arrow_double_down\",\"src\":\"23ec.png\"},{\"name\":\"arrow_heading_down\",\"src\":\"2935.png\"},{\"name\":\"arrow_heading_up\",\"src\":\"2934.png\"},{\"name\":\"ok\",\"src\":\"1f197.png\"},{\"name\":\"twisted_rightwards_arrows\",\"src\":\"1f500.png\"},{\"name\":\"repeat\",\"src\":\"1f501.png\"},{\"name\":\"repeat_one\",\"src\":\"1f502.png\"},{\"name\":\"new\",\"src\":\"1f195.png\"},{\"name\":\"up\",\"src\":\"1f199.png\"},{\"name\":\"cool\",\"src\":\"1f192.png\"},{\"name\":\"free\",\"src\":\"1f193.png\"},{\"name\":\"ng\",\"src\":\"1f196.png\"},{\"name\":\"signal_strength\",\"src\":\"1f4f6.png\"},{\"name\":\"cinema\",\"src\":\"1f3a6.png\"},{\"name\":\"koko\",\"src\":\"1f201.png\"},{\"name\":\"u6307\",\"src\":\"1f22f.png\"},{\"name\":\"u7a7a\",\"src\":\"1f233.png\"},{\"name\":\"u6e80\",\"src\":\"1f235.png\"},{\"name\":\"u5408\",\"src\":\"1f234.png\"},{\"name\":\"u7981\",\"src\":\"1f232.png\"},{\"name\":\"ideograph_advantage\",\"src\":\"1f250.png\"},{\"name\":\"u5272\",\"src\":\"1f239.png\"},{\"name\":\"u55b6\",\"src\":\"1f23a.png\"},{\"name\":\"u6709\",\"src\":\"1f236.png\"},{\"name\":\"u7121\",\"src\":\"1f21a.png\"},{\"name\":\"restroom\",\"src\":\"1f6bb.png\"},{\"name\":\"mens\",\"src\":\"1f6b9.png\"},{\"name\":\"womens\",\"src\":\"1f6ba.png\"},{\"name\":\"baby_symbol\",\"src\":\"1f6bc.png\"},{\"name\":\"wc\",\"src\":\"1f6be.png\"},{\"name\":\"potable_water\",\"src\":\"1f6b0.png\"},{\"name\":\"put_litter_in_its_place\",\"src\":\"1f6ae.png\"},{\"name\":\"parking\",\"src\":\"1f17f.png\"},{\"name\":\"wheelchair\",\"src\":\"267f.png\"},{\"name\":\"no_smoking\",\"src\":\"1f6ad.png\"},null,{\"name\":\"u7533\",\"src\":\"1f238.png\"},null,{\"name\":\"m\",\"src\":\"24c2.png\"},{\"name\":\"passport_control\",\"src\":\"1f6c2.png\"},{\"name\":\"baggage_claim\",\"src\":\"1f6c4.png\"},{\"name\":\"left_luggage\",\"src\":\"1f6c5.png\"},{\"name\":\"customs\",\"src\":\"1f6c3.png\"},{\"name\":\"accept\",\"src\":\"1f251.png\"},{\"name\":\"secret\",\"src\":\"3299.png\"},{\"name\":\"congratulations\",\"src\":\"3297.png\"},{\"name\":\"cl\",\"src\":\"1f191.png\"},{\"name\":\"sos\",\"src\":\"1f198.png\"},{\"name\":\"id\",\"src\":\"1f194.png\"},{\"name\":\"no_entry_sign\",\"src\":\"1f6ab.png\"},{\"name\":\"underage\",\"src\":\"1f51e.png\"},{\"name\":\"no_mobile_phones\",\"src\":\"1f4f5.png\"},{\"name\":\"do_not_litter\",\"src\":\"1f6af.png\"},{\"name\":\"non-potable_water\",\"src\":\"1f6b1.png\"},{\"name\":\"no_bicycles\",\"src\":\"1f6b3.png\"},{\"name\":\"no_pedestrians\",\"src\":\"1f6b7.png\"},{\"name\":\"children_crossing\",\"src\":\"1f6b8.png\"},{\"name\":\"no_entry\",\"src\":\"26d4.png\"},{\"name\":\"eight_spoked_asterisk\",\"src\":\"2733.png\"},{\"name\":\"sparkle\",\"src\":\"2747.png\"},{\"name\":\"negative_squared_cross_mark\",\"src\":\"274e.png\"},{\"name\":\"white_check_mark\",\"src\":\"2705.png\"},{\"name\":\"eight_pointed_black_star\",\"src\":\"2734.png\"},{\"name\":\"heart_decoration\",\"src\":\"1f49f.png\"},{\"name\":\"vs\",\"src\":\"1f19a.png\"},{\"name\":\"vibration_mode\",\"src\":\"1f4f3.png\"},{\"name\":\"mobile_phone_off\",\"src\":\"1f4f4.png\"},null,null,{\"name\":\"ab\",\"src\":\"1f18e.png\"},null,{\"name\":\"diamond_shape_with_a_dot_inside\",\"src\":\"1f4a0.png\"},{\"name\":\"loop\",\"src\":\"27bf.png\"},{\"name\":\"recycle\",\"src\":\"267b.png\"},{\"name\":\"aries\",\"src\":\"2648.png\"},{\"name\":\"taurus\",\"src\":\"2649.png\"},{\"name\":\"gemini\",\"src\":\"264a.png\"},{\"name\":\"cancer\",\"src\":\"264b.png\"},{\"name\":\"leo\",\"src\":\"264c.png\"},{\"name\":\"virgo\",\"src\":\"264d.png\"},{\"name\":\"libra\",\"src\":\"264e.png\"},{\"name\":\"scorpius\",\"src\":\"264f.png\"},{\"name\":\"sagittarius\",\"src\":\"2650.png\"},{\"name\":\"capricorn\",\"src\":\"2651.png\"},{\"name\":\"aquarius\",\"src\":\"2652.png\"},{\"name\":\"pisces\",\"src\":\"2653.png\"},{\"name\":\"ophiuchus\",\"src\":\"26ce.png\"},{\"name\":\"six_pointed_star\",\"src\":\"1f52f.png\"},{\"name\":\"atm\",\"src\":\"1f3e7.png\"},{\"name\":\"chart\",\"src\":\"1f4b9.png\"},{\"name\":\"heavy_dollar_sign\",\"src\":\"1f4b2.png\"},{\"name\":\"currency_exchange\",\"src\":\"1f4b1.png\"},null,null,null,{\"name\":\"x\",\"src\":\"274c.png\"},{\"name\":\"bangbang\",\"src\":\"203c.png\"},{\"name\":\"interrobang\",\"src\":\"2049.png\"},{\"name\":\"exclamation\",\"src\":\"2757.png\"},{\"name\":\"question\",\"src\":\"2753.png\"},{\"name\":\"grey_exclamation\",\"src\":\"2755.png\"},{\"name\":\"grey_question\",\"src\":\"2754.png\"},{\"name\":\"o\",\"src\":\"2b55.png\"},{\"name\":\"top\",\"src\":\"1f51d.png\"},{\"name\":\"end\",\"src\":\"1f51a.png\"},{\"name\":\"back\",\"src\":\"1f519.png\"},{\"name\":\"on\",\"src\":\"1f51b.png\"},{\"name\":\"soon\",\"src\":\"1f51c.png\"},{\"name\":\"arrows_clockwise\",\"src\":\"1f503.png\"},{\"name\":\"clock12\",\"src\":\"1f55b.png\"},{\"name\":\"clock1230\",\"src\":\"1f567.png\"},{\"name\":\"clock1\",\"src\":\"1f550.png\"},{\"name\":\"clock130\",\"src\":\"1f55c.png\"},{\"name\":\"clock2\",\"src\":\"1f551.png\"},{\"name\":\"clock230\",\"src\":\"1f55d.png\"},{\"name\":\"clock3\",\"src\":\"1f552.png\"},{\"name\":\"clock330\",\"src\":\"1f55e.png\"},{\"name\":\"clock4\",\"src\":\"1f553.png\"},{\"name\":\"clock430\",\"src\":\"1f55f.png\"},{\"name\":\"clock5\",\"src\":\"1f554.png\"},{\"name\":\"clock530\",\"src\":\"1f560.png\"},{\"name\":\"clock6\",\"src\":\"1f555.png\"},{\"name\":\"clock7\",\"src\":\"1f556.png\"},{\"name\":\"clock8\",\"src\":\"1f557.png\"},{\"name\":\"clock9\",\"src\":\"1f558.png\"},{\"name\":\"clock10\",\"src\":\"1f559.png\"},{\"name\":\"clock11\",\"src\":\"1f55a.png\"},{\"name\":\"clock630\",\"src\":\"1f561.png\"},{\"name\":\"clock730\",\"src\":\"1f562.png\"},{\"name\":\"clock830\",\"src\":\"1f563.png\"},{\"name\":\"clock930\",\"src\":\"1f564.png\"},{\"name\":\"clock1030\",\"src\":\"1f565.png\"},{\"name\":\"clock1130\",\"src\":\"1f566.png\"},{\"name\":\"heavy_multiplication_x\",\"src\":\"2716.png\"},{\"name\":\"heavy_plus_sign\",\"src\":\"2795.png\"},{\"name\":\"heavy_minus_sign\",\"src\":\"2796.png\"},{\"name\":\"heavy_division_sign\",\"src\":\"2797.png\"},{\"name\":\"spades\",\"src\":\"2660.png\"},{\"name\":\"hearts\",\"src\":\"2665.png\"},{\"name\":\"clubs\",\"src\":\"2663.png\"},{\"name\":\"diamonds\",\"src\":\"2666.png\"},{\"name\":\"white_flower\",\"src\":\"1f4ae.png\"},{\"name\":\"100\",\"src\":\"1f4af.png\"},{\"name\":\"heavy_check_mark\",\"src\":\"2714.png\"},{\"name\":\"ballot_box_with_check\",\"src\":\"2611.png\"},{\"name\":\"radio_button\",\"src\":\"1f518.png\"},{\"name\":\"link\",\"src\":\"1f517.png\"},{\"name\":\"curly_loop\",\"src\":\"27b0.png\"},null,{\"name\":\"part_alternation_mark\",\"src\":\"303d.png\"},{\"name\":\"trident\",\"src\":\"1f531.png\"},{\"name\":\"black_medium_square\",\"src\":\"25fc.png\"},{\"name\":\"white_medium_square\",\"src\":\"25fb.png\"},{\"name\":\"black_medium_small_square\",\"src\":\"25fe.png\"},{\"name\":\"white_medium_small_square\",\"src\":\"25fd.png\"},{\"name\":\"black_small_square\",\"src\":\"25aa.png\"},{\"name\":\"white_small_square\",\"src\":\"25ab.png\"},{\"name\":\"small_red_triangle\",\"src\":\"1f53a.png\"},{\"name\":\"black_square_button\",\"src\":\"1f532.png\"},{\"name\":\"white_square_button\",\"src\":\"1f533.png\"},{\"name\":\"black_circle\",\"src\":\"26ab.png\"},{\"name\":\"white_circle\",\"src\":\"26aa.png\"},{\"name\":\"red_circle\",\"src\":\"1f534.png\"},{\"name\":\"large_blue_circle\",\"src\":\"1f535.png\"},{\"name\":\"small_red_triangle_down\",\"src\":\"1f53b.png\"},{\"name\":\"white_large_square\",\"src\":\"2b1c.png\"},{\"name\":\"black_large_square\",\"src\":\"2b1b.png\"},{\"name\":\"large_orange_diamond\",\"src\":\"1f536.png\"},{\"name\":\"large_blue_diamond\",\"src\":\"1f537.png\"},{\"name\":\"small_orange_diamond\",\"src\":\"1f538.png\"},{\"name\":\"small_blue_diamond\",\"src\":\"1f539.png\"}]}]"; + private static final JSONArray jsonArray = new JSONArray(jsonStr); + private static final String emojiPicPath = "/res/plugins/emoji/emoji/"; + + public static String replace(String content) { + for (int i = 0; i < 5; i++) { + JSONObject json = jsonArray.getJSONObject(i); + JSONArray jsonArray = json.getJSONArray("items"); + for (int j = 0; j < jsonArray.length(); j++) { + try { + JSONObject jsona = jsonArray.getJSONObject(j); + if(content.indexOf(":"+jsona.get("name")+":") > -1){ + content = content.replace(":"+jsona.get("name")+":","

"); + } + } catch (Exception e) { + continue; + } + } + } + return content; + } + + + + /** + * 获取Emoji JSON数据 + * @return + */ + public static String emojiJson(){ + JSONObject json = new JSONObject(); + json.put("data",jsonArray); + json.put("path",emojiPicPath); + return json.toString(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/MemberUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/MemberUtil.java" new file mode 100755 index 0000000..e062dbf --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/MemberUtil.java" @@ -0,0 +1,33 @@ +package com.lxinet.jeesns.common.utils; + +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.model.member.Member; + +import javax.servlet.http.HttpServletRequest; + +/** + * Created by zchuanzhao on 16/9/29. + */ +public class MemberUtil { + public static Member getLoginMember(HttpServletRequest request){ + Member loginMember = (Member) request.getSession().getAttribute(Const.SESSION_MEMBER); + return loginMember; + } + + public static void setLoginMember(HttpServletRequest request,Member member){ + request.getSession().setAttribute(Const.SESSION_MEMBER,member); + } + + public static String judgeLoginJump(HttpServletRequest request,String redirectUrl){ + Member member = getLoginMember(request); + if(member == null){ + String redirect = "redirect:/member/login"; + if(StringUtils.isNotEmpty(redirectUrl)){ + redirect += "?redirectUrl="+request.getContextPath() + redirectUrl; + } + return redirect; + } + return null; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/PictureUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/PictureUtil.java" new file mode 100755 index 0000000..cba006b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/PictureUtil.java" @@ -0,0 +1,46 @@ +package com.lxinet.jeesns.common.utils; + +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.core.utils.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/7. + */ +public class PictureUtil { + public static void delete(HttpServletRequest request, List pictures){ + if (pictures != null){ + for (Picture picture : pictures){ + delete(request, picture); + } + } + + } + + public static void delete(HttpServletRequest request, Picture picture){ + String path = picture.getPath(); + String thumbnailPath = picture.getThumbnailPath(); + String smallPath = picture.getSmallPath(); + if(StringUtils.isNotEmpty(path)){ + File file = new File(request.getServletContext().getRealPath(path)); + if ((file.exists())){ + file.delete(); + } + } + if(StringUtils.isNotEmpty(thumbnailPath)){ + File file = new File(request.getServletContext().getRealPath(thumbnailPath)); + if ((file.exists())){ + file.delete(); + } + } + if(StringUtils.isNotEmpty(smallPath)){ + File file = new File(request.getServletContext().getRealPath(smallPath)); + if ((file.exists())){ + file.delete(); + } + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ScoreRuleConsts.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ScoreRuleConsts.java" new file mode 100755 index 0000000..c03e7e9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ScoreRuleConsts.java" @@ -0,0 +1,77 @@ +package com.lxinet.jeesns.common.utils; + +/** + * Created by zchuanzhao on 2017/3/29. + */ +public class ScoreRuleConsts { + + /** + * 注册初始化奖励 + */ + public static final Integer REG_INIT = 1; + + /** + * 邮箱认证 + */ + public static final Integer EMAIL_AUTHENTICATION = 2; + + /** + * 登录账号 + */ + public static final Integer LOGIN = 3; + + /** + * 文章投稿 + */ + public static final Integer ARTICLE_SUBMISSIONS = 4; + + /** + * 文章评论 + */ + public static final Integer ARTICLE_REVIEWS = 5; + + /** + * 文章收到喜欢 + */ + public static final Integer ARTICLE_RECEIVED_LIKE = 6; + + /** + * 发布微博 + */ + public static final Integer RELEASE_WEIBO = 7; + + /** + * 评论微博 + */ + public static final Integer COMMENT_WEIBO = 8; + + /** + * 微博收到点赞 + */ + public static final Integer WEIBO_RECEIVED_THUMBUP = 9; + + /** + * 申请群组 + */ + public static final Integer APPLY_GROUP = 10; + + /** + * 群组发帖 + */ + public static final Integer GROUP_POST = 11; + + /** + * 群组帖子评论 + */ + public static final Integer GROUP_TOPIC_COMMENTS = 12; + + /** + * 群组帖子收到喜欢 + */ + public static final Integer GROUP_TOPIC_RECEIVED_LIKE = 13; + + /** + * 签到 + */ + public static final Integer CHECKIN = 14; +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ValidUtill.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ValidUtill.java" new file mode 100755 index 0000000..091a41d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-common/src/main/java/com/lxinet/jeesns/common/utils/ValidUtill.java" @@ -0,0 +1,47 @@ +package com.lxinet.jeesns.common.utils; + +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotFountException; +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.member.Message; + +/** + * @author zchuanzhao@linewell.com + * 2018/8/2 + */ +public class ValidUtill { + + public static void checkLogin(Member member){ + if (null == member){ + throw new NotLoginException(); + } + } + + public static void checkParam(Boolean... boos){ + for (boolean boo :boos){ + if (!boo){ + throw new ParamException(); + } + } + } + + public static void checkIsNull(Object obj){ + if (null == obj){ + throw new ParamException(); + } + } + + public static void checkIsNull(Object obj, Messages messages){ + if (null == obj){ + throw new ParamException(messages); + } + } + public static void checkIsBlank(String val, Messages messages){ + if (StringUtils.isBlank(val)){ + throw new ParamException(messages); + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/pom.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/pom.xml" new file mode 100755 index 0000000..7867575 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/pom.xml" @@ -0,0 +1,203 @@ + + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-core + 1.3 + jar + jeesns-core + + + 4.2.6.RELEASE + 3.4.0 + + + + org.springframework + spring-core + ${spring.version} + + + org.springframework + spring-web + ${spring.version} + + + org.springframework + spring-oxm + ${spring.version} + + + org.springframework + spring-tx + ${spring.version} + + + org.springframework + spring-jdbc + ${spring.version} + + + org.springframework + spring-webmvc + ${spring.version} + + + org.springframework + spring-aop + ${spring.version} + + + org.springframework + spring-context-support + ${spring.version} + + + org.springframework + spring-aspects + ${spring.version} + + + org.mybatis + mybatis + ${mybatis.version} + + + org.mybatis + mybatis-spring + 1.3.0 + + + c3p0 + c3p0 + 0.9.1.2 + + + mysql + mysql-connector-java + 5.1.30 + + + log4j + log4j + 1.2.17 + + + commons-fileupload + commons-fileupload + 1.3.1 + + + commons-io + commons-io + 2.4 + + + commons-codec + commons-codec + 1.9 + + + commons-lang + commons-lang + 2.6 + + + org.freemarker + freemarker + 2.3.19 + + + commons-logging + commons-logging + 1.1.1 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + org.codehaus.jackson + jackson-core-asl + 1.9.13 + + + com.fasterxml.jackson.core + jackson-core + 2.5.1 + + + com.fasterxml.jackson.core + jackson-databind + 2.5.1 + + + org.apache.httpcomponents + httpclient + 4.5.1 + + + org.apache.httpcomponents + httpcore + 4.4.3 + + + org.apache.httpcomponents + httpmime + 4.5.1 + + + org.jsoup + jsoup + 1.9.2 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + org.json + json + 20140107 + + + org.hibernate + hibernate-validator + 5.2.4.Final + + + com.sun.mail + javax.mail + 1.5.0 + + + javax.servlet + javax.servlet-api + 3.0.1 + + + + + jeesns-core + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/After.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/After.java" new file mode 100755 index 0000000..b6ff72c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/After.java" @@ -0,0 +1,16 @@ +package com.lxinet.jeesns.core.annotation; + +import com.lxinet.jeesns.interceptor.JeesnsInterceptor; + +import java.lang.annotation.*; + +/** + * Created by zchuanzhao on 2016/11/26. + */ +@Inherited +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE,ElementType.METHOD}) +public @interface After { + Class value(); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Before.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Before.java" new file mode 100755 index 0000000..4c828ba --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Before.java" @@ -0,0 +1,16 @@ +package com.lxinet.jeesns.core.annotation; + +import com.lxinet.jeesns.interceptor.JeesnsInterceptor; + +import java.lang.annotation.*; + +/** + * Created by zchuanzhao on 2016/11/26. + */ +@Inherited +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE,ElementType.METHOD}) +public @interface Before { + Class value(); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Clear.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Clear.java" new file mode 100755 index 0000000..2f08d32 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/annotation/Clear.java" @@ -0,0 +1,14 @@ +package com.lxinet.jeesns.core.annotation; + +import java.lang.annotation.*; + +/** + * Created by zchuanzhao on 2016/11/26. + */ +@Inherited +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.TYPE,ElementType.METHOD}) +public @interface Clear { + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/AppTag.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/AppTag.java" new file mode 100755 index 0000000..182ad96 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/AppTag.java" @@ -0,0 +1,8 @@ +package com.lxinet.jeesns.core.consts; + +public class AppTag { + public static final int CMS = 1; + public static final int WEIBO = 2; + public static final int GROUP = 3; + public static final int PICTURE = 4; +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/FuncType.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/FuncType.java" new file mode 100755 index 0000000..665ff06 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/FuncType.java" @@ -0,0 +1,11 @@ +package com.lxinet.jeesns.core.consts; + +public class FuncType { + public static final int MEMBER = 1; + public static final int ARTICLE = 2; + public static final int WEIBO = 3; + public static final int GROUP = 4; + public static final int GROUP_TOPIC = 5; + public static final int PICTURE_ALBUM = 6; + public static final int PICTURE = 7; +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/MessageField.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/MessageField.java" new file mode 100755 index 0000000..365321a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/consts/MessageField.java" @@ -0,0 +1,56 @@ +package com.lxinet.jeesns.core.consts; + + +/** + * @author zchuanzhao + */ +public class MessageField { + + public static final String USERNAME = "username"; + public static final String NAME = "name"; + public static final String EMAIL = "email"; + public static final String PASSWORD = "password"; + public static final String LOGIN_NAME = "login_name"; + public static final String TOKEN = "token"; + public static final String ARTICLE = "article"; + public static final String GROUP = "group"; + public static final String TOPIC = "topic"; + public static final String COMMENT = "comment"; + public static final String WEIBO = "weibo"; + public static final String PICTURE = "picture"; + public static final String ADMIN = "admin"; + public static final String USER = "user"; + public static final String CATE = "cate"; + + + public static final String OPERATE_SUCCESS = "operate_success"; + public static final String OPERATE_ERROR = "operate_error"; + public static final String PARAM_ERROR = "param_error"; + public static final String NOT_EMPTY = "not_empty"; + public static final String LOGIN_INFO_WRONG = "login_info_wrong"; + public static final String UN_LOGIN = "un_login"; + public static final String ACCOUNT_IS_DISABLED = "account_is_disabled"; + public static final String EXISTS = "exists"; + public static final String USERNAME_LENGTH_ONLY_BE = "username_length_only_be"; + public static final String ADMIN_NOT_EXISTS = "admin_not_exists"; + public static final String NOT_EXISTS = "not_exists"; + public static final String USER_NOT_EXISTS = "user_not_exists"; + public static final String GOODS_CATEGORY_NOT_EXISTS = "goods_category_not_exists"; + public static final String GOODS_NOT_EXISTS = "goods_not_exists"; + public static final String EXISTS_LOWER_CATEGORY = "exists_lower_category"; + public static final String PARENT_CONNOT_BE_SELF = "parent_connot_be_self"; + public static final String PRICE_IS_ERROR = "price_is_error"; + public static final String STOCK_MUST_BE_INTEGER = "stock_must_be_integer"; + public static final String VIRTUALSELLNUM_MUST_BE_INTEGER = "virtualsellnum_must_be_integer"; + public static final String CATEGORY_MUST_BE_SELECT = "category_must_be_select"; + public static final String AD_NOT_EXISTS = "ad_not_exists"; + public static final String PARENT_CATE_NOT_EXISTS = "parent_cate_not_exists"; + public static final String ONLY_TOP_CATE_CAN_ADD = "only_top_cate_can_add"; + public static final String DELETE_SUB_CATE_FIRST = "delete_sub_cate_first"; + public static final String CATE_NOT_EXISTS = "cate_not_exists"; + public static final String LOGIN_CLOSED = "login_closed"; + public static final String CONTRIBUTION_CLOSED = "contribution_closed"; + public static final String CONTENT = "content"; + public static final String FRIIEND_LINK = "friiend_link"; + public static final String PICTURE_ALBUM = "picture_album"; +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/directive/BaseDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/directive/BaseDirective.java" new file mode 100755 index 0000000..d512b82 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/directive/BaseDirective.java" @@ -0,0 +1,25 @@ +package com.lxinet.jeesns.core.directive; + +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import freemarker.core.Environment; +import freemarker.template.TemplateDirectiveBody; +import freemarker.template.TemplateDirectiveModel; +import freemarker.template.TemplateException; +import freemarker.template.TemplateModel; +import java.io.IOException; +import java.util.Map; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +public abstract class BaseDirective implements TemplateDirectiveModel { + + @Override + public void execute(Environment environment, @SuppressWarnings("rawtypes") Map parameters, TemplateModel[] loopVars, + TemplateDirectiveBody templateDirectiveBody) throws TemplateException, IOException { + + execute(new DirectiveHandler(environment, parameters,loopVars, templateDirectiveBody)); + } + + public abstract void execute(DirectiveHandler handler) throws TemplateException, IOException; +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/dto/ResultModel.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/dto/ResultModel.java" new file mode 100755 index 0000000..f320c20 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/dto/ResultModel.java" @@ -0,0 +1,137 @@ +package com.lxinet.jeesns.core.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.model.Page; + +import java.io.Serializable; + +/** + * Created by zchuanzhao on 2016/10/16. + */ +@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL) +public class ResultModel implements Serializable{ + public static final Integer SUCCESS = 0; + public static final Integer ERROR = -1; + + /** + * -2参数错误,-1操作失败,0操作成功,1成功刷新当前页,2成功并跳转到url,3成功并刷新iframe的父界面 + */ + private int code; + + private String message; + + private String url; + + private T data; + + private Page page; + + public ResultModel() { + + } + + public ResultModel(int code) { + this.code = code; + if(code == -2){ + setMessage("参数错误"); + }else if(code == ERROR){ + setMessage(Messages.ERROR); + }else if(code == SUCCESS){ + setMessage(Messages.SUCCESS); + } + } + + + public ResultModel(T data) { + if (data instanceof Boolean){ + Boolean flag = (Boolean) data; + if (flag == true){ + setMessage(Messages.SUCCESS); + }else { + setMessage(Messages.ERROR); + } + }else { + this.code = SUCCESS; + this.data = data; + } + } + + public ResultModel(int code, Page page) { + this.code = code; + this.page = page; + } + + public ResultModel(int code, String message) { + this.code = code; + this.message = message; + } + + public ResultModel(int code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + public ResultModel(int code, String message, String url) { + this.code = code; + this.message = message; + this.url = url; + } + + public ResultModel(Messages message) { + this.code = message.getCode(); + this.message = message.getMessage(); + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public Page getPage() { + return page; + } + + public void setPage(Page page) { + this.page = page; + } + + + public void setMessage(Messages message) { + this.code = message.getCode(); + this.message = message.getMessage(); + } + + @Override + public String toString() { + return super.toString(); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/MessageType.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/MessageType.java" new file mode 100755 index 0000000..72a0565 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/MessageType.java" @@ -0,0 +1,60 @@ +package com.lxinet.jeesns.core.enums; + +public enum MessageType { + CMS_ARTICLE_REFER("在文章提到你了。",10001), + CMS_ARTICLE_LIKE("喜欢你的文章。",10003), + CMS_ARTICLE_DELETE("删除了你的文章。",10004), + + CMS_ARTICLR_REPLY("评论了你的文章。",11001), + CMS_ARTICLE_COMMENT_REFER("在文章评论提到你了。",11002), + + WEIBO_REFER("在微博提到了你。", 20001), + WEIBO_ZAN("赞了你的微博。", 20003), + WEIBO_DELETE("删除了你的微博。", 20004), + + WEIBO_REPLY("评论了你的微博。", 21001), + WEIBO_COMMENT_REFER("在微博评论提到你了。", 21002), + + WEIBO_REPLY_REPLY("回复了你的微博评论。", 22001), + + GROUP_TOPIC_REFER("在群组帖子提到你了。", 31001), + GROUP_TOPIC_LIKE("喜欢你的群组帖子。", 31003), + GROUP_TOPIC_TOP("置顶了你的群组帖子。", 31004), + GROUP_TOPIC_SUPER_TOP("超级置顶了你的群组帖子。", 31005), + GROUP_TOPIC_ESSENCE("将你的群组帖子设为精华。", 31006), + GROUP_TOPIC_DELETE("删除了你的群组帖子。", 31007), + + GROUP_TOPIC_REPLY("评论了你的群组帖子。", 32001), + GROUP_TOPIC_COMMENT_REFER("在群组帖子评论提到你了。", 32002), + + GROUP_TOPIC_REPLY_REPLY("回复了你的群组帖子评论。", 33001), + + PICTURE_REFER("在图片中提到你了。", 40001), + PICTURE_ZAN("赞了你的图片。", 40002), + PICTURE_REPLY("评论了你的图片。", 41001), + PICTURE_COMMENT_REFER("在图片评论提到你了。", 41002); + + private String content; + private int code; + + MessageType(String content, int code) { + this.content = content; + this.code = code; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/Messages.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/Messages.java" new file mode 100755 index 0000000..943c6a3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/enums/Messages.java" @@ -0,0 +1,92 @@ +package com.lxinet.jeesns.core.enums; + + +import com.lxinet.jeesns.core.consts.MessageField; +import com.lxinet.jeesns.core.utils.LocaleUtil; +import com.lxinet.jeesns.core.utils.StringUtils; + +import java.text.MessageFormat; + +/** + * @author zchuanzhao + */ +public enum Messages { + + //参数错误 + PARAM_ERROR(-1001, MessageField.PARAM_ERROR), + NOT_EMPTY(-1001, MessageField.NOT_EMPTY), + USERNAME_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.USERNAME)), + PASSWORD_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.PASSWORD)), + LOGIN_NAME_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.LOGIN_NAME)), + TOKEN_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.TOKEN)), + NAME_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.NAME)), + CATE_NOT_EMPTY(-1001, MessageField.NOT_EMPTY, Messages(MessageField.CATE)), + CATEGORY_MUST_BE_SELECT(-1001, MessageField.CATEGORY_MUST_BE_SELECT), + PRICE_IS_ERROR(-1001, MessageField.PRICE_IS_ERROR), + STOCK_MUST_BE_INTEGER(-1001, MessageField.STOCK_MUST_BE_INTEGER), + VIRTUALSELLNUM_MUST_BE_INTEGER(-1001, MessageField.VIRTUALSELLNUM_MUST_BE_INTEGER), + + //不存在 + NOT_EXISTS(-1007, MessageField.NOT_EXISTS), + ADMIN_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.ADMIN)), + USER_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.USER)), + WEIBO_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.WEIBO)), + COMMENT_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.COMMENT)), + ARTICLE_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.ARTICLE)), + GROUP_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.GROUP)), + TOPIC_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.TOPIC)), + PICTURE_NOT_EXISTS(-1002, MessageField.NOT_EXISTS, Messages(MessageField.PICTURE)), + AD_NOT_EXISTS(-1002, MessageField.AD_NOT_EXISTS), + PARENT_CATE_NOT_EXISTS(-1002, MessageField.PARENT_CATE_NOT_EXISTS), + + //已存在 + EXISTS_LOWER_CATEGORY(-1003, MessageField.EXISTS_LOWER_CATEGORY), + + //具体业务错误 + UN_LOGIN(-1002, MessageField.UN_LOGIN), + LOGIN_INFO_WRONG(-1003, MessageField.LOGIN_INFO_WRONG), + ACCOUNT_IS_DISABLED(-1004, MessageField.ACCOUNT_IS_DISABLED), + USERNAME_EXISTS(-1005, MessageField.EXISTS, Messages(MessageField.USERNAME)), + EMAIL_EXISTS(-1005, MessageField.EXISTS, Messages(MessageField.EMAIL)), + USERNAME_LENGTH_ONLY_BE(-1006, MessageField.USERNAME_LENGTH_ONLY_BE, 5, 32), + PARENT_CONNOT_BE_SELF(-1007, MessageField.PARENT_CONNOT_BE_SELF), + ONLY_TOP_CATE_CAN_ADD(-1007, MessageField.ONLY_TOP_CATE_CAN_ADD), + DELETE_SUB_CATE_FIRST(-1007, MessageField.DELETE_SUB_CATE_FIRST), + CATE_NOT_EXISTS(-1007, MessageField.CATE_NOT_EXISTS), + LOGIN_CLOSED(-1007, MessageField.LOGIN_CLOSED), + CONTRIBUTION_CLOSED(-1007, MessageField.CONTRIBUTION_CLOSED), + CONTENT_NOT_EMPTY(-1007, MessageField.NOT_EMPTY, Messages(MessageField.CONTENT)), + FRIIEND_LINK_NOT_EXISTS(-1007, MessageField.NOT_EXISTS, Messages(MessageField.FRIIEND_LINK)), + PICTURE_ALBUM_NOT_EXISTS(-1007, MessageField.NOT_EXISTS, Messages(MessageField.PICTURE_ALBUM)), + + + + + //其他未知错误 + ERROR(-1, MessageField.OPERATE_ERROR), + //成功 + SUCCESS(0,MessageField.OPERATE_SUCCESS); + + private int code; + private String message; + + private static String Messages(String msgKey, Object... args) { + return LocaleUtil.getMessageSource().getMessage(msgKey, args, LocaleUtil.getLocale()); + } + + Messages(int code, String msgKey, Object... args) { + this.code = code; + if (StringUtils.isNotEmpty(msgKey)) { + this.message = MessageFormat.format(LocaleUtil.getMessageSource().getMessage(msgKey, args, LocaleUtil.getLocale()), args); + } else { + this.message = msgKey; + } + } + public int getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/JeeException.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/JeeException.java" new file mode 100755 index 0000000..647bbc4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/JeeException.java" @@ -0,0 +1,29 @@ +package com.lxinet.jeesns.core.exception; + +import com.lxinet.jeesns.core.enums.Messages; + +/** + * @author: zchuanzhao + * @date: 2018/5/16 下午8:36 + */ +public class JeeException extends RuntimeException { + private Messages jeeMessage; + + + public JeeException(){ + super(); + jeeMessage = Messages.ERROR; + } + + public JeeException(String msg){ + super(msg); + } + + public JeeException(Messages lxiMessage){ + this.jeeMessage = lxiMessage; + } + + public Messages getJeeMessage() { + return jeeMessage; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotFountException.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotFountException.java" new file mode 100755 index 0000000..6b307b8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotFountException.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.core.exception; + +import com.lxinet.jeesns.core.enums.Messages; + +/** + * 找不到异常 + * Created by zchuanzhao on 2017/11/15. + */ +public class NotFountException extends JeeException { + + public NotFountException(Messages messages){ + super(messages); + } + + public NotFountException(String msg){ + super(msg + "不存在"); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotLoginException.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotLoginException.java" new file mode 100755 index 0000000..ce2bd13 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/NotLoginException.java" @@ -0,0 +1,14 @@ +package com.lxinet.jeesns.core.exception; + +import com.lxinet.jeesns.core.enums.Messages; + +/** + * 未登录异常 + * Created by zchuanzhao on 2017/11/15. + */ +public class NotLoginException extends JeeException { + + public NotLoginException(){ + super(Messages.UN_LOGIN); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/OpeErrorException.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/OpeErrorException.java" new file mode 100755 index 0000000..964a098 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/OpeErrorException.java" @@ -0,0 +1,22 @@ +package com.lxinet.jeesns.core.exception; + + +import com.lxinet.jeesns.core.enums.Messages; + +/** + * @author zchuanzhao + */ +public class OpeErrorException extends JeeException { + + public OpeErrorException(){ + super(Messages.ERROR); + } + + public OpeErrorException(Messages message){ + super(message); + } + + public OpeErrorException(String message){ + super(message); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/ParamException.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/ParamException.java" new file mode 100755 index 0000000..b4d1b54 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/exception/ParamException.java" @@ -0,0 +1,22 @@ +package com.lxinet.jeesns.core.exception; + +import com.lxinet.jeesns.core.enums.Messages; + +/** + * 参数异常 + * Created by zchuanzhao on 2017/5/17. + */ +public class ParamException extends JeeException { + + public ParamException(String msg){ + super(msg); + } + + public ParamException(Messages messages){ + super(messages); + } + + public ParamException(){ + super(Messages.PARAM_ERROR); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/filter/XssFilter.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/filter/XssFilter.java" new file mode 100755 index 0000000..346326d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/filter/XssFilter.java" @@ -0,0 +1,30 @@ +package com.lxinet.jeesns.core.filter; + +import com.lxinet.jeesns.core.utils.XssHttpServletRequestWrapper; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; + +/** + * XSS攻击过滤器 + * Created by zchuanzhao on 2017/3/23. + */ +public class XssFilter implements Filter { + private FilterConfig filterConfig = null; + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + this.filterConfig = filterConfig; + } + + @Override + public void destroy() { + this.filterConfig = null; + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response); + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/handler/DirectiveHandler.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/handler/DirectiveHandler.java" new file mode 100755 index 0000000..5ca7ee0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/handler/DirectiveHandler.java" @@ -0,0 +1,450 @@ +package com.lxinet.jeesns.core.handler; + +import freemarker.core.Environment; +import freemarker.template.*; +import org.apache.commons.lang.StringUtils; +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +public class DirectiveHandler { + public static final SimpleDateFormat FULL_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final int FULL_DATE_LENGTH = 19; + + public static final SimpleDateFormat SHORT_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); + public static final int SHORT_DATE_LENGTH = 10; + private Environment environment; + private Map parameters; + private TemplateModel[] loopVars; + private TemplateDirectiveBody templateDirectiveBody; + private Map map = new HashMap(); + + /** + * @param environment + * @param parameters + * @param templateDirectiveBody + */ + public DirectiveHandler(Environment environment, Map parameters, TemplateModel[] loopVars, + TemplateDirectiveBody templateDirectiveBody) { + this.environment = environment; + this.loopVars = loopVars; + this.parameters = parameters; + this.templateDirectiveBody = templateDirectiveBody; + } + + /** + * 渲染 + */ + public void render() throws IOException, TemplateException { + Map reduceMap = reduce(); + if (null != templateDirectiveBody) { + templateDirectiveBody.render(environment.getOut()); + } + reduce(reduceMap); + } + + /** + * 控制变量不为空时,导出所有变量 + * + * @param notEmptyObject + * @throws IOException + * @throws TemplateException + */ + public void renderIfNotNull(Object notEmptyObject) throws IOException, TemplateException { + if (null != notEmptyObject) { + render(); + } + } + + /** + * 打印变量 + * + * @param str + * @throws IOException + * @throws TemplateException + */ + public void print(String str) throws IOException, TemplateException { + environment.getOut().append(str); + } + + /** + * @param key + * @param value + * @return + */ + public DirectiveHandler put(String key, Object value) { + map.put(key, value); + return this; + } + + /** + * @return + */ + private Map reduce() throws TemplateModelException { + Map reduceMap = new HashMap(); + for (String key : map.keySet()) { + TemplateModel value = environment.getVariable(key); + if (null != value) + reduceMap.put(key, environment.getVariable(key)); + environment.setVariable(key, environment.getObjectWrapper().wrap(map.get(key))); + } + return reduceMap; + } + + /** + * @param map + */ + private void reduce(Map map) throws TemplateModelException { + for (String key : map.keySet()) { + environment.setVariable(key, map.get(key)); + } + } + + /** + * @param name + * @return + * @throws TemplateModelException + */ + public TemplateHashModel getMap(String name) throws TemplateModelException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateHashModelEx) { + return (TemplateHashModelEx) model; + } else if (model instanceof TemplateHashModel) { + return (TemplateHashModel) model; + } else { + return null; + } + } + + /** + * @param name + * @param defaultValue + * @return + * @throws TemplateException + */ + public String getString(String name, String defaultValue) throws TemplateException { + String result = getString(name); + if (null == result) + return defaultValue; + else + return result; + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public String getString(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateScalarModel) { + return ((TemplateScalarModel) model).getAsString(); + } else if ((model instanceof TemplateNumberModel)) { + return ((TemplateNumberModel) model).getAsNumber().toString(); + } else { + return null; + } + } + + /** + * @param name + * @param defaultValue + * @return + * @throws TemplateException + */ + public Integer getInteger(String name, int defaultValue) throws TemplateException { + Integer result = getInteger(name); + if (null == result) + return defaultValue; + else + return result; + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Integer getInteger(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateNumberModel) { + return ((TemplateNumberModel) model).getAsNumber().intValue(); + } else if (model instanceof TemplateScalarModel) { + String s = ((TemplateScalarModel) model).getAsString(); + if (StringUtils.isBlank(s)) { + return null; + } + try { + return Integer.parseInt(s); + } catch (NumberFormatException e) { + return null; + } + } else { + return null; + } + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Short getShort(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateNumberModel) { + return ((TemplateNumberModel) model).getAsNumber().shortValue(); + } else if (model instanceof TemplateScalarModel) { + String s = ((TemplateScalarModel) model).getAsString(); + if (StringUtils.isBlank(s)) { + return null; + } + try { + return Short.parseShort(s); + } catch (NumberFormatException e) { + return null; + } + } else { + return null; + } + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Long getLong(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateNumberModel) { + return ((TemplateNumberModel) model).getAsNumber().longValue(); + } else if (model instanceof TemplateScalarModel) { + String s = ((TemplateScalarModel) model).getAsString(); + if (StringUtils.isBlank(s)) { + return null; + } + try { + return Long.parseLong(s); + } catch (NumberFormatException e) { + return null; + } + } else { + return null; + } + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Double getDouble(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateNumberModel) { + return ((TemplateNumberModel) model).getAsNumber().doubleValue(); + } else if (model instanceof TemplateScalarModel) { + String s = ((TemplateScalarModel) model).getAsString(); + if (StringUtils.isBlank(s)) { + return null; + } + try { + return Double.parseDouble(s); + } catch (NumberFormatException e) { + return null; + } + } else { + return null; + } + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Integer[] getIntegerArray(String name) throws TemplateException { + String[] arr = getStringArray(name); + if (null != arr) { + Integer[] ids = new Integer[arr.length]; + int i = 0; + try { + for (String s : arr) { + ids[i++] = Integer.valueOf(s); + } + return ids; + } catch (NumberFormatException e) { + return null; + } + } else + return null; + + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Long[] getLongArray(String name) throws TemplateException { + String[] arr = getStringArray(name); + if (null != arr) { + Long[] ids = new Long[arr.length]; + int i = 0; + try { + for (String s : arr) { + ids[i++] = Long.valueOf(s); + } + return ids; + } catch (NumberFormatException e) { + return null; + } + } else + return null; + + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public String[] getStringArray(String name) throws TemplateException { + String str = getString(name); + if (StringUtils.isBlank(str)) { + return null; + } + return StringUtils.split(str, ','); + } + + /** + * @param name + * @param defaultValue + * @return + * @throws TemplateException + */ + public Boolean getBoolean(String name, Boolean defaultValue) throws TemplateException { + Boolean result = getBoolean(name); + if (null == result) + return defaultValue; + else + return result; + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Boolean getBoolean(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateBooleanModel) { + return ((TemplateBooleanModel) model).getAsBoolean(); + } else if (model instanceof TemplateNumberModel) { + return !(0 == ((TemplateNumberModel) model).getAsNumber().intValue()); + } else if (model instanceof TemplateScalarModel) { + String s = ((TemplateScalarModel) model).getAsString(); + if (StringUtils.isNotBlank(s)) { + return !("0".equals(s) || "false".equalsIgnoreCase(s)); + } else { + return null; + } + } else { + return null; + } + } + + /** + * @param name + * + * @return + * @throws TemplateException + */ + public Date getDate(String name) throws TemplateException { + TemplateModel model = parameters.get(name); + if (null == model) { + return null; + } + if (model instanceof TemplateDateModel) { + return ((TemplateDateModel) model).getAsDate(); + } else if (model instanceof TemplateScalarModel) { + String temp = StringUtils.trimToEmpty(((TemplateScalarModel) model).getAsString()); + try { + if (FULL_DATE_LENGTH == temp.length()) { + return FULL_DATE_FORMAT.parse(temp); + } else if (SHORT_DATE_LENGTH == temp.length()) { + return SHORT_DATE_FORMAT.parse(temp); + } else { + return null; + } + } catch (ParseException e) { + return null; + } + } else { + return null; + } + } + + /** + * @return the parameters + */ + public Map getParameters() { + return parameters; + } + + /** + * @return the environment + */ + public Environment getEnvironment() { + return environment; + } + + /** + * @return the templateDirectiveBody + */ + public TemplateDirectiveBody getTemplateDirectiveBody() { + return templateDirectiveBody; + } + + public TemplateModel[] getLoopVars() { + return loopVars; + } + + public void setLoopVars(TemplateModel[] loopVars) { + this.loopVars = loopVars; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/model/Page.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/model/Page.java" new file mode 100755 index 0000000..f66ce6d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/model/Page.java" @@ -0,0 +1,130 @@ +package com.lxinet.jeesns.core.model; + +import javax.servlet.http.HttpServletRequest; +import java.io.Serializable; +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/28. + */ +public class Page implements Serializable { + + private List list; + + //当前第几页 + private int pageNo = 1; + + //每页数量 + private int pageSize = 20; + + //总页数 + private int totalPage; + + //数据总条数 + private int totalCount; + + //是否为第一页 + private boolean isFirstPage = false; + + //是否为最后一页 + private boolean isLastPage = false; + + private HttpServletRequest request; + + public Page(int pageNo, int pageSize) { + this.setPageNo(pageNo); + this.setPageSize(pageSize); + } + + public Page(List list, int pageNo, int pageSize, int totalCount) { + this.setList(list); + this.setPageNo(pageNo); + this.setPageSize(pageSize); + this.setTotalCount(totalCount); + } + + public Page(HttpServletRequest request){ + this.request = request; + String no = request.getParameter("pageNo"); + try { + this.setPageNo(Integer.parseInt(no)); + if(this.getPageNo() < 1){ + this.setPageNo(1); + } + }catch (Exception e){ + this.setPageNo(1); + } + String size = request.getParameter("pageSize"); + try { + this.setPageSize(Integer.parseInt(size)); + }catch (Exception e){ + this.setPageSize(20); + } + } + + public int getPageNo() { + return pageNo; + } + + public void setPageNo(int pageNo) { + if(pageNo < 1){ + pageNo = 1; + } + if(pageNo == 1){ + isFirstPage = true; + }else { + isFirstPage = false; + } + this.pageNo = pageNo; + } + + public int getPageSize() { + return pageSize; + } + + public void setPageSize(int pageSize) { + this.pageSize = pageSize; + } + + public int getTotalPage() { + return totalPage; + } + + public void setTotalPage() { + this.totalPage = (this.totalCount - 1) / this.pageSize + 1; + if(this.getPageNo() == this.getTotalPage()){ + isLastPage = true; + }else { + isLastPage = false; + } + } + + public int getTotalCount() { + return totalCount; + } + + public void setTotalCount(int totalCount) { + this.totalCount = totalCount; + this.setTotalPage(); + } + + public boolean isFirstPage() { + return pageNo == 1; + } + + public boolean isLastPage() { + return pageNo == totalPage; + } + + public int getStartRow() { + return (this.pageNo - 1) * pageSize; + } + + public List getList() { + return list; + } + + public void setList(List list) { + this.list = list; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/AtUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/AtUtil.java" new file mode 100755 index 0000000..e9687ed --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/AtUtil.java" @@ -0,0 +1,28 @@ +package com.lxinet.jeesns.core.utils; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class AtUtil { + + public static List getAtNameList(String content){ + String regex = "@.*? "; + Pattern pattern = Pattern.compile(regex); + Matcher m = pattern.matcher(content); + List list = new ArrayList<>(); + while(m.find()) { + String name = m.group(); + name = name.substring(1,name.length() - 1); + if (!list.contains(name)){ + list.add(name); + } + } + return list; + } + + public static String replaceAt(String content,String name,int id){ + return content.replaceAll("@" + name + " ","@" + name + " "); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Const.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Const.java" new file mode 100755 index 0000000..f85e8d3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Const.java" @@ -0,0 +1,63 @@ +package com.lxinet.jeesns.core.utils; + +public class Const { + + public static final String SYSTEM_NAME = "JEESNS"; + public static final String SYSTEM_VERSION = "1.3"; + public static final String SYSTEM_UPDATE_TIME = "2018-08-03"; + public static final String LAST_SYSTEM_VERSION = "1.3"; + public static final String LAST_SYSTEM_UPDATE_TIME = "2018-08-03"; + + /** + * 项目路径 + */ + public static String PROJECT_PATH; + + /** + * 文件上传路径 + */ + public static final String UPLOAD_PATH = "/upload"; + + /** + * SESSION中会员的key + */ + public static final String SESSION_MEMBER = "loginMember"; + /** + * SESSION中管理员的key + */ + public static final String SESSION_ADMIN = "LOGIN_ADMIN"; + + /** + * 后台错误页面的ftl路径 + */ + public static final String MANAGE_ERROR_FTL_PATH = "/manage/common/error"; + + /** + * 前台错误页面的ftl路径 + */ + public static final String INDEX_ERROR_FTL_PATH = "/common/error"; + + /** + * 默认图片路径 + */ + public static final String DEFAULT_IMG_URL = "/res/common/images/nopic.png"; + + /** + * 默认头像 + */ + public static final String DEFAULT_AVATAR = "/res/common/images/default-avatar.png"; + + /** + * 默认相册封面 + */ + public static final String DEFAULT_PICTURE_COVER = "/res/common/images/empty_album.png"; + /** + * 群组路径 + */ + public static String GROUP_PATH = "/group/"; + /** + * 微博路径 + */ + public static String WEIBO_PATH = "/weibo/"; + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/DateFormatUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/DateFormatUtil.java" new file mode 100755 index 0000000..ce4a478 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/DateFormatUtil.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.core.utils; + + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class DateFormatUtil { + private static final String DATETIME_SDF = "yyyy-MM-dd HH:mm:ss"; + + public static Date formatDateTime(String datetimeStr){ + SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_SDF); + try { + Date date = sdf.parse(datetimeStr); + return date; + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ErrorUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ErrorUtil.java" new file mode 100755 index 0000000..6a3dca3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ErrorUtil.java" @@ -0,0 +1,34 @@ +package com.lxinet.jeesns.core.utils; + +import org.springframework.ui.Model; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by zchuanzhao on 2016/12/26. + */ +public class ErrorUtil { + private static Map errors = new HashMap<>(); + static { + errors.put(-1000,"系统异常"); + errors.put(-1001,"没有权限"); + errors.put(-1002,"群组不存在"); + errors.put(-1003,"先关注群组才能发帖"); + errors.put(-1004,"帖子不存在"); + errors.put(-1005,"会员不存在"); + errors.put(-1006,"群组已关闭发帖功能"); + errors.put(-1007,"微博不存在"); + errors.put(-1008,"请先登录"); + errors.put(-1009,"文章不存在"); + errors.put(-1010,"相册不存在"); + errors.put(-1011,"图片不存在"); + errors.put(-1012,"无权查看此相册"); + errors.put(-1013,"帖子分类不存在"); + } + + public static String error(Model model, Integer errorcode, String ftlPath){ + model.addAttribute("msg",errors.get(errorcode)); + return ftlPath; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/HtmlUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/HtmlUtil.java" new file mode 100755 index 0000000..4b20b8a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/HtmlUtil.java" @@ -0,0 +1,45 @@ +package com.lxinet.jeesns.core.utils; + + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by zchuanzhao on 2016/11/26. + */ +public class HtmlUtil { + private static final String REGEX_SCRIPT = "]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式 + private static final String REGEX_STYLE = "]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式 + private static final String REGEX_HTML = "<[^>]+>"; // 定义HTML标签的正则表达式 + private static final String REGEX_SPACE = "\\s*|\t|\r|\n";// 定义空格回车换行符 + + private HtmlUtil(){ + + } + + /** + * @param htmlStr + * @return 删除Html标签 + */ + public static String delHTMLTag(String htmlStr) { + if(StringUtils.isNotEmpty(htmlStr)){ + Pattern pScript = Pattern.compile(REGEX_SCRIPT, Pattern.CASE_INSENSITIVE); + Matcher mScript = pScript.matcher(htmlStr); + htmlStr = mScript.replaceAll(""); // 过滤script标签 + + Pattern pStyle = Pattern.compile(REGEX_STYLE, Pattern.CASE_INSENSITIVE); + Matcher mStyle = pStyle.matcher(htmlStr); + htmlStr = mStyle.replaceAll(""); // 过滤style标签 + + Pattern pHtml = Pattern.compile(REGEX_HTML, Pattern.CASE_INSENSITIVE); + Matcher mHtml = pHtml.matcher(htmlStr); + htmlStr = mHtml.replaceAll(""); // 过滤html标签 + + Pattern pSpace = Pattern.compile(REGEX_SPACE, Pattern.CASE_INSENSITIVE); + Matcher mSpace = pSpace.matcher(htmlStr); + htmlStr = mSpace.replaceAll(""); // 过滤空格回车标签 + return htmlStr.trim(); + } + return htmlStr; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ImageUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ImageUtil.java" new file mode 100755 index 0000000..b1ed8d8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/ImageUtil.java" @@ -0,0 +1,150 @@ +package com.lxinet.jeesns.core.utils; + +import javax.imageio.ImageIO; +import javax.imageio.ImageReadParam; +import javax.imageio.ImageReader; +import javax.imageio.stream.ImageInputStream; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Arrays; +import java.util.Iterator; + +/** + * Created by zchuanzhao on 2017/3/7. + */ +public class ImageUtil { + public static final String THUMB_DEFAULT_PREVFIX = "thumb_"; + public static final String SMALL_DEFAULT_PREVFIX = "small_"; + private static final int DEFAULT_WIDTH = 260; + private static final int DEFAULT_HEIGHT = 160; + private static final int THUMB_DEFAULT_WIDTH = 160; + private static final int THUMB_DEFAULT_HEIGHT = 160; + private File targetFile; + + public String dealImage(File imgFile){ + //先缩小图片 + thumbnailImage(imgFile); + //再裁剪图片 + return cutImage(targetFile); + } + + /** + * 根据图片路径生成缩略图 + * @param imgFile 原图片 + * @param prevfix 生成缩略图的前缀 + */ + private String thumbnailImage(File imgFile, String prevfix) { + String thumbPath = ""; + String fileName = ""; + int w; + int h; + if (imgFile.exists()) { + try { + // ImageIO 支持的图片类型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif] + String types = Arrays.toString(ImageIO.getReaderFormatNames()); + String suffix = null; + // 获取图片后缀 + if (imgFile.getName().indexOf(".") > -1) { + suffix = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1); + } + // 类型和图片后缀全部小写,然后判断后缀是否合法 + if (suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0) { + return thumbPath; + } + Image img = ImageIO.read(imgFile); + int width = img.getWidth(null); + int height = img.getHeight(null); + if (width > height){ + h = DEFAULT_HEIGHT; + w = (int) ((width * h * 1.0) / (height * 1.0)); + }else { + w = DEFAULT_WIDTH; + h = (int) ((height * w * 1.0) / (width * 1.0)); + } + BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); + Graphics g = bi.getGraphics(); + g.drawImage(img, 0, 0, w, h, Color.LIGHT_GRAY, null); + g.dispose(); + fileName = prevfix + imgFile.getName(); + String p = imgFile.getPath(); + // 将图片保存在原目录并加上前缀 + thumbPath = p.substring(0, p.lastIndexOf(File.separator)) + File.separator + fileName; + targetFile = new File(thumbPath); + ImageIO.write(bi, suffix, targetFile); + } catch (Exception e) { + e.printStackTrace(); + } + } + return fileName; + } + + private String thumbnailImage(File imgFile) { + return thumbnailImage(imgFile, SMALL_DEFAULT_PREVFIX); + } + + + /** + * 裁剪图片 + * @param imgFile + * @return + */ + private String cutImage(File imgFile) { + String fileName = ""; + String thumbPath = ""; + int w; + int h; + int x; + int y; + try { + // ImageIO 支持的图片类型 : [BMP, bmp, jpg, JPG, wbmp, jpeg, png, PNG, JPEG, WBMP, GIF, gif] + String types = Arrays.toString(ImageIO.getReaderFormatNames()); + String suffix = null; + // 获取图片后缀 + if (imgFile.getName().indexOf(".") > -1) { + suffix = imgFile.getName().substring(imgFile.getName().lastIndexOf(".") + 1); + } + // 类型和图片后缀全部小写,然后判断后缀是否合法 + if (suffix == null || types.toLowerCase().indexOf(suffix.toLowerCase()) < 0) { + return thumbPath; + } + Image img = ImageIO.read(imgFile); + int width = img.getWidth(null); + int height = img.getHeight(null); + if (width > THUMB_DEFAULT_WIDTH){ + x = (width - THUMB_DEFAULT_WIDTH) / 2; + w = THUMB_DEFAULT_WIDTH + x; + }else { + w = width; + x = 0; + } + if (height > THUMB_DEFAULT_HEIGHT){ + y = (height - THUMB_DEFAULT_HEIGHT) / 2; + h = THUMB_DEFAULT_HEIGHT + y; + }else { + h = height; + y = 0; + } + BufferedImage bi = new BufferedImage(THUMB_DEFAULT_WIDTH, THUMB_DEFAULT_HEIGHT, BufferedImage.TYPE_INT_RGB); + Graphics g = bi.getGraphics(); + g.drawImage(img, 0, 0, w, h, x, y, x + w,y + h, null); + g.dispose(); + // 保存新图片 + String name = imgFile.getName(); + name = name.replaceAll(SMALL_DEFAULT_PREVFIX,""); + fileName = THUMB_DEFAULT_PREVFIX + name; + String p = imgFile.getPath(); + // 将图片保存在原目录并加上前缀 + thumbPath = p.substring(0, p.lastIndexOf(File.separator)) + File.separator + fileName; + targetFile = new File(thumbPath); + ImageIO.write(bi, suffix, targetFile); + } catch (Exception e){ + e.printStackTrace(); + } finally { + + } + return fileName; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/IpUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/IpUtil.java" new file mode 100755 index 0000000..831b9f5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/IpUtil.java" @@ -0,0 +1,42 @@ +package com.lxinet.jeesns.core.utils; + + +import org.springframework.util.StringUtils; + +import javax.servlet.http.HttpServletRequest; + + +/** + * Created by zchuanzhao on 2016/11/26. + */ +public class IpUtil { + /** + * 获取访问者IP + * + * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。 + * + * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), + * 如果还不存在则调用Request .getRemoteAddr()。 + * + * @param request + * @return + */ + public static String getIpAddress(HttpServletRequest request){ + String ip = request.getHeader("X-Real-IP"); + if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) { + return ip; + } + ip = request.getHeader("X-Forwarded-For"); + if (!StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip)) { + // 多次反向代理后会有多个IP值,第一个为真实IP。 + int index = ip.indexOf(','); + if (index != -1) { + return ip.substring(0, index); + } else { + return ip; + } + } else { + return request.getRemoteAddr(); + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/JeesnsConfig.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/JeesnsConfig.java" new file mode 100755 index 0000000..e107c05 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/JeesnsConfig.java" @@ -0,0 +1,53 @@ +package com.lxinet.jeesns.core.utils; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +/** + * Created by zchuanzhao on 16/9/27. + */ +@Component("jeesnsConfig") +public class JeesnsConfig { + @Value("${managePath}") + private String managePath; + @Value("${groupPath}") + private String groupPath; + @Value("${weiboPath}") + private String weiboPath; + @Value("${manageTemplate}") + private String manageTemplate; + @Value("${memberTemplate}") + private String memberTemplate; + @Value("${frontTemplate}") + private String frontTemplate; + @Value("${mobileTemplate}") + private String mobileTemplate; + + public String getManagePath() { + return managePath; + } + + public String getGroupPath() { + return groupPath; + } + + public String getWeiboPath() { + return weiboPath; + } + + public String getManageTemplate() { + return manageTemplate; + } + + public String getMemberTemplate() { + return memberTemplate; + } + + public String getFrontTemplate() { + return frontTemplate; + } + + public String getMobileTemplate() { + return mobileTemplate; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/LocaleUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/LocaleUtil.java" new file mode 100755 index 0000000..2859d69 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/LocaleUtil.java" @@ -0,0 +1,29 @@ +package com.lxinet.jeesns.core.utils; + +import org.springframework.context.MessageSource; +import java.util.Locale; + +/** + * @author zchuanzhao + */ +public class LocaleUtil { + private static final ThreadLocal tlLocale = new ThreadLocal(){ + @Override + protected Locale initialValue() { + return Locale.SIMPLIFIED_CHINESE; + } + }; + private static MessageSource messageSource; + + public static Locale getLocale() { + return tlLocale.get(); + } + + public static void setMessageSource(MessageSource messageSource){ + LocaleUtil.messageSource = messageSource; + } + + public static MessageSource getMessageSource() { + return messageSource; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Md5Util.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Md5Util.java" new file mode 100755 index 0000000..0d3b75a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/Md5Util.java" @@ -0,0 +1,46 @@ +package com.lxinet.jeesns.core.utils; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +/** + * MD5算法加密 + * Created by zchuanzhao on 2016/11/26. + */ +public class Md5Util { + + // 全局数组 + private static final String[] strDigits = { "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; + + // 返回形式为数字跟字符 + private static String byteToArrayString(byte bByte) { + int iRet = bByte; + if (iRet < 0) { + iRet += 256; + } + int iD1 = iRet / 16; + int iD2 = iRet % 16; + return strDigits[iD1] + strDigits[iD2]; + } + + // 转换字节数组16进制字串 + private static String byteToString(byte[] bByte) { + StringBuffer sBuffer = new StringBuffer(); + for (int i = 0; i < bByte.length; i++) { + sBuffer.append(byteToArrayString(bByte[i])); + } + return sBuffer.toString(); + } + + public static String getMD5Code(String strObj) { + try { + MessageDigest md = MessageDigest.getInstance("MD5"); + // md.digest() 该函数返回为存放哈希结果的byte数组 + return byteToString(md.digest(strObj.getBytes())); + } catch (NoSuchAlgorithmException ex) { + ex.printStackTrace(); + return strObj; + } + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RandomCodeUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RandomCodeUtil.java" new file mode 100755 index 0000000..8abd4c8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RandomCodeUtil.java" @@ -0,0 +1,25 @@ +package com.lxinet.jeesns.core.utils; + + +import java.util.UUID; + +/** + * Created by zchuanzhao on 2017/1/20. + */ +public class RandomCodeUtil { + + /** + * 生成6个随机数 + * @return + */ + public static String randomCode6(){ + int code = (int)((Math.random()*9+1)*100000); + return String.valueOf(code); + } + + public static String uuid(){ + String uuid = UUID.randomUUID().toString(); + uuid = uuid.replaceAll("-",""); + return uuid; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RedirectUrlUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RedirectUrlUtil.java" new file mode 100755 index 0000000..e2ba374 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/RedirectUrlUtil.java" @@ -0,0 +1,33 @@ +package com.lxinet.jeesns.core.utils; + +/** + * Created by zchuanzhao on 2017/3/3. + */ +public class RedirectUrlUtil { + + /** + * 文章投稿页面 + */ + public static final String ARTICLE_ADD = "/article/add"; + /** + * 编辑文章页面 + */ + public static final String ARTICLE_EDIT = "/article/edit"; + /** + * 申请群组页面 + */ + public static final String GROUP_APPLY = "apply"; + /** + * 群组信息修改页面 + */ + public static final String GROUP_EDIT = "edit"; + /** + * 群组发帖页面 + */ + public static final String GROUP_POST = "post"; + + /** + * 群组帖子修改页面 + */ + public static final String GROUP_TOPIC_EDIT = "topicEdit"; +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/SpringContextHolder.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/SpringContextHolder.java" new file mode 100755 index 0000000..5204ad1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/SpringContextHolder.java" @@ -0,0 +1,59 @@ +package com.lxinet.jeesns.core.utils; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; + +/** + * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext. + * Created by zchuanzhao on 2016/9/26. + */ +public class SpringContextHolder implements ApplicationContextAware { + private static ApplicationContext applicationContext; + + /** + * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量. + */ + public void setApplicationContext(ApplicationContext applicationContext) { + SpringContextHolder.applicationContext = applicationContext; // NOSONAR + } + + /** + * 取得存储在静态变量中的ApplicationContext. + */ + public static ApplicationContext getApplicationContext() { + checkApplicationContext(); + return applicationContext; + } + + /** + * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) { + checkApplicationContext(); + return (T) applicationContext.getBean(name); + } + + /** + * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + @SuppressWarnings("unchecked") + public static T getBean(Class clazz) { + checkApplicationContext(); + return (T) applicationContext.getBeansOfType(clazz); + } + + /** + * 清除applicationContext静态变量. + */ + public static void cleanApplicationContext() { + applicationContext = null; + } + + private static void checkApplicationContext() { + if (applicationContext == null) { + throw new IllegalStateException( + "applicationContext未注入,请在applicationContext.xml中定义SpringContextHolder"); + } + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/StringUtils.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/StringUtils.java" new file mode 100755 index 0000000..c67f64a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/StringUtils.java" @@ -0,0 +1,125 @@ +package com.lxinet.jeesns.core.utils; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by zchuanzhao on 2016/10/16. + */ +public class StringUtils { + + public static boolean isEmpty(String str){ + if(str == null || "".equals(str)){ + return true; + } + return false; + } + + public static boolean isNotEmpty(String str){ + if(str != null && !"".equals(str)){ + return true; + } + return false; + } + + public static boolean isBlank(String str){ + if(str == null || "".equals(str.trim())){ + return true; + } + return false; + } + + public static boolean isNotBlank(String str){ + if(str != null && !"".equals(str.trim())){ + return true; + } + return false; + } + + /** + * 判断是否是数字 + * @param str + * @return + */ + public static boolean isNumber(String str){ + String regex = "^[0-9]+\\.{0,1}[0-9]{0,2}$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 判断是否是整数 + * @param str + * @return + */ + public static boolean isInteger(String str){ + String regex = "^[0-9]*$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 至少num个字符 + * @param str + * @param num + * @return + */ + public static boolean atLeast(String str,int num){ + String regex = "^\\d{"+num+",}$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 是否是邮箱 + * @param str + * @return + */ + public static boolean isEmail(String str){ + String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 是否是字母或数字 + * @param str + * @return + */ + public static boolean isLetterOrDigit(String str){ + String regex = "^[A-Za-z0-9]+$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 是否是字母 + * @param str + * @return + */ + public static boolean isLetter(String str){ + String regex = "^[A-Za-z]+$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + /** + * 判断昵称是否符合,只能中文、字母、数字、下划线(_)、短横线(-) + * @param str + * @return + */ + public static boolean checkNickname(String str){ + String regex = "^[a-zA-Z0-9_\\-\\u4e00-\\u9fa5]+$"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(str); + return matcher.matches(); + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/TokenUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/TokenUtil.java" new file mode 100755 index 0000000..a048886 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/TokenUtil.java" @@ -0,0 +1,13 @@ +package com.lxinet.jeesns.core.utils; + +import java.util.UUID; + +/** + * Created by zchuanzhao on 2017/7/15. + */ +public class TokenUtil { + + public static String getToken(){ + return UUID.randomUUID().toString().replace("-",""); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/WeiboTopicUtil.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/WeiboTopicUtil.java" new file mode 100755 index 0000000..7cb6241 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/WeiboTopicUtil.java" @@ -0,0 +1,36 @@ +package com.lxinet.jeesns.core.utils; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author zchuanzhao@linewell.com + * 2018/11/14 + */ +public class WeiboTopicUtil { + + public static String getTopicName(String content){ + String regex = "#(\\S+)#"; + Pattern pattern = Pattern.compile(regex); + Matcher m = pattern.matcher(content); + //只找第一个话题 + if(m.find()){ + return m.group(1); + } + return null; + } + + public static String formatTopic(String content){ + try { + String topicName = getTopicName(content); + if (StringUtils.isNotBlank(topicName)){ + return content.replace("#" + topicName + "#", "#" + topicName + "#"); + } + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return content; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/XssHttpServletRequestWrapper.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/XssHttpServletRequestWrapper.java" new file mode 100755 index 0000000..241aa9b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-core/src/main/java/com/lxinet/jeesns/core/utils/XssHttpServletRequestWrapper.java" @@ -0,0 +1,73 @@ +package com.lxinet.jeesns.core.utils; + +import org.springframework.web.util.HtmlUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; + +/** + * XSS攻击处理 + * Created by zchuanzhao on 2017/3/23. + */ +public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { + + public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) { + super(servletRequest); + } + + @Override + public String[] getParameterValues(String parameter) { + String[] values = super.getParameterValues(parameter); + if (values==null) { + return null; + } + int count = values.length; + String[] encodedValues = new String[count]; + for (int i = 0; i < count; i++) { + encodedValues[i] = cleanXSS(values[i]); + } + return encodedValues; + } + + @Override + public String getParameter(String parameter) { + String value = super.getParameter(parameter); + if (value == null) { + return null; + } + return cleanXSS(value); + } + @Override + public String getHeader(String name) { + String value = super.getHeader(name); + if (value == null) { + return null; + } + return cleanXSS(value); + } + private String cleanXSS(String value) { + //first checkpoint + //(?i)忽略大小写 + value = value.replaceAll("(?i)", "</style>"); + value = value.replaceAll("(?i)", "</script>"); + value = value.replaceAll("(?i) + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-dao + 1.3 + jeesns-dao + + + + com.lxinet + jeesns-core + 1.3 + + + com.lxinet + jeesns-model + 1.3 + + + + + jeesns-common + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCateDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCateDao.java" new file mode 100755 index 0000000..95c3ebe --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCateDao.java" @@ -0,0 +1,28 @@ +package com.lxinet.jeesns.dao.cms; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.cms.ArticleCate; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章栏目DAO接口 + * Created by zchuanzhao on 2016/11/26. + */ +public interface IArticleCateDao extends IBaseDao { + + /** + * 获取栏目 + * @return + */ + List list(); + + /** + * 通过父类ID获取子类列表 + * @param fid + * @return + */ + List findListByFid(@Param("fid") int fid); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCommentDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCommentDao.java" new file mode 100755 index 0000000..54a57b5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleCommentDao.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.dao.cms; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.cms.ArticleComment; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * 文章评论DAO接口 + * Created by zchuanzhao on 2016/11/26. + */ +public interface IArticleCommentDao extends IBaseDao { + + List listByPage(@Param("page") Page page, @Param("articleId") Integer articleId, @Param("key") String key); + + int deleteByArticle(@Param("articleId") Integer articleId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleDao.java" new file mode 100755 index 0000000..21ec0f8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/cms/IArticleDao.java" @@ -0,0 +1,53 @@ +package com.lxinet.jeesns.dao.cms; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.cms.Article; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章DAO接口 + * Created by zchuanzhao on 2016/11/26. + */ +public interface IArticleDao extends IBaseDao
{ + + int save(Article article); + + List
listByPage(@Param("page") Page page, @Param("key") String key, @Param("cateid") Integer cateid, @Param("status") Integer status, @Param("memberId") Integer memberId); + + /** + * 设置某个栏目的所有文章为未分类文章,一般在删除某个栏目的时候调用 + * @param cateid + * @return + */ + int setArticleAsNoneCate(@Param("cateid") int cateid); + + /** + * 更新阅读数 + * @param articleId + * @return + */ + int updateViewCount(@Param("articleId") int articleId); + + /** + * 审核文章 + * @param id + * @return + */ + int audit(@Param("id") int id); + + Article findById(@Param("id") Integer id, @Param("loginMemberId") Integer loginMemberId); + + /** + * 自定义条件查询 + * @param cid 栏目ID,0不限制 + * @param sort 排序字段 + * @param num 获取数量 + * @param day 天,获取多少天之内的数据,0不限制 + * @param thumbnail 缩略图 0不限制,1必须有缩略图 + * @return + */ + List
listByCustom(@Param("cid") int cid,@Param("sort") String sort,@Param("num") int num,@Param("day") int day,@Param("thumbnail") int thumbnail); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IAdsDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IAdsDao.java" new file mode 100755 index 0000000..30c2a12 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IAdsDao.java" @@ -0,0 +1,22 @@ +package com.lxinet.jeesns.dao.common; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.common.Ads; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/9/07. + */ +public interface IAdsDao extends IBaseDao{ + + /** + * 分页查询广告信息 + * @param page + * @return + */ + List listByPage(@Param("page") Page page); + + int enable(@Param("id") Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveDao.java" new file mode 100755 index 0000000..ab7d92a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveDao.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.dao.common; + +import com.lxinet.jeesns.model.common.Archive; +import org.apache.ibatis.annotations.Param; + +/** + * 文章DAO接口 + * Created by zchuanzhao on 2016/9/26. + */ +public interface IArchiveDao extends IBaseDao { + + Archive findByArchiveId(@Param("archiveId") Integer archiveId); + + /** + * 更新阅读数 + * @param archiveId + * @return + */ + int updateViewCount(@Param("archiveId") int archiveId); + + int favor(@Param("archiveId") int archiveId, @Param("num") int num); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveFavorDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveFavorDao.java" new file mode 100755 index 0000000..9d66346 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IArchiveFavorDao.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.dao.common; + +import com.lxinet.jeesns.model.common.ArchiveFavor; +import org.apache.ibatis.annotations.Param; + +/** + * 文章点赞DAO接口 + * Created by zchuanzhao on 2017/2/9. + */ +public interface IArchiveFavorDao extends IBaseDao { + + ArchiveFavor find(@Param("archiveId") Integer archiveId, @Param("memberId") Integer memberId); + + Integer save(@Param("archiveId") Integer archiveId, @Param("memberId") Integer memberId); + + Integer delete(@Param("archiveId") Integer archiveId, @Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IBaseDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IBaseDao.java" new file mode 100755 index 0000000..38390da --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/IBaseDao.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.dao.common; + +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 数据库操作基类接口 + * Created by zchuanzhao on 2016/9/26. + * @param + */ +public interface IBaseDao { + + T findById(@Param("id") Integer id); + + int save(T entity); + + int update(T entity); + + int delete(@Param("id") Integer id); + + List allList(); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ICommonDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ICommonDao.java" new file mode 100755 index 0000000..2feef3d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ICommonDao.java" @@ -0,0 +1,11 @@ +package com.lxinet.jeesns.dao.common; + + +/** + * Created by zchuanzhao on 2017/2/6. + */ +public interface ICommonDao extends IBaseDao { + + String getMysqlVsesion(); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ILinkDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ILinkDao.java" new file mode 100755 index 0000000..9a82e69 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/common/ILinkDao.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.dao.common; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.common.Link; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * Created by zchuanzhao on 2017-10-13. + */ +public interface ILinkDao extends IBaseDao{ + + /** + * 分页查询 + * @param page + * @return + */ + List listByPage(@Param("page") Page page); + + List recommentList(); + + int enable(@Param("id") Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupDao.java" new file mode 100755 index 0000000..18df56d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupDao.java" @@ -0,0 +1,30 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.Group; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/23. + */ +public interface IGroupDao extends IBaseDao { + + /** + * 获取群组 + * @return + */ + List list(@Param("status") Integer status, @Param("key") String key); + + /** + * 修改状态 + * + * @param id + * @return + */ + Integer changeStatus(@Param("id") Integer id); + + List listByCustom(@Param("status") int status, @Param("num") int num, @Param("sort") String sort); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupFansDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupFansDao.java" new file mode 100755 index 0000000..d37318d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupFansDao.java" @@ -0,0 +1,36 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.group.GroupFans; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/26. + */ +public interface IGroupFansDao extends IBaseDao { + + /** + * 获取群组粉丝 + * @return + */ + List listByPage(@Param("page") Page page, @Param("groupId") Integer groupId); + + GroupFans findByMemberAndGroup(@Param("groupId") Integer groupId,@Param("memberId") Integer memberId); + + int save(@Param("groupId") Integer groupId,@Param("memberId") Integer memberId); + + int delete(@Param("groupId") Integer groupId,@Param("memberId") Integer memberId); + + + /** + * 获取用户关注的群组列表 + * @param page + * @param memberId + * @return + */ + List listByMember(@Param("page") Page page, @Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicCommentDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicCommentDao.java" new file mode 100755 index 0000000..2f5696e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicCommentDao.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.GroupTopicComment; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/27. + */ +public interface IGroupTopicCommentDao extends IBaseDao { + + List listByGroupTopic(@Param("page") Page page, @Param("groupTopicId") Integer groupTopicId); + + int deleteByTopic(@Param("groupTopicId") Integer groupTopicId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicDao.java" new file mode 100755 index 0000000..2f88511 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicDao.java" @@ -0,0 +1,56 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.GroupTopic; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/26. + */ +public interface IGroupTopicDao extends IBaseDao { + + @Override + int save(GroupTopic groupTopic); + + List listByPage(@Param("page") Page page, @Param("key") String key, @Param("groupId") Integer groupId, @Param("status") Integer status, @Param("memberId") Integer memberId, @Param("typeId") Integer typeId); + + int audit(@Param("id") Integer id); + + GroupTopic findById(@Param("id") Integer id,@Param("loginMemberId") Integer loginMemberId); + + /** + * 置顶 + * @param top 0取消置顶,1置顶,2超级置顶 + * @return + */ + int top(@Param("id") Integer id,@Param("top") Integer top); + + /** + * 加精 + * @param essence 0取消加精,1加精 + * @return + */ + int essence(@Param("id") Integer id,@Param("essence") Integer essence); + + /** + * 修改分类 + * @param typeId + * @return + */ + int updateType(@Param("id") Integer id,@Param("typeId") Integer typeId); + + /** + * 自定义条件查询 + * @param gid 群组ID,0不限制 + * @param sort 排序字段 + * @param num 获取数量 + * @param day 天,获取多少天之内的数据,0不限制 + * @param thumbnail 缩略图 0不限制,1必须有缩略图 + * @return + */ + List listByCustom(@Param("gid") int gid,@Param("sort") String sort,@Param("num") int num,@Param("day") int day,@Param("thumbnail") int thumbnail); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicTypeDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicTypeDao.java" new file mode 100755 index 0000000..4ff82fd --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTopicTypeDao.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.group.GroupTopicType; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/8 下午10:59 + */ +public interface IGroupTopicTypeDao extends IBaseDao { + + List list(@Param("groupId") Integer groupId); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTypeDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTypeDao.java" new file mode 100755 index 0000000..eed4784 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/group/IGroupTypeDao.java" @@ -0,0 +1,13 @@ +package com.lxinet.jeesns.dao.group; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.group.GroupType; + +/** + * @author: zchuanzhao + * @date: 2018/5/15 下午10:59 + */ +public interface IGroupTypeDao extends IBaseDao { + + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/ICheckinDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/ICheckinDao.java" new file mode 100755 index 0000000..ad0ac10 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/ICheckinDao.java" @@ -0,0 +1,26 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.member.Checkin; +import com.lxinet.jeesns.model.member.Message; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员签到DAO + * Created by zchuanzhao on 18/8/20. + */ +public interface ICheckinDao extends IBaseDao { + List listByPage(@Param("page") Page page, @Param("memberId") Integer memberId); + + List todayList(@Param("page") Page page); + + List todayContinueList(); + + Checkin todayCheckin(@Param("memberId") Integer memberId); + + Checkin yesterdayCheckin(@Param("memberId") Integer memberId); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberDao.java" new file mode 100755 index 0000000..1e52161 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberDao.java" @@ -0,0 +1,135 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员DAO接口 + * Created by zchuanzhao on 16/9/26. + */ +public interface IMemberDao extends IBaseDao { + + Member login(Member member); + + Member manageLogin(Member member); + + List listByPage(@Param("page") Page page, @Param("key") String key); + + /** + * 管理员列表 + * @param page + * @param key + * @return + */ + List managerList(@Param("page") Page page, @Param("key") String key); + + + /** + * 管理员授权与取消 + * @param isAdmin + * @param id + * @return + */ + int managerAddAndCancel(@Param("isAdmin") Integer isAdmin, @Param("id") Integer id); + + + int register(Member member); + + /** + * 会员启用禁用操作 + * @param id + * @return + */ + int isenable(@Param("id") Integer id); + + /** + * 修改密码 + * @param id + * @param password + * @return + */ + int changepwd(@Param("id") Integer id, @Param("password") String password); + + /** + * 修改头像 + * @param id + * @param avatar + * @return + */ + int updateAvatar(@Param("id") Integer id, @Param("avatar") String avatar); + + /** + * 修改会员基本信息 + * @param member + * @return + */ + int editBaseInfo(Member member); + + /** + * 修改会员其他信息 + * @param member + * @return + */ + int editOtherInfo(Member member); + + Member findByName(@Param("name") String name); + + Member findByEmail(@Param("email") String email); + + Member findByNameAndEmail(@Param("name") String name, @Param("email") String email); + + /** + * 账号激活 + * @param id + * @return + */ + int active(@Param("id") Integer id); + + int loginSuccess(@Param("id") Integer id, @Param("currLoginIp") String currLoginIp); + + /** + * 关注 + * @param id + * @return + */ + int follows(@Param("id") Integer id); + + /** + * 粉丝 + * @param id + * @return + */ + int fans(@Param("id") Integer id); + + + /** + * 获取私信中的联系人ID列表 + * @param page + * @param memberId + * @return + */ + List listContactMemberIds(@Param("page") Page page, @Param("memberId") Integer memberId); + + + /** + * 获取私信中的联系人列表 + * @param memberId + * @param idList + * @param idString + * @return + */ + List listContactMembers(@Param("memberId") Integer memberId, @Param("idList") List idList, @Param("idString") String idString); + + + /** + * 更新会员积分 + * @param score + * @param id + * @return + */ + int updateScore(@Param("score") Integer score, @Param("id") Integer id); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberFansDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberFansDao.java" new file mode 100755 index 0000000..dfff3c6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberFansDao.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.MemberFans; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/16. + */ +public interface IMemberFansDao extends IBaseDao { + + List followsList(@Param("page") Page page, @Param("whoFollowId") Integer whoFollowId); + + List fansList(@Param("page") Page page, @Param("followWhoId") Integer followWhoId); + + MemberFans find(@Param("whoFollowId") Integer whoFollowId, @Param("followWhoId") Integer followWhoId); + + Integer save(@Param("whoFollowId") Integer whoFollowId, @Param("followWhoId") Integer followWhoId); + + Integer delete(@Param("whoFollowId") Integer whoFollowId, @Param("followWhoId") Integer followWhoId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberGroupDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberGroupDao.java" new file mode 100755 index 0000000..63cb2be --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberGroupDao.java" @@ -0,0 +1,13 @@ +package com.lxinet.jeesns.dao.member; + + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.member.MemGroup; + +/** + * 会员分组DAO + * Created by zchuanzhao on 16/9/26. + */ +public interface IMemberGroupDao extends IBaseDao { + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberTokenDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberTokenDao.java" new file mode 100755 index 0000000..f941587 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMemberTokenDao.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.member.MemberToken; +import org.apache.ibatis.annotations.Param; + +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/7/15. + */ +public interface IMemberTokenDao extends IBaseDao { + + MemberToken getByToken(@Param("token") String token); + + Integer save(@Param("memberId") Integer memberId, @Param("token") String token, @Param("expireTime") Date expireTime); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMessageDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMessageDao.java" new file mode 100755 index 0000000..87e7e8b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IMessageDao.java" @@ -0,0 +1,84 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Message; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员私信DAO + * Created by zchuanzhao on 17/3/9. + */ +public interface IMessageDao extends IBaseDao { + List listByPage(@Param("page") Page page, @Param("fromMemberId") Integer fromMemberId, @Param("toMemberId") Integer toMemberId); + + /** + * 获取聊提记录 + * @param page + * @param fromMemberId + * @param toMemberId + * @return + */ + List messageRecords(@Param("page") Page page, @Param("fromMemberId") Integer fromMemberId, @Param("toMemberId") Integer toMemberId); + + /** + * 系统信息 + * @param page + * @param toMemberId + * @return + */ + List systemMessage(@Param("page") Page page, @Param("toMemberId") Integer toMemberId,@Param("basePath") String basePath); + + /** + * 删除某个会员的所有聊天记录 + * @param memberId + * @return + */ + int deleteByMember(@Param("memberId") Integer memberId); + + /** + * 清空两个会员的聊天记录 + * @param fromMemberId + * @param toMemberId + * @return + */ + int clearMessageByMember(@Param("fromMemberId") Integer fromMemberId, @Param("toMemberId") Integer toMemberId); + + /** + * 查询会员未读私信数量 + * @param memberId + * @return + */ + int countUnreadNum(@Param("memberId") Integer memberId); + + /** + * 查询系统未读信息数量 + * @param memberId + * @return + */ + int countSystemUnreadNum(@Param("memberId") Integer memberId); + + /** + * 设置已读状态 + * @param fromMemberId + * @param toMemberId + * @return + */ + int setRead(@Param("fromMemberId") Integer fromMemberId, @Param("toMemberId") Integer toMemberId); + + /** + * 会员发送信息 + * @param message + * @return + */ + int sentMsg(Message message); + + /** + * 系统信息发送 + * @param message + * @return + */ + int systemMsgSave(Message message); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IScoreDetailDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IScoreDetailDao.java" new file mode 100755 index 0000000..add722d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IScoreDetailDao.java" @@ -0,0 +1,36 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.ScoreDetail; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/16. + */ +public interface IScoreDetailDao extends IBaseDao { + + List listByPage(@Param("page") Page page, @Param("memberId") Integer memberId); + + /** + * 是否能奖励,如果返回记录为0,表示可以奖励 + * @param memberId + * @param scoreRuleId + * @param type + * @return + */ + List canBonus(@Param("memberId") Integer memberId, @Param("scoreRuleId") Integer scoreRuleId, @Param("type") String type); + + /** + * 根据会员、获取奖励的外键、奖励规则ID获取奖励激励,不包括foreign_id=0 + * @param memberId + * @param scoreRuleId + * @param foreignId + * @return + */ + ScoreDetail findByForeignAndRule(@Param("memberId") Integer memberId, @Param("scoreRuleId") Integer scoreRuleId, @Param("foreignId") Integer foreignId); + + void cancel(@Param("id") Integer id); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IValidateCodeDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IValidateCodeDao.java" new file mode 100755 index 0000000..36d0ef6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/member/IValidateCodeDao.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.dao.member; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.member.ValidateCode; +import org.apache.ibatis.annotations.Param; + +/** + * 验证码DAO接口 + * Created by zchuanzhao on 17/01/20. + */ +public interface IValidateCodeDao extends IBaseDao { + + /** + * 验证,30分钟以内有效 + * @param email + * @param code + * @param type + * @return + */ + ValidateCode valid(@Param("email") String email, @Param("code") String code, @Param("type") int type); + + int used(@Param("id") Integer id); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumCommentDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumCommentDao.java" new file mode 100755 index 0000000..83b487c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumCommentDao.java" @@ -0,0 +1,14 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.PictureAlbumComment; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface IPictureAlbumCommentDao extends IBaseDao { + List listByPictureAlbum(@Param("page") Page page, @Param("pictureAlbumId") Integer pictureAlbumId); + + int deleteByPictureAlbum(@Param("pictureAlbumId") Integer pictureAlbumId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumDao.java" new file mode 100755 index 0000000..43d6e54 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumDao.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.model.picture.PictureAlbum; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +public interface IPictureAlbumDao extends IBaseDao { + + List listByMember(@Param("memberId") Integer memberId); + + List listByPage(@Param("page") Page page); + + PictureAlbum findWeiboAlbum(@Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumFavorDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumFavorDao.java" new file mode 100755 index 0000000..525c1c4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureAlbumFavorDao.java" @@ -0,0 +1,13 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.PictureAlbumFavor; +import org.apache.ibatis.annotations.Param; + +public interface IPictureAlbumFavorDao extends IBaseDao { + PictureAlbumFavor find(@Param("pictureAlbumId") Integer pictureAlbumId, @Param("memberId") Integer memberId); + + Integer save(@Param("pictureAlbumId") Integer pictureAlbumId, @Param("memberId") Integer memberId); + + Integer delete(@Param("pictureAlbumId") Integer pictureAlbumId, @Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureCommentDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureCommentDao.java" new file mode 100755 index 0000000..c0d90a8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureCommentDao.java" @@ -0,0 +1,15 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.PictureComment; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface IPictureCommentDao extends IBaseDao { + + List listByPicture(@Param("page") Page page, @Param("pictureId") Integer pictureId); + + int deleteByPicture(@Param("pictureId") Integer pictureId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureDao.java" new file mode 100755 index 0000000..b89d4cb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureDao.java" @@ -0,0 +1,28 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.Picture; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/1. + */ +public interface IPictureDao extends IBaseDao { + + List find(@Param("foreignId") Integer foreignId); + + Picture findById(@Param("pictureId") Integer pictureId,@Param("loginMemberId") Integer loginMemberId); + + List listByPage(@Param("page") Page page,@Param("loginMemberId") Integer loginMemberId); + + List listByAlbum(@Param("page") Page page, @Param("albumId") Integer albumId,@Param("loginMemberId") Integer loginMemberId); + + int deleteByForeignId(@Param("id") Integer foreignId); + + int update(@Param("foreignId") Integer foreignId, @Param("ids") String[] ids,@Param("description") String description); + + int favor(@Param("id") Integer id,@Param("num") Integer num); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureFavorDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureFavorDao.java" new file mode 100755 index 0000000..15c9141 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureFavorDao.java" @@ -0,0 +1,14 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.picture.PictureFavor; +import org.apache.ibatis.annotations.Param; + +public interface IPictureFavorDao extends IBaseDao { + + PictureFavor find(@Param("pictureId") Integer pictureId, @Param("memberId") Integer memberId); + + Integer save(@Param("pictureId") Integer pictureId, @Param("memberId") Integer memberId); + + Integer delete(@Param("pictureId") Integer pictureId, @Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureTagDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureTagDao.java" new file mode 100755 index 0000000..99ed491 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/picture/IPictureTagDao.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.dao.picture; + +import com.lxinet.jeesns.model.picture.PictureTag; + +public interface IPictureTagDao { + int deleteByPrimaryKey(Integer id); + + int insert(PictureTag record); + + int insertSelective(PictureTag record); + + PictureTag selectByPrimaryKey(Integer id); + + int updateByPrimaryKeySelective(PictureTag record); + + int updateByPrimaryKey(PictureTag record); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionDao.java" new file mode 100755 index 0000000..1ef09e6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionDao.java" @@ -0,0 +1,12 @@ +package com.lxinet.jeesns.dao.system; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.system.Action; +import org.apache.ibatis.annotations.Param; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public interface IActionDao extends IBaseDao { + int isenable(@Param("id") Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionLogDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionLogDao.java" new file mode 100755 index 0000000..da597a6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IActionLogDao.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.dao.system; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.system.ActionLog; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public interface IActionLogDao extends IBaseDao { + + List listByPage(@Param("page") Page page, @Param("memberId") Integer memberId); + + List memberActionLog(@Param("page") Page page, @Param("memberId") Integer memberId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IConfigDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IConfigDao.java" new file mode 100755 index 0000000..98c4d98 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IConfigDao.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.dao.system; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.system.Config; +import org.apache.ibatis.annotations.Param; + +/** + * 系统配置信息DAO接口 + * Created by zchuanzhao on 2016/11/26. + */ + +public interface IConfigDao extends IBaseDao { + + boolean update(@Param("key") String key,@Param("value") String value); + + String getValue(@Param("key") String key); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IScoreRuleDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IScoreRuleDao.java" new file mode 100755 index 0000000..6244ebe --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/IScoreRuleDao.java" @@ -0,0 +1,13 @@ +package com.lxinet.jeesns.dao.system; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.system.ScoreRule; +import org.apache.ibatis.annotations.Param; + +/** + * Created by zchuanzhao on 2017/3/24. + */ +public interface IScoreRuleDao extends IBaseDao { + + int enabled(@Param("id") int id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/ITagDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/ITagDao.java" new file mode 100755 index 0000000..dac1355 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/system/ITagDao.java" @@ -0,0 +1,20 @@ +package com.lxinet.jeesns.dao.system; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.system.Tag; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface ITagDao extends IBaseDao { + + /** + * 分页查询 + * + * @param page + * @return + */ + List listByPage(@Param("page") Page page, @Param("funcType") int funcType); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboCommentDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboCommentDao.java" new file mode 100755 index 0000000..cfbc358 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboCommentDao.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.dao.weibo; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.weibo.WeiboComment; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 微博评论DAO接口 + * Created by zchuanzhao on 16/12/22. + */ +public interface IWeiboCommentDao extends IBaseDao { + + List listByWeibo(@Param("page") Page page, @Param("weiboId") Integer weiboId); + + /** + * 根据微博ID删除评论 + * @param weiboId + * @return + */ + int deleteByWeibo(@Param("weiboId") Integer weiboId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboDao.java" new file mode 100755 index 0000000..b856df7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboDao.java" @@ -0,0 +1,51 @@ +package com.lxinet.jeesns.dao.weibo; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.weibo.Weibo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +public interface IWeiboDao extends IBaseDao { + + /** + * 列表 + * @param memberId 查询该会员微博列表 + * @param loginMemberId 当前登录的会员ID,用来判断是否已点赞 + * @return + */ + List listByPage(@Param("page") Page page, @Param("memberId") int memberId, @Param("loginMemberId") int loginMemberId, @Param("key") String key); + + int save(Weibo weibo); + + int delete(int id); + + List hotList(@Param("loginMemberId") int loginMemberId); + + int favor(@Param("id") Integer id,@Param("num") Integer num); + + /** + * 查询微博明细 + * @param id + * @param loginMemberId 当前登录的会员ID,用来判断是否已点赞 + * @return + */ + Weibo findById(@Param("id") Integer id,@Param("loginMemberId") Integer loginMemberId); + + /** + * 自定义条件查询 + * @param loginMemberId 当前登录的会员ID,用来判断是否已点赞 + * @param sort 排序字段 + * @param num 获取数量 + * @param day 天,获取多少天之内的数据,0不限制 + * @return + */ + List listByCustom(@Param("loginMemberId") Integer loginMemberId,@Param("sort") String sort,@Param("num") int num,@Param("day") int day); + + List listByTopic(@Param("page") Page page, @Param("loginMemberId") int loginMemberId, @Param("topicId") Integer topicId); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboFavorDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboFavorDao.java" new file mode 100755 index 0000000..f67d88d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboFavorDao.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.dao.weibo; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.weibo.WeiboFavor; +import org.apache.ibatis.annotations.Param; + +/** + * 微博点赞DAO接口 + * Created by zchuanzhao on 2017/2/8. + */ +public interface IWeiboFavorDao extends IBaseDao { + + WeiboFavor find(@Param("weiboId") Integer weiboId, @Param("memberId") Integer memberId); + + Integer save(@Param("weiboId") Integer weiboId, @Param("memberId") Integer memberId); + + Integer delete(@Param("weiboId") Integer weiboId, @Param("memberId") Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboTopicDao.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboTopicDao.java" new file mode 100755 index 0000000..6f0d770 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/java/com/lxinet/jeesns/dao/weibo/IWeiboTopicDao.java" @@ -0,0 +1,15 @@ +package com.lxinet.jeesns.dao.weibo; + +import com.lxinet.jeesns.dao.common.IBaseDao; +import com.lxinet.jeesns.model.weibo.WeiboTopic; +import org.apache.ibatis.annotations.Param; + + +/** + * Created by zchuanzhao on 2018/11/14. + */ +public interface IWeiboTopicDao extends IBaseDao { + + WeiboTopic findByName(@Param("name") String name); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCateMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCateMapper.xml" new file mode 100755 index 0000000..8670264 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCateMapper.xml" @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + delete from tbl_article_cate + where id = #{id} + + + insert into tbl_article_cate + + id, + fid, + name, + status, + sort, + + + #{id}, + #{fid}, + #{name}, + #{status}, + #{sort}, + + + + update tbl_article_cate + + fid = #{fid}, + name = #{name}, + status = #{status}, + sort = #{sort}, + + where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCommentMapper.xml" new file mode 100755 index 0000000..f39f0f9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + delete from tbl_article_comment where id = #{id} + + + delete from tbl_article_comment where article_id = #{articleId} + + + insert into tbl_article_comment (article_id,member_id,content,create_time) + values (#{articleId}, #{memberId}, #{content}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleMapper.xml" new file mode 100755 index 0000000..940195a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/cms/ArticleMapper.xml" @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.id,a.cate_id,a.collect_time,a.status, b.archive_id,b.title,b.create_time,b.description,b.thumbnail,b.favor,b.last_reply, + b.member_id,b.good_num,b.bad_num,b.view_count,b.view_rank, + c.id as c_id,c.fid as c_fid,c.name as c_name, + c.status as c_status,c.sort as c_sort,d.id as m_id,d.name as m_name,d.email as m_email,d.phone as m_phone, + d.avatar as m_avatar,d.sex as m_sex,d.money as m_money,d.score as m_score,d.follows as m_follows, + d.fans as m_fans,d.is_admin as m_is_admin,d.introduce as m_introduce,d.status as m_status,d.is_active as m_fm_is_activeans + + + select + from tbl_article as a LEFT JOIN tbl_archive as b ON a.archive_id = b.archive_id + LEFT JOIN tbl_article_cate as c ON a.cate_id = c.id + LEFT JOIN tbl_member as d ON b.member_id = d.id + + + + + + delete from tbl_action_log where type=1 and foreign_id = #{id}; + delete from tbl_article where id = #{id} + + + insert into tbl_article (collect_time,cate_id, archive_id,status) values (now(), #{cateId}, #{archiveId},#{status}) + + + + update tbl_article set cate_id=#{cateId} where id = #{id} + + + update tbl_article set status=(CASE WHEN status=0 THEN 1 ELSE 0 END) + where id = #{id} + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/AdsMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/AdsMapper.xml" new file mode 100755 index 0000000..de05425 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/AdsMapper.xml" @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + delete from tbl_ads where id = #{id} + + + insert into tbl_ads (name,create_time,type,start_time,end_time,content,link,status) + values (#{name}, now(), #{type}, #{startTime}, #{endTime}, #{content}, #{link}, #{status}) + + + update tbl_ads set name = #{name},type = #{type},start_time = #{startTime},end_time = #{endTime}, + content = #{content},link = #{link},status = #{status} where id = ${id} + + + + update tbl_ads set status=(case when status=0 then 1 else 0 end) where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveFavorMapper.xml" new file mode 100755 index 0000000..0273003 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + + delete from tbl_archive_favor where archive_id = #{archiveId} and member_id = #{memberId} + + + insert into tbl_archive_favor (archive_id,member_id,create_time) values (#{archiveId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveMapper.xml" new file mode 100755 index 0000000..baf6d37 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/ArchiveMapper.xml" @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_archive + where archive_id = #{id} + + + insert into tbl_archive (title, member_id, create_time, description, keywords, view_rank, + view_count, writer, source, pub_time, thumbnail, content) + values (#{title}, #{memberId}, now(), #{description}, #{keywords}, #{viewRank}, + #{viewCount}, #{writer}, #{source}, now(), #{thumbnail}, #{content}) + + + update tbl_archive set view_count=view_count+1 where archive_id=${archiveId} + + + update tbl_archive + + update_time = now(), + title = #{title}, + description = #{description}, + keywords = #{keywords}, + writer = #{writer}, + source = #{source}, + thumbnail = #{thumbnail}, + can_reply = #{canReply}, + content = #{content}, + + where archive_id = #{archiveId} + + + update tbl_archive set favor = favor + #{num} where archive_id = #{archiveId} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/CommonMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/CommonMapper.xml" new file mode 100755 index 0000000..d698318 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/CommonMapper.xml" @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/LinkMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/LinkMapper.xml" new file mode 100755 index 0000000..168c1d4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/LinkMapper.xml" @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + delete from tbl_link where id = #{id} + + + insert into tbl_link (name,url,create_time,sort,recomment,status) + values (#{name}, #{url}, now(), #{sort}, #{recomment}, #{status}) + + + update tbl_link set name = #{name},url = #{url},sort = #{sort},recomment = #{recomment},status = #{status} where id = ${id} + + + + update tbl_link set status=(case when status=0 then 1 else 0 end) where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/MemberTokenMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/MemberTokenMapper.xml" new file mode 100755 index 0000000..b05da86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/common/MemberTokenMapper.xml" @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + insert into tbl_member_token(create_time,member_id,token,expire_time) + values(now(),#{memberId},#{token},#{expireTime}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupFansMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupFansMapper.xml" new file mode 100755 index 0000000..7a69b7c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupFansMapper.xml" @@ -0,0 +1,30 @@ + + + + + + + + + + + delete from tbl_group_fans where group_id=#{groupId} and member_id=#{memberId} + + + insert into tbl_group_fans(create_time,group_id,member_id) + values(now(),#{groupId},#{memberId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupMapper.xml" new file mode 100755 index 0000000..2e8ec2c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupMapper.xml" @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_group where id = #{id} + + + insert into tbl_group(create_time,name,logo,creator,managers,tags,introduce,can_post,topic_review + ,type_id + ) + values(now(),#{name},#{logo},#{creator},#{managers},#{tags},#{introduce},#{canPost},#{topicReview} + ,#{typeId} + ) + + + update tbl_group + + name = #{name}, + logo = #{logo}, + tags = #{tags}, + managers = #{managers}, + introduce = #{introduce}, + can_post = #{canPost}, + topic_review = #{topicReview}, + type_id = #{typeId}, + + where id = #{id} + + + update tbl_group set status=(CASE WHEN status=0 THEN 1 ELSE 0 END) where id = #{id} + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicCommentMapper.xml" new file mode 100755 index 0000000..3f78bc4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicCommentMapper.xml" @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + delete from tbl_group_topic_comment where id = #{id} + + + delete from tbl_group_topic_comment where group_topic_id = #{groupTopicId} + + + insert into tbl_group_topic_comment (group_topic_id,member_id,content,create_time,comment_id) + values (#{groupTopicId}, #{memberId}, #{content}, now(),#{commentId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicMapper.xml" new file mode 100755 index 0000000..539a103 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicMapper.xml" @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + delete from tbl_action_log where type=4 and foreign_id = #{id}; + delete from tbl_group_topic where id = #{id} + + + insert into tbl_group_topic (collect_time, group_id, archive_id,status + + ,type_id + + ) values (now(), #{groupId}, #{archiveId},#{status} + + ,#{typeId} + + ) + + + UPDATE tbl_group_topic SET status = 1 WHERE id = #{id} + + + UPDATE tbl_group_topic SET is_top = #{top} WHERE id = #{id} + + + UPDATE tbl_group_topic SET is_essence = #{essence} WHERE id = #{id} + + + + UPDATE tbl_group_topic SET type_id = #{typeId} WHERE id = #{id} + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicTypeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicTypeMapper.xml" new file mode 100755 index 0000000..4dceace --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTopicTypeMapper.xml" @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + delete from tbl_group_topic_type where id = #{id} + + + + insert into tbl_group_topic_type (create_time, group_id, name, juri) values (now(), #{groupId}, #{name},#{juri}) + + + + update tbl_group_topic_type set name = #{name},juri = #{juri} where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTypeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTypeMapper.xml" new file mode 100755 index 0000000..69517cb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/group/GroupTypeMapper.xml" @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + delete from tbl_group_type where id = #{id} + + + + insert into tbl_group_type (create_time, name) values (now(), #{name}) + + + + update tbl_group_type set name = #{name} where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/CheckinMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/CheckinMapper.xml" new file mode 100755 index 0000000..8113f86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/CheckinMapper.xml" @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + insert into tbl_checkin(create_time,member_id,continue_day) + values(now(),#{memberId},#{continueDay}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemGroupMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemGroupMapper.xml" new file mode 100755 index 0000000..5ba2183 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemGroupMapper.xml" @@ -0,0 +1,93 @@ + + + + + + + + + + + + id, isadmin, name, fid, rankid + + + + delete from tbl_usergroup + where id = #{id,jdbcType=INTEGER} + + + insert into tbl_usergroup (id, isadmin, name, + fid, rankid) + values (#{id,jdbcType=INTEGER}, #{isadmin,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, + #{fid,jdbcType=INTEGER}, #{rankid,jdbcType=INTEGER}) + + + insert into tbl_usergroup + + + id, + + + isadmin, + + + name, + + + fid, + + + rankid, + + + + + #{id,jdbcType=INTEGER}, + + + #{isadmin,jdbcType=INTEGER}, + + + #{name,jdbcType=VARCHAR}, + + + #{fid,jdbcType=INTEGER}, + + + #{rankid,jdbcType=INTEGER}, + + + + + update tbl_usergroup + + + isadmin = #{isadmin,jdbcType=INTEGER}, + + + name = #{name,jdbcType=VARCHAR}, + + + fid = #{fid,jdbcType=INTEGER}, + + + rankid = #{rankid,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=INTEGER} + + + update tbl_usergroup + set isadmin = #{isadmin,jdbcType=INTEGER}, + name = #{name,jdbcType=VARCHAR}, + fid = #{fid,jdbcType=INTEGER}, + rankid = #{rankid,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberFansMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberFansMapper.xml" new file mode 100755 index 0000000..f0284f7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberFansMapper.xml" @@ -0,0 +1,32 @@ + + + + + + + + + + + + + delete from tbl_member_fans where follow_who=#{followWhoId} and who_follow=#{whoFollowId} + + + insert into tbl_member_fans(create_time,follow_who,who_follow) values(now(),#{followWhoId},#{whoFollowId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberMapper.xml" new file mode 100755 index 0000000..7f975d8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MemberMapper.xml" @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_member set is_admin = #{isAdmin} where id = #{id}; + + + + + + + + + + + + + + + + + delete from tbl_member where id = #{id} + + + + + update tbl_member set status=(case when status=0 then -1 else 0 end) where id=#{id} + + + + + update tbl_member set password=#{password} WHERE id=#{id} + + + + + update tbl_member set avatar=#{avatar} WHERE id=#{id} + + + + + insert into tbl_member (name, email, password, avatar, create_time, regip,last_login_time,last_login_ip,curr_login_time,curr_login_ip) + values (#{name}, #{email}, #{password}, #{avatar}, now(),#{regip},now(),#{regip},now(),#{regip}) + + + + + update tbl_member + + name=#{name},sex=#{sex},introduce=#{introduce} + + where id = #{id} + + + + + update tbl_member + + birthday=#{birthday},qq=#{qq},wechat=#{wechat},contact_phone=#{contactPhone},contact_email=#{contactEmail},website=#{website} + + where id = #{id} + + + + + update tbl_member set is_active=1 where id = #{id} + + + + + update tbl_member set login_count=login_count+1,last_login_time=curr_login_time,last_login_ip=curr_login_ip, + curr_login_time=now(),curr_login_ip=#{currLoginIp} where id = #{id} + + + + + update tbl_member set follows=(select COUNT(*) FROM tbl_member_fans where who_follow=#{id}) where id = #{id} + + + + + update tbl_member set fans=(select COUNT(*) FROM tbl_member_fans where follow_who=#{id}) where id = #{id} + + + + + update tbl_member set score=score+#{score} where id = #{id} + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MessageMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MessageMapper.xml" new file mode 100755 index 0000000..42809a2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/MessageMapper.xml" @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_message where id = #{id} + + + delete from tbl_message where from_member_id = #{id} OR to_member_id = #{id} + + + delete from tbl_message where (from_member_id = #{fromMemberId} AND to_member_id = #{toMemberId}) + OR (from_member_id = #{toMemberId} AND to_member_id = #{fromMemberId}) + + + insert into tbl_message (create_time,from_member_id,to_member_id,content) + values (now(),#{fromMemberId},#{toMemberId},#{content}) + + + insert into tbl_message (create_time,from_member_id,to_member_id,content,url,isread,app_tag,type,relate_key_id,member_id,description) + values (now(),#{fromMemberId},#{toMemberId},#{content},#{url},0,#{appTag},#{type},#{relateKeyId},#{memberId},#{description}) + + + update tbl_message SET isread = 1 WHERE isread = 0 AND to_member_id = #{toMemberId} + + AND from_member_id = #{fromMemberId} + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ScoreDetailMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ScoreDetailMapper.xml" new file mode 100755 index 0000000..b310377 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ScoreDetailMapper.xml" @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_score_detail(create_time,member_id,type,score,balance,remark,foreign_id,score_rule_id) + values(now(),#{memberId},#{type},#{score},(SELECT score FROM tbl_member WHERE id=#{memberId}),#{remark},#{foreignId},#{scoreRuleId}) + + + + UPDATE tbl_score_detail SET status=0 WHERE id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ValidateCodeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ValidateCodeMapper.xml" new file mode 100755 index 0000000..d1e35e2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/member/ValidateCodeMapper.xml" @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + INSERT INTO tbl_validate_code(create_time,email,code,status,type) VALUES (now(),#{email},#{code},0,#{type}) + + + + update tbl_validate_code SET status=1 where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumCommentMapper.xml" new file mode 100755 index 0000000..c4cae3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + id, create_time, member_id, picture_album_id, content + + + + + delete from tbl_picture_album_comment where id = #{id} + + + delete from tbl_picture_album_comment where picture_id = #{pictureAlbumId} + + + insert into tbl_picture_album_comment (picture_album_id,member_id,create_time,content) + values (#{pictureAlbumId}, #{memberId}, now(), #{content}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumFavorMapper.xml" new file mode 100755 index 0000000..4427492 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + delete from tbl_picture_album_favor where picture_album_id = #{pictureAlbumId} and member_id = #{memberId} + + + insert into tbl_picture_album_favor (picture_album_id,member_id,create_time) + values (#{pictureAlbumId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumMapper.xml" new file mode 100755 index 0000000..23de4d3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureAlbumMapper.xml" @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + a.id, a.create_time, a.update_time, a.member_id, a.comment_count, a.favor_count, a.name, a.description, + a.juri, a.cover, a.type, b.name as member_name, b.avatar as member_avatar, b.follows as member_follows, + b.fans as member_fans,b.introduce as member_introduce + + + + + + + delete from tbl_picture_album WHERE id = #{id} AND default_album = 0 + + + insert into tbl_picture_album (create_time, update_time, member_id, name, description, juri, cover, type) + values (now(), now(), #{memberId}, #{name}, #{description}, #{juri}, #{cover}, #{type}) + + + update tbl_picture_album + set update_time = now(),name = #{name},description = #{description},cover = #{cover},juri = #{juri} + where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureCommentMapper.xml" new file mode 100755 index 0000000..beae082 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + a.*,b.name AS member_name,b.avatar AS member_avatar + + + + + delete from tbl_picture_comment where id = #{id} + + + delete from tbl_picture_comment where picture_id = #{pictureId} + + + insert into tbl_picture_comment (picture_id,member_id,create_time,content) + values (#{pictureId}, #{memberId}, now(), #{content}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureFavorMapper.xml" new file mode 100755 index 0000000..4ed8b0c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + delete from tbl_picture_favor where picture_id = #{pictureId} and member_id = #{memberId} + + + insert into tbl_picture_favor (picture_id,member_id,create_time) + values (#{pictureId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureMapper.xml" new file mode 100755 index 0000000..1955880 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureMapper.xml" @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.*, b.name as member_name, b.avatar as member_avatar, b.follows as member_follows, + b.fans as member_fans,b.introduce as member_introduce + + + + + + + delete from tbl_picture where picture_id=#{id} + + + delete from tbl_picture where foreign_id=#{id} + + + insert into tbl_picture (create_time, type, foreign_id, path, thumbnail_path, small_path, md5, width, height, member_id, album_id) + values (now(), #{type}, #{foreignId}, #{path}, #{thumbnailPath}, #{smallPath}, #{md5}, #{width}, #{height},#{memberId},#{albumId}) + + + UPDATE tbl_picture SET foreign_id=#{foreignId},description=#{description} WHERE picture_id in + + #{item} + + + + update tbl_picture set favor_count = favor_count + #{num} where picture_id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureTagMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureTagMapper.xml" new file mode 100755 index 0000000..0fd4490 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/picture/PictureTagMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + delete from tbl_picture_tag where id = #{id} + + + insert into tbl_picture_tag (picture_id, tag_id) values (#{pictureId}, #{tagId}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionLogMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionLogMapper.xml" new file mode 100755 index 0000000..6019a36 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionLogMapper.xml" @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + INSERT INTO tbl_action_log(create_time,member_id,action_id,remark,action_ip,type,foreign_id) + VALUES (now(),#{memberId},#{actionId},#{remark},#{actionIp},#{type},#{foreignId}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionMapper.xml" new file mode 100755 index 0000000..721fd24 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ActionMapper.xml" @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + UPDATE tbl_action set log=#{log},update_time=now() WHERE id=#{id} + + + update tbl_action set status=(case when status=0 then 1 else 0 end),update_time=now() where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ConfigMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ConfigMapper.xml" new file mode 100755 index 0000000..74c2a53 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ConfigMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + update tbl_config set jvalue=#{value} where jkey = #{key} + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ScoreRuleMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ScoreRuleMapper.xml" new file mode 100755 index 0000000..3081902 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/ScoreRuleMapper.xml" @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + UPDATE tbl_score_rule SET update_time=now(),score=#{score} WHERE id=#{id} + + + UPDATE tbl_score_rule SET status=(CASE WHEN status=0 then 1 ELSE 0 END) WHERE id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/TagMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/TagMapper.xml" new file mode 100755 index 0000000..74de8e0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/system/TagMapper.xml" @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + delete from tbl_tag where id = #{id} + + + insert into tbl_tag (func_type, name) values (#{funcType}, #{name}) + + + UPDATE tbl_tag SET name = #{name} WHERE id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboCommentMapper.xml" new file mode 100755 index 0000000..5bee5ac --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboCommentMapper.xml" @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + delete from tbl_weibo_comment where id = #{id} + + + delete from tbl_weibo_comment where weibo_id = #{weiboId} + + + insert into tbl_weibo_comment (weibo_id,member_id,content,create_time,comment_id) + values (#{weiboId}, #{memberId}, #{content}, now(), #{commentId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboFavorMapper.xml" new file mode 100755 index 0000000..7278be9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboFavorMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + delete from tbl_weibo_favor where weibo_id = #{weiboId} and member_id = #{memberId} + + + insert into tbl_weibo_favor (weibo_id,member_id,create_time) + values (#{weiboId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboMapper.xml" new file mode 100755 index 0000000..d02b87c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboMapper.xml" @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + a.id,a.create_time,a.member_id,b.name,b.avatar, + b.introduce as 'member.introduce',b.follows as 'member.follows', b.fans as 'member.fans', + a.type,a.content,a.favor,a.status,(select count(id) from tbl_weibo_comment as d where d.weibo_id=a.id) comment_count, + (CASE WHEN (SELECT id FROM tbl_weibo_favor WHERE weibo_id=a.id AND member_id=#{loginMemberId}) IS NULL THEN 0 ELSE 1 END) is_favor + + + + + + delete from tbl_action_log where type=2 and foreign_id = #{id}; + delete from tbl_weibo where id = #{id} + + + insert into tbl_weibo (create_time, member_id, type, content + + ,topic_id + + ) VALUES (now(),#{memberId},#{type},#{content} + + ,#{topicId} + + ) + + + + + + update tbl_weibo set favor = favor + #{num} where id = #{id} + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboTopicMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboTopicMapper.xml" new file mode 100755 index 0000000..2b9b55a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/src/main/resources/mybatis/weibo/WeiboTopicMapper.xml" @@ -0,0 +1,19 @@ + + + + + + + + + + + + insert into tbl_weibo_topic (create_time, name, count) VALUES (now(),#{name},0) + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCateMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCateMapper.xml" new file mode 100755 index 0000000..8670264 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCateMapper.xml" @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + delete from tbl_article_cate + where id = #{id} + + + insert into tbl_article_cate + + id, + fid, + name, + status, + sort, + + + #{id}, + #{fid}, + #{name}, + #{status}, + #{sort}, + + + + update tbl_article_cate + + fid = #{fid}, + name = #{name}, + status = #{status}, + sort = #{sort}, + + where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCommentMapper.xml" new file mode 100755 index 0000000..f39f0f9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + delete from tbl_article_comment where id = #{id} + + + delete from tbl_article_comment where article_id = #{articleId} + + + insert into tbl_article_comment (article_id,member_id,content,create_time) + values (#{articleId}, #{memberId}, #{content}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleMapper.xml" new file mode 100755 index 0000000..940195a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/cms/ArticleMapper.xml" @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.id,a.cate_id,a.collect_time,a.status, b.archive_id,b.title,b.create_time,b.description,b.thumbnail,b.favor,b.last_reply, + b.member_id,b.good_num,b.bad_num,b.view_count,b.view_rank, + c.id as c_id,c.fid as c_fid,c.name as c_name, + c.status as c_status,c.sort as c_sort,d.id as m_id,d.name as m_name,d.email as m_email,d.phone as m_phone, + d.avatar as m_avatar,d.sex as m_sex,d.money as m_money,d.score as m_score,d.follows as m_follows, + d.fans as m_fans,d.is_admin as m_is_admin,d.introduce as m_introduce,d.status as m_status,d.is_active as m_fm_is_activeans + + + select + from tbl_article as a LEFT JOIN tbl_archive as b ON a.archive_id = b.archive_id + LEFT JOIN tbl_article_cate as c ON a.cate_id = c.id + LEFT JOIN tbl_member as d ON b.member_id = d.id + + + + + + delete from tbl_action_log where type=1 and foreign_id = #{id}; + delete from tbl_article where id = #{id} + + + insert into tbl_article (collect_time,cate_id, archive_id,status) values (now(), #{cateId}, #{archiveId},#{status}) + + + + update tbl_article set cate_id=#{cateId} where id = #{id} + + + update tbl_article set status=(CASE WHEN status=0 THEN 1 ELSE 0 END) + where id = #{id} + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/AdsMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/AdsMapper.xml" new file mode 100755 index 0000000..de05425 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/AdsMapper.xml" @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + delete from tbl_ads where id = #{id} + + + insert into tbl_ads (name,create_time,type,start_time,end_time,content,link,status) + values (#{name}, now(), #{type}, #{startTime}, #{endTime}, #{content}, #{link}, #{status}) + + + update tbl_ads set name = #{name},type = #{type},start_time = #{startTime},end_time = #{endTime}, + content = #{content},link = #{link},status = #{status} where id = ${id} + + + + update tbl_ads set status=(case when status=0 then 1 else 0 end) where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveFavorMapper.xml" new file mode 100755 index 0000000..0273003 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + + delete from tbl_archive_favor where archive_id = #{archiveId} and member_id = #{memberId} + + + insert into tbl_archive_favor (archive_id,member_id,create_time) values (#{archiveId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveMapper.xml" new file mode 100755 index 0000000..baf6d37 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/ArchiveMapper.xml" @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_archive + where archive_id = #{id} + + + insert into tbl_archive (title, member_id, create_time, description, keywords, view_rank, + view_count, writer, source, pub_time, thumbnail, content) + values (#{title}, #{memberId}, now(), #{description}, #{keywords}, #{viewRank}, + #{viewCount}, #{writer}, #{source}, now(), #{thumbnail}, #{content}) + + + update tbl_archive set view_count=view_count+1 where archive_id=${archiveId} + + + update tbl_archive + + update_time = now(), + title = #{title}, + description = #{description}, + keywords = #{keywords}, + writer = #{writer}, + source = #{source}, + thumbnail = #{thumbnail}, + can_reply = #{canReply}, + content = #{content}, + + where archive_id = #{archiveId} + + + update tbl_archive set favor = favor + #{num} where archive_id = #{archiveId} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/CommonMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/CommonMapper.xml" new file mode 100755 index 0000000..d698318 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/CommonMapper.xml" @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/LinkMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/LinkMapper.xml" new file mode 100755 index 0000000..168c1d4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/LinkMapper.xml" @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + delete from tbl_link where id = #{id} + + + insert into tbl_link (name,url,create_time,sort,recomment,status) + values (#{name}, #{url}, now(), #{sort}, #{recomment}, #{status}) + + + update tbl_link set name = #{name},url = #{url},sort = #{sort},recomment = #{recomment},status = #{status} where id = ${id} + + + + update tbl_link set status=(case when status=0 then 1 else 0 end) where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/MemberTokenMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/MemberTokenMapper.xml" new file mode 100755 index 0000000..b05da86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/common/MemberTokenMapper.xml" @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + insert into tbl_member_token(create_time,member_id,token,expire_time) + values(now(),#{memberId},#{token},#{expireTime}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupFansMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupFansMapper.xml" new file mode 100755 index 0000000..7a69b7c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupFansMapper.xml" @@ -0,0 +1,30 @@ + + + + + + + + + + + delete from tbl_group_fans where group_id=#{groupId} and member_id=#{memberId} + + + insert into tbl_group_fans(create_time,group_id,member_id) + values(now(),#{groupId},#{memberId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupMapper.xml" new file mode 100755 index 0000000..2e8ec2c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupMapper.xml" @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_group where id = #{id} + + + insert into tbl_group(create_time,name,logo,creator,managers,tags,introduce,can_post,topic_review + ,type_id + ) + values(now(),#{name},#{logo},#{creator},#{managers},#{tags},#{introduce},#{canPost},#{topicReview} + ,#{typeId} + ) + + + update tbl_group + + name = #{name}, + logo = #{logo}, + tags = #{tags}, + managers = #{managers}, + introduce = #{introduce}, + can_post = #{canPost}, + topic_review = #{topicReview}, + type_id = #{typeId}, + + where id = #{id} + + + update tbl_group set status=(CASE WHEN status=0 THEN 1 ELSE 0 END) where id = #{id} + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicCommentMapper.xml" new file mode 100755 index 0000000..3f78bc4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicCommentMapper.xml" @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + delete from tbl_group_topic_comment where id = #{id} + + + delete from tbl_group_topic_comment where group_topic_id = #{groupTopicId} + + + insert into tbl_group_topic_comment (group_topic_id,member_id,content,create_time,comment_id) + values (#{groupTopicId}, #{memberId}, #{content}, now(),#{commentId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicMapper.xml" new file mode 100755 index 0000000..539a103 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicMapper.xml" @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + delete from tbl_action_log where type=4 and foreign_id = #{id}; + delete from tbl_group_topic where id = #{id} + + + insert into tbl_group_topic (collect_time, group_id, archive_id,status + + ,type_id + + ) values (now(), #{groupId}, #{archiveId},#{status} + + ,#{typeId} + + ) + + + UPDATE tbl_group_topic SET status = 1 WHERE id = #{id} + + + UPDATE tbl_group_topic SET is_top = #{top} WHERE id = #{id} + + + UPDATE tbl_group_topic SET is_essence = #{essence} WHERE id = #{id} + + + + UPDATE tbl_group_topic SET type_id = #{typeId} WHERE id = #{id} + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicTypeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicTypeMapper.xml" new file mode 100755 index 0000000..4dceace --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTopicTypeMapper.xml" @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + delete from tbl_group_topic_type where id = #{id} + + + + insert into tbl_group_topic_type (create_time, group_id, name, juri) values (now(), #{groupId}, #{name},#{juri}) + + + + update tbl_group_topic_type set name = #{name},juri = #{juri} where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTypeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTypeMapper.xml" new file mode 100755 index 0000000..69517cb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/group/GroupTypeMapper.xml" @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + delete from tbl_group_type where id = #{id} + + + + insert into tbl_group_type (create_time, name) values (now(), #{name}) + + + + update tbl_group_type set name = #{name} where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/CheckinMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/CheckinMapper.xml" new file mode 100755 index 0000000..8113f86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/CheckinMapper.xml" @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + insert into tbl_checkin(create_time,member_id,continue_day) + values(now(),#{memberId},#{continueDay}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemGroupMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemGroupMapper.xml" new file mode 100755 index 0000000..5ba2183 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemGroupMapper.xml" @@ -0,0 +1,93 @@ + + + + + + + + + + + + id, isadmin, name, fid, rankid + + + + delete from tbl_usergroup + where id = #{id,jdbcType=INTEGER} + + + insert into tbl_usergroup (id, isadmin, name, + fid, rankid) + values (#{id,jdbcType=INTEGER}, #{isadmin,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, + #{fid,jdbcType=INTEGER}, #{rankid,jdbcType=INTEGER}) + + + insert into tbl_usergroup + + + id, + + + isadmin, + + + name, + + + fid, + + + rankid, + + + + + #{id,jdbcType=INTEGER}, + + + #{isadmin,jdbcType=INTEGER}, + + + #{name,jdbcType=VARCHAR}, + + + #{fid,jdbcType=INTEGER}, + + + #{rankid,jdbcType=INTEGER}, + + + + + update tbl_usergroup + + + isadmin = #{isadmin,jdbcType=INTEGER}, + + + name = #{name,jdbcType=VARCHAR}, + + + fid = #{fid,jdbcType=INTEGER}, + + + rankid = #{rankid,jdbcType=INTEGER}, + + + where id = #{id,jdbcType=INTEGER} + + + update tbl_usergroup + set isadmin = #{isadmin,jdbcType=INTEGER}, + name = #{name,jdbcType=VARCHAR}, + fid = #{fid,jdbcType=INTEGER}, + rankid = #{rankid,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberFansMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberFansMapper.xml" new file mode 100755 index 0000000..f0284f7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberFansMapper.xml" @@ -0,0 +1,32 @@ + + + + + + + + + + + + + delete from tbl_member_fans where follow_who=#{followWhoId} and who_follow=#{whoFollowId} + + + insert into tbl_member_fans(create_time,follow_who,who_follow) values(now(),#{followWhoId},#{whoFollowId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberMapper.xml" new file mode 100755 index 0000000..7f975d8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MemberMapper.xml" @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + update tbl_member set is_admin = #{isAdmin} where id = #{id}; + + + + + + + + + + + + + + + + + delete from tbl_member where id = #{id} + + + + + update tbl_member set status=(case when status=0 then -1 else 0 end) where id=#{id} + + + + + update tbl_member set password=#{password} WHERE id=#{id} + + + + + update tbl_member set avatar=#{avatar} WHERE id=#{id} + + + + + insert into tbl_member (name, email, password, avatar, create_time, regip,last_login_time,last_login_ip,curr_login_time,curr_login_ip) + values (#{name}, #{email}, #{password}, #{avatar}, now(),#{regip},now(),#{regip},now(),#{regip}) + + + + + update tbl_member + + name=#{name},sex=#{sex},introduce=#{introduce} + + where id = #{id} + + + + + update tbl_member + + birthday=#{birthday},qq=#{qq},wechat=#{wechat},contact_phone=#{contactPhone},contact_email=#{contactEmail},website=#{website} + + where id = #{id} + + + + + update tbl_member set is_active=1 where id = #{id} + + + + + update tbl_member set login_count=login_count+1,last_login_time=curr_login_time,last_login_ip=curr_login_ip, + curr_login_time=now(),curr_login_ip=#{currLoginIp} where id = #{id} + + + + + update tbl_member set follows=(select COUNT(*) FROM tbl_member_fans where who_follow=#{id}) where id = #{id} + + + + + update tbl_member set fans=(select COUNT(*) FROM tbl_member_fans where follow_who=#{id}) where id = #{id} + + + + + update tbl_member set score=score+#{score} where id = #{id} + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MessageMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MessageMapper.xml" new file mode 100755 index 0000000..42809a2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/MessageMapper.xml" @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + delete from tbl_message where id = #{id} + + + delete from tbl_message where from_member_id = #{id} OR to_member_id = #{id} + + + delete from tbl_message where (from_member_id = #{fromMemberId} AND to_member_id = #{toMemberId}) + OR (from_member_id = #{toMemberId} AND to_member_id = #{fromMemberId}) + + + insert into tbl_message (create_time,from_member_id,to_member_id,content) + values (now(),#{fromMemberId},#{toMemberId},#{content}) + + + insert into tbl_message (create_time,from_member_id,to_member_id,content,url,isread,app_tag,type,relate_key_id,member_id,description) + values (now(),#{fromMemberId},#{toMemberId},#{content},#{url},0,#{appTag},#{type},#{relateKeyId},#{memberId},#{description}) + + + update tbl_message SET isread = 1 WHERE isread = 0 AND to_member_id = #{toMemberId} + + AND from_member_id = #{fromMemberId} + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ScoreDetailMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ScoreDetailMapper.xml" new file mode 100755 index 0000000..b310377 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ScoreDetailMapper.xml" @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + insert into tbl_score_detail(create_time,member_id,type,score,balance,remark,foreign_id,score_rule_id) + values(now(),#{memberId},#{type},#{score},(SELECT score FROM tbl_member WHERE id=#{memberId}),#{remark},#{foreignId},#{scoreRuleId}) + + + + UPDATE tbl_score_detail SET status=0 WHERE id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ValidateCodeMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ValidateCodeMapper.xml" new file mode 100755 index 0000000..d1e35e2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/member/ValidateCodeMapper.xml" @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + INSERT INTO tbl_validate_code(create_time,email,code,status,type) VALUES (now(),#{email},#{code},0,#{type}) + + + + update tbl_validate_code SET status=1 where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumCommentMapper.xml" new file mode 100755 index 0000000..c4cae3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + id, create_time, member_id, picture_album_id, content + + + + + delete from tbl_picture_album_comment where id = #{id} + + + delete from tbl_picture_album_comment where picture_id = #{pictureAlbumId} + + + insert into tbl_picture_album_comment (picture_album_id,member_id,create_time,content) + values (#{pictureAlbumId}, #{memberId}, now(), #{content}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumFavorMapper.xml" new file mode 100755 index 0000000..4427492 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + delete from tbl_picture_album_favor where picture_album_id = #{pictureAlbumId} and member_id = #{memberId} + + + insert into tbl_picture_album_favor (picture_album_id,member_id,create_time) + values (#{pictureAlbumId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumMapper.xml" new file mode 100755 index 0000000..23de4d3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureAlbumMapper.xml" @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + a.id, a.create_time, a.update_time, a.member_id, a.comment_count, a.favor_count, a.name, a.description, + a.juri, a.cover, a.type, b.name as member_name, b.avatar as member_avatar, b.follows as member_follows, + b.fans as member_fans,b.introduce as member_introduce + + + + + + + delete from tbl_picture_album WHERE id = #{id} AND default_album = 0 + + + insert into tbl_picture_album (create_time, update_time, member_id, name, description, juri, cover, type) + values (now(), now(), #{memberId}, #{name}, #{description}, #{juri}, #{cover}, #{type}) + + + update tbl_picture_album + set update_time = now(),name = #{name},description = #{description},cover = #{cover},juri = #{juri} + where id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureCommentMapper.xml" new file mode 100755 index 0000000..beae082 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureCommentMapper.xml" @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + a.*,b.name AS member_name,b.avatar AS member_avatar + + + + + delete from tbl_picture_comment where id = #{id} + + + delete from tbl_picture_comment where picture_id = #{pictureId} + + + insert into tbl_picture_comment (picture_id,member_id,create_time,content) + values (#{pictureId}, #{memberId}, now(), #{content}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureFavorMapper.xml" new file mode 100755 index 0000000..4ed8b0c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureFavorMapper.xml" @@ -0,0 +1,20 @@ + + + + + + + + + + + + delete from tbl_picture_favor where picture_id = #{pictureId} and member_id = #{memberId} + + + insert into tbl_picture_favor (picture_id,member_id,create_time) + values (#{pictureId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureMapper.xml" new file mode 100755 index 0000000..1955880 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureMapper.xml" @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + a.*, b.name as member_name, b.avatar as member_avatar, b.follows as member_follows, + b.fans as member_fans,b.introduce as member_introduce + + + + + + + delete from tbl_picture where picture_id=#{id} + + + delete from tbl_picture where foreign_id=#{id} + + + insert into tbl_picture (create_time, type, foreign_id, path, thumbnail_path, small_path, md5, width, height, member_id, album_id) + values (now(), #{type}, #{foreignId}, #{path}, #{thumbnailPath}, #{smallPath}, #{md5}, #{width}, #{height},#{memberId},#{albumId}) + + + UPDATE tbl_picture SET foreign_id=#{foreignId},description=#{description} WHERE picture_id in + + #{item} + + + + update tbl_picture set favor_count = favor_count + #{num} where picture_id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureTagMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureTagMapper.xml" new file mode 100755 index 0000000..0fd4490 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/picture/PictureTagMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + delete from tbl_picture_tag where id = #{id} + + + insert into tbl_picture_tag (picture_id, tag_id) values (#{pictureId}, #{tagId}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionLogMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionLogMapper.xml" new file mode 100755 index 0000000..6019a36 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionLogMapper.xml" @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + INSERT INTO tbl_action_log(create_time,member_id,action_id,remark,action_ip,type,foreign_id) + VALUES (now(),#{memberId},#{actionId},#{remark},#{actionIp},#{type},#{foreignId}) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionMapper.xml" new file mode 100755 index 0000000..721fd24 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ActionMapper.xml" @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + UPDATE tbl_action set log=#{log},update_time=now() WHERE id=#{id} + + + update tbl_action set status=(case when status=0 then 1 else 0 end),update_time=now() where id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ConfigMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ConfigMapper.xml" new file mode 100755 index 0000000..74c2a53 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ConfigMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + update tbl_config set jvalue=#{value} where jkey = #{key} + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ScoreRuleMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ScoreRuleMapper.xml" new file mode 100755 index 0000000..3081902 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/ScoreRuleMapper.xml" @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + UPDATE tbl_score_rule SET update_time=now(),score=#{score} WHERE id=#{id} + + + UPDATE tbl_score_rule SET status=(CASE WHEN status=0 then 1 ELSE 0 END) WHERE id=#{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/TagMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/TagMapper.xml" new file mode 100755 index 0000000..74de8e0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/system/TagMapper.xml" @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + delete from tbl_tag where id = #{id} + + + insert into tbl_tag (func_type, name) values (#{funcType}, #{name}) + + + UPDATE tbl_tag SET name = #{name} WHERE id = #{id} + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboCommentMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboCommentMapper.xml" new file mode 100755 index 0000000..5bee5ac --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboCommentMapper.xml" @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + delete from tbl_weibo_comment where id = #{id} + + + delete from tbl_weibo_comment where weibo_id = #{weiboId} + + + insert into tbl_weibo_comment (weibo_id,member_id,content,create_time,comment_id) + values (#{weiboId}, #{memberId}, #{content}, now(), #{commentId}) + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboFavorMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboFavorMapper.xml" new file mode 100755 index 0000000..7278be9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboFavorMapper.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + + + + delete from tbl_weibo_favor where weibo_id = #{weiboId} and member_id = #{memberId} + + + insert into tbl_weibo_favor (weibo_id,member_id,create_time) + values (#{weiboId}, #{memberId}, now()) + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboMapper.xml" new file mode 100755 index 0000000..d02b87c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboMapper.xml" @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + a.id,a.create_time,a.member_id,b.name,b.avatar, + b.introduce as 'member.introduce',b.follows as 'member.follows', b.fans as 'member.fans', + a.type,a.content,a.favor,a.status,(select count(id) from tbl_weibo_comment as d where d.weibo_id=a.id) comment_count, + (CASE WHEN (SELECT id FROM tbl_weibo_favor WHERE weibo_id=a.id AND member_id=#{loginMemberId}) IS NULL THEN 0 ELSE 1 END) is_favor + + + + + + delete from tbl_action_log where type=2 and foreign_id = #{id}; + delete from tbl_weibo where id = #{id} + + + insert into tbl_weibo (create_time, member_id, type, content + + ,topic_id + + ) VALUES (now(),#{memberId},#{type},#{content} + + ,#{topicId} + + ) + + + + + + update tbl_weibo set favor = favor + #{num} where id = #{id} + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboTopicMapper.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboTopicMapper.xml" new file mode 100755 index 0000000..2b9b55a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-dao/target/classes/mybatis/weibo/WeiboTopicMapper.xml" @@ -0,0 +1,19 @@ + + + + + + + + + + + + insert into tbl_weibo_topic (create_time, name, count) VALUES (now(),#{name},0) + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-mobile/README.md" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-mobile/README.md" new file mode 100755 index 0000000..c99b774 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-mobile/README.md" @@ -0,0 +1,12 @@ +# JEESNS手机、微信版本 + +免费版本不提供JEESNS手机、微信版本,商业授权后可以使用。 + +授权联系QQ:582866070 + +## 相关网站 +官方网站:[http://www.jeesns.cn](http://www.jeesns.cn/) + +技术支持:[http://www.lxinet.com](http://www.lxinet.com/) + +服务器支持:[http://www.919dns.com](http://www.919dns.com/) diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/pom.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/pom.xml" new file mode 100755 index 0000000..35a4a42 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/pom.xml" @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-model + 1.3 + jeesns-model + + + + com.lxinet + jeesns-core + 1.3 + + + + + + jeesns-common + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/Article.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/Article.java" new file mode 100755 index 0000000..681a538 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/Article.java" @@ -0,0 +1,61 @@ +package com.lxinet.jeesns.model.cms; + + +import com.lxinet.jeesns.model.common.Archive; + +import javax.validation.constraints.Digits; +import java.util.Date; + +/** + * 文章实体类 + * Created by zchuanzhao on 2016/11/26. + */ +public class Article extends Archive { + private Integer id; + private Date collectTime; + @Digits(integer = 11,fraction = 0,message = "栏目不能为空") + private Integer cateId; + private Integer status; + + private ArticleCate articleCate; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCollectTime() { + return collectTime; + } + + public void setCollectTime(Date collectTime) { + this.collectTime = collectTime; + } + + public Integer getCateId() { + return cateId; + } + + public void setCateId(Integer cateId) { + this.cateId = cateId; + } + + public ArticleCate getArticleCate() { + return articleCate; + } + + public void setArticleCate(ArticleCate articleCate) { + this.articleCate = articleCate; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleCate.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleCate.java" new file mode 100755 index 0000000..2af655b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleCate.java" @@ -0,0 +1,72 @@ +package com.lxinet.jeesns.model.cms; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; +import java.io.Serializable; +import java.util.Date; + +/** + * 文章栏目实体类 + * Created by zchuanzhao on 2016/11/26. + */ +public class ArticleCate implements Serializable { + + private Integer id; + private Date createTime; + @Digits(integer = 11,fraction = 0,message = "上级栏目不能为空") + private Integer fid; + @NotBlank(message = "栏目名称不能为空") + private String name; + private Integer status; + private Integer sort; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getFid() { + return fid; + } + + public void setFid(Integer fid) { + this.fid = fid; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleComment.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleComment.java" new file mode 100755 index 0000000..493381f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/cms/ArticleComment.java" @@ -0,0 +1,85 @@ +package com.lxinet.jeesns.model.cms; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章评论实体类 + * Created by zchuanzhao on 2016/11/26. + */ +public class ArticleComment implements Serializable { + private Integer id; + + private Date createTime; + + private Integer articleId; + + private Article article; + + private Integer memberId; + + private Member member; + + private String content; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getArticleId() { + return articleId; + } + + public void setArticleId(Integer articleId) { + this.articleId = articleId; + } + + public Article getArticle() { + return article; + } + + public void setArticle(Article article) { + this.article = article; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Ads.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Ads.java" new file mode 100755 index 0000000..62e2ca6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Ads.java" @@ -0,0 +1,109 @@ +package com.lxinet.jeesns.model.common; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 广告实体类 + * Created by MMF on 2017-09-07. + */ +public class Ads { + private Integer id; + private String name; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer type; + private String typeName; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date endTime; + private String content; + private String link; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Archive.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Archive.java" new file mode 100755 index 0000000..e530339 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Archive.java" @@ -0,0 +1,280 @@ +package com.lxinet.jeesns.model.common; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; +import org.hibernate.validator.constraints.NotBlank; +import org.springframework.web.util.HtmlUtils; + +import javax.validation.constraints.Digits; +import java.io.Serializable; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.Date; + +/** + * 文章实体类 + * Created by zchuanzhao on 2016/9/26. + */ +public class Archive implements Serializable { + private Integer archiveId; + private Integer postType; + @NotBlank(message = "文章标题不能为空") + private String title; + + private Integer memberId; + + private Member member; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private String description; + + private String keywords; + + @Digits(integer = 1,fraction = 0,message = "浏览权限只能是数字") + private Integer viewRank; + + @Digits(integer = 11,fraction = 0,message = "浏览数只能是数字") + private Integer viewCount; + + private String writer; + + private String source; + + private Date pubTime; + + private Date updateTime; + + private String thumbnail; + + private Date lastReply; + + private Integer canReply; + + private Integer goodNum; + + private Integer badNum; + + private Integer checkAdmin; + + @NotBlank(message = "文章内容不能为空") + private String content; + + //喜欢数量 + private Integer favor; + + //会员是否已点击喜欢 + private Integer isFavor; + + public Integer getArchiveId() { + return archiveId; + } + + public void setArchiveId(Integer archiveId) { + this.archiveId = archiveId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getKeywords() { + return keywords; + } + + public void setKeywords(String keywords) { + this.keywords = keywords; + } + + public Integer getViewRank() { + return viewRank; + } + + public void setViewRank(Integer viewRank) { + this.viewRank = viewRank; + } + + public Integer getViewCount() { + return viewCount; + } + + public void setViewCount(Integer viewCount) { + this.viewCount = viewCount; + } + + public String getWriter() { + return writer; + } + + public void setWriter(String writer) { + this.writer = writer; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public Date getPubTime() { + return pubTime; + } + + public void setPubTime(Date pubTime) { + this.pubTime = pubTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getThumbnail() { + return "".equals(thumbnail) ? null:thumbnail; + } + + public void setThumbnail(String thumbnail) { + this.thumbnail = thumbnail; + } + + public Date getLastReply() { + return lastReply; + } + + public void setLastReply(Date lastReply) { + this.lastReply = lastReply; + } + + public Integer getCanReply() { + return canReply; + } + + public void setCanReply(Integer canReply) { + this.canReply = canReply; + } + + public Integer getGoodNum() { + return goodNum; + } + + public void setGoodNum(Integer goodNum) { + this.goodNum = goodNum; + } + + public Integer getBadNum() { + return badNum; + } + + public void setBadNum(Integer badNum) { + this.badNum = badNum; + } + + public Integer getCheckAdmin() { + return checkAdmin; + } + + public void setCheckAdmin(Integer checkAdmin) { + this.checkAdmin = checkAdmin; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + content = HtmlUtils.htmlUnescape(content); + this.content = content; + } + + public Integer getPostType() { + return postType; + } + + public void setPostType(Integer postType) { + this.postType = postType; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Integer getFavor() { + return favor; + } + + public void setFavor(Integer favor) { + this.favor = favor; + } + + public Integer getIsFavor() { + return isFavor; + } + + public void setIsFavor(Integer isFavor) { + this.isFavor = isFavor; + } + + public Archive copy(Object object) throws Exception { + Class classType = object.getClass(); + //当前对象 + Class newClassType = this.getClass(); + Object objectCopy = classType.getConstructor(new Class[]{}).newInstance(new Object[]{}); + //获得当前对象的所有成员变量 + Field[] fields = newClassType.getDeclaredFields(); + for(Field field : fields) { + //获取成员变量的名字 + String name = field.getName(); + //获取get和set方法的名字 + String firstLetter = name.substring(0,1).toUpperCase(); + String getMethodName = "get" + firstLetter + name.substring(1); + String setMethodName = "set" + firstLetter + name.substring(1); + //获取方法对象 + Method getMethod = classType.getMethod(getMethodName, new Class[]{}); + Method setMethod = classType.getMethod(setMethodName, new Class[]{field.getType()}); + //调用get方法获取旧的对象的值 + Object value = getMethod.invoke(object, new Object[]{}); + //调用set方法将这个值复制到新的对象中去 + setMethod.invoke(objectCopy, new Object[]{value}); + } + return (Archive) objectCopy; + } + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/ArchiveFavor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/ArchiveFavor.java" new file mode 100755 index 0000000..b553851 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/ArchiveFavor.java" @@ -0,0 +1,46 @@ +package com.lxinet.jeesns.model.common; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/2/9. + */ +public class ArchiveFavor implements Serializable { + private Integer id; + private Date createTime; + private Integer memberId; + private Integer archiveId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getArchiveId() { + return archiveId; + } + + public void setArchiveId(Integer archiveId) { + this.archiveId = archiveId; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/BaseEntity.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/BaseEntity.java" new file mode 100755 index 0000000..580af52 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/BaseEntity.java" @@ -0,0 +1,10 @@ +package com.lxinet.jeesns.model.common; + +import java.io.Serializable; + +/** + * Created by zchuanzhao on 16/9/29. + */ +public class BaseEntity implements Serializable { + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Link.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Link.java" new file mode 100755 index 0000000..96ffff2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/common/Link.java" @@ -0,0 +1,78 @@ +package com.lxinet.jeesns.model.common; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 友情链接 + * Created by zchuanzhao on 2017-10-13. + */ +public class Link { + private Integer id; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String name; + private String url; + private Integer sort; + private Integer recomment; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getSort() { + return sort; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public Integer getRecomment() { + return recomment; + } + + public void setRecomment(Integer recomment) { + this.recomment = recomment; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/Group.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/Group.java" new file mode 100755 index 0000000..9e66cbe --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/Group.java" @@ -0,0 +1,151 @@ +package com.lxinet.jeesns.model.group; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; +import org.hibernate.validator.constraints.NotBlank; +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 16/12/23. + */ +public class Group implements Serializable { + private Integer id; + private Date createTime; + @NotBlank(message = "群组名称不能为空") + private String name; + private String logo; + private Integer creator; + private Member creatorMember; + private String managers; + private String tags; + private String introduce; + private Integer status; + private Integer canPost; + private Integer topicReview; + private Integer topicCount; + private Integer fansCount; + private Integer typeId; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLogo() { + return logo; + } + + public void setLogo(String logo) { + this.logo = logo; + } + + public Integer getCreator() { + return creator; + } + + public void setCreator(Integer creator) { + this.creator = creator; + } + + public String getManagers() { + return managers; + } + + public void setManagers(String managers) { + this.managers = managers; + } + + public String getTags() { + return tags; + } + + public void setTags(String tags) { + this.tags = tags; + } + + public String getIntroduce() { + return introduce; + } + + public void setIntroduce(String introduce) { + this.introduce = introduce; + } + + public Member getCreatorMember() { + return creatorMember; + } + + public void setCreatorMember(Member creatorMember) { + this.creatorMember = creatorMember; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getCanPost() { + return canPost; + } + + public void setCanPost(Integer canPost) { + this.canPost = canPost; + } + + public Integer getTopicReview() { + return topicReview; + } + + public void setTopicReview(Integer topicReview) { + this.topicReview = topicReview; + } + + public Integer getTopicCount() { + return topicCount; + } + + public void setTopicCount(Integer topicCount) { + this.topicCount = topicCount; + } + + public Integer getFansCount() { + return fansCount; + } + + public void setFansCount(Integer fansCount) { + this.fansCount = fansCount; + } + + public Integer getTypeId() { + return typeId == null ? 1 : typeId ; + } + + public void setTypeId(Integer typeId) { + this.typeId = typeId; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupFans.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupFans.java" new file mode 100755 index 0000000..e6abbec --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupFans.java" @@ -0,0 +1,59 @@ +package com.lxinet.jeesns.model.group; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 16/12/26. + */ +public class GroupFans implements Serializable { + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer groupId; + private Group group; + private Integer memberId; + private Member member; + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopic.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopic.java" new file mode 100755 index 0000000..058b8cd --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopic.java" @@ -0,0 +1,94 @@ +package com.lxinet.jeesns.model.group; + + +import com.lxinet.jeesns.model.common.Archive; +import org.hibernate.validator.internal.xml.GroupsType; + +import java.util.Date; + +/** + * Created by zchuanzhao on 16/12/26. + */ +public class GroupTopic extends Archive { + private Integer id; + private Date collectTime; + private Integer groupId; + private Group group; + private Integer typeId; + private GroupTopicType groupTopicType; + private Integer status; + private Integer isTop; + private Integer isEssence; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCollectTime() { + return collectTime; + } + + public void setCollectTime(Date collectTime) { + this.collectTime = collectTime; + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public Group getGroup() { + return group; + } + + public void setGroup(Group group) { + this.group = group; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getIsTop() { + return isTop; + } + + public void setIsTop(Integer isTop) { + this.isTop = isTop; + } + + public Integer getIsEssence() { + return isEssence; + } + + public void setIsEssence(Integer isEssence) { + this.isEssence = isEssence; + } + + public Integer getTypeId() { + return typeId; + } + + public void setTypeId(Integer typeId) { + this.typeId = typeId; + } + + public GroupTopicType getGroupTopicType() { + return groupTopicType; + } + + public void setGroupTopicType(GroupTopicType groupTopicType) { + this.groupTopicType = groupTopicType; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicComment.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicComment.java" new file mode 100755 index 0000000..bddaede --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicComment.java" @@ -0,0 +1,104 @@ +package com.lxinet.jeesns.model.group; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 16/12/27. + */ +public class GroupTopicComment implements Serializable { + private Integer id; + + private Date createTime; + + private Integer groupTopicId; + + private GroupTopic groupTopic; + + private Integer memberId; + + private Member member; + + private String content; + + private Integer commentId; + + private GroupTopicComment groupTopicComment; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getGroupTopicId() { + return groupTopicId; + } + + public void setGroupTopicId(Integer groupTopicId) { + this.groupTopicId = groupTopicId; + } + + public GroupTopic getGroupTopic() { + return groupTopic; + } + + public void setGroupTopic(GroupTopic groupTopic) { + this.groupTopic = groupTopic; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getCommentId() { + return commentId; + } + + public void setCommentId(Integer commentId) { + this.commentId = commentId; + } + + public GroupTopicComment getGroupTopicComment() { + return groupTopicComment; + } + + public void setGroupTopicComment(GroupTopicComment groupTopicComment) { + this.groupTopicComment = groupTopicComment; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicType.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicType.java" new file mode 100755 index 0000000..b248891 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupTopicType.java" @@ -0,0 +1,56 @@ +package com.lxinet.jeesns.model.group; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author: zchuanzhao + * @date: 2018/5/8 下午10:59 + */ +public class GroupTopicType implements Serializable { + private Integer id; + private Date createTime; + private Integer groupId; + private String name; + private Integer juri; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getJuri() { + return juri; + } + + public void setJuri(Integer juri) { + this.juri = juri; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupType.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupType.java" new file mode 100755 index 0000000..d3ea6b8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/group/GroupType.java" @@ -0,0 +1,39 @@ +package com.lxinet.jeesns.model.group; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author: zchuanzhao + * @date: 2018/5/15 下午10:59 + */ +public class GroupType implements Serializable { + private Integer id; + private Date createTime; + private String name; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Checkin.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Checkin.java" new file mode 100755 index 0000000..c1ccda1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Checkin.java" @@ -0,0 +1,62 @@ +package com.lxinet.jeesns.model.member; + +import com.lxinet.jeesns.model.common.BaseEntity; + +import java.util.Date; + +/** + * 签到 + * @author zchuanzhao@linewell.com + * 2018/8/20 + */ +public class Checkin extends BaseEntity { + private Integer id; + + private Date createTime; + + private Integer memberId; + + private Member member; + + private Integer continueDay; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Integer getContinueDay() { + return continueDay; + } + + public void setContinueDay(Integer continueDay) { + this.continueDay = continueDay; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemGroup.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemGroup.java" new file mode 100755 index 0000000..7a6cdcf --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemGroup.java" @@ -0,0 +1,72 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员分组实体类 + * Created by zchuanzhao on 16/9/26. + */ +public class MemGroup implements Serializable { + private Integer id; + private Date createTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + private Integer isadmin; + + private String name; + + private Integer fid; + + private Integer rankid; + + public Integer getIsadmin() { + return isadmin; + } + + public void setIsadmin(Integer isadmin) { + this.isadmin = isadmin; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public Integer getFid() { + return fid; + } + + public void setFid(Integer fid) { + this.fid = fid; + } + + public Integer getRankid() { + return rankid; + } + + public void setRankid(Integer rankid) { + this.rankid = rankid; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Member.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Member.java" new file mode 100755 index 0000000..85ba725 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Member.java" @@ -0,0 +1,429 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 会员实体类 + * Created by zchuanzhao on 16/9/26. + */ +public class Member implements Serializable { + private Integer id; + private Date createTime; + + //分组ID + private Integer groupId; + + //会员名称 + private String name; + + //邮箱 + private String email; + + //手机号码 + private String phone; + + //密码 + private String password; + + //性别 + private String sex; + + //头像 + private String avatar; + + //注册IP + private String regip; + + //登录次数 + private Integer loginCount; + + //本次登录时间 + private Date currLoginTime; + + //本次登录IP + private String currLoginIp; + + //最后登录时间 + private Date lastLoginTime; + + //最后登录IP + private String lastLoginIp; + + //更新资料时间 + private Date updateTime; + + //金额 + private Double money; + + //积分 + private Integer score; + + //是否已激活,0未激活,1已激活 + private Integer isActive; + + //0禁用,1启用 + private Integer status; + + //生日 + private String birthday; + + //居住省份 + private String addprovince; + + //居住城市 + private String addcity; + + //居住地区 + private String addarea; + + //居住地址 + private String address; + + //QQ + private String qq; + + //微信 + private String wechat; + + //联系手机号 + private String contactPhone; + + //联系邮箱 + private String contactEmail; + + //个人网站 + private String website; + + //个人介绍 + private String introduce; + + //是否管理员 + private Integer isAdmin; + + //关注会员数 + private Integer follows; + + //粉丝数 + private Integer fans; + + //私信列表 + private List messages; + + //0普通会员,1是VIP + private Integer isVip; + + //会员等级ID + private Integer memberLevelId; + + private MemberLevel memberLevel; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getGroupId() { + return groupId; + } + + public void setGroupId(Integer groupId) { + this.groupId = groupId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + public String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getRegip() { + return regip; + } + + public void setRegip(String regip) { + this.regip = regip; + } + + public Integer getLoginCount() { + return loginCount; + } + + public void setLoginCount(Integer loginCount) { + this.loginCount = loginCount; + } + + public Date getLastLoginTime() { + return lastLoginTime; + } + + public void setLastLoginTime(Date lastLoginTime) { + this.lastLoginTime = lastLoginTime; + } + + public String getLastLoginIp() { + return lastLoginIp; + } + + public void setLastLoginIp(String lastLoginIp) { + this.lastLoginIp = lastLoginIp; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Double getMoney() { + return money; + } + + public void setMoney(Double money) { + this.money = money; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + public Integer getIsActive() { + return isActive; + } + + public void setIsActive(Integer isActive) { + this.isActive = isActive; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getBirthday() { + return birthday; + } + + public void setBirthday(String birthday) { + this.birthday = birthday; + } + + public String getAddprovince() { + return addprovince; + } + + public void setAddprovince(String addprovince) { + this.addprovince = addprovince; + } + + public String getAddcity() { + return addcity; + } + + public void setAddcity(String addcity) { + this.addcity = addcity; + } + + public String getAddarea() { + return addarea; + } + + public void setAddarea(String addarea) { + this.addarea = addarea; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getQq() { + return qq; + } + + public void setQq(String qq) { + this.qq = qq; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public String getContactPhone() { + return contactPhone; + } + + public void setContactPhone(String contactPhone) { + this.contactPhone = contactPhone; + } + + public String getContactEmail() { + return contactEmail; + } + + public void setContactEmail(String contactEmail) { + this.contactEmail = contactEmail; + } + + public String getWebsite() { + return website; + } + + public void setWebsite(String website) { + this.website = website; + } + + public String getIntroduce() { + return introduce; + } + + public void setIntroduce(String introduce) { + this.introduce = introduce; + } + + public Integer getIsAdmin() { + return isAdmin; + } + + public void setIsAdmin(Integer isAdmin) { + this.isAdmin = isAdmin; + } + + public Date getCurrLoginTime() { + return currLoginTime; + } + + public void setCurrLoginTime(Date currLoginTime) { + this.currLoginTime = currLoginTime; + } + + public String getCurrLoginIp() { + return currLoginIp; + } + + public void setCurrLoginIp(String currLoginIp) { + this.currLoginIp = currLoginIp; + } + + public Integer getFollows() { + return follows; + } + + public void setFollows(Integer follows) { + this.follows = follows; + } + + public Integer getFans() { + return fans; + } + + public void setFans(Integer fans) { + this.fans = fans; + } + + public List getMessages() { + return messages; + } + + public void setMessages(List messages) { + this.messages = messages; + } + + public Integer getIsVip() { + return isVip; + } + + public void setIsVip(Integer isVip) { + this.isVip = isVip; + } + + public Integer getMemberLevelId() { + return memberLevelId; + } + + public void setMemberLevelId(Integer memberLevelId) { + this.memberLevelId = memberLevelId; + } + + public MemberLevel getMemberLevel() { + return memberLevel; + } + + public void setMemberLevel(MemberLevel memberLevel) { + this.memberLevel = memberLevel; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberFans.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberFans.java" new file mode 100755 index 0000000..d299eb6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberFans.java" @@ -0,0 +1,67 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 17/2/15. + */ +public class MemberFans implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer followWho; + private Member followWhoMember; + private Integer whoFollow; + private Member whoFollowMember; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getFollowWho() { + return followWho; + } + + public void setFollowWho(Integer followWho) { + this.followWho = followWho; + } + + public Member getFollowWhoMember() { + return followWhoMember; + } + + public void setFollowWhoMember(Member followWhoMember) { + this.followWhoMember = followWhoMember; + } + + public Integer getWhoFollow() { + return whoFollow; + } + + public void setWhoFollow(Integer whoFollow) { + this.whoFollow = whoFollow; + } + + public Member getWhoFollowMember() { + return whoFollowMember; + } + + public void setWhoFollowMember(Member whoFollowMember) { + this.whoFollowMember = whoFollowMember; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberLevel.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberLevel.java" new file mode 100755 index 0000000..cf4f6e7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberLevel.java" @@ -0,0 +1,40 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2018/11/15. + */ +public class MemberLevel implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String name; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberToken.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberToken.java" new file mode 100755 index 0000000..d890edf --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/MemberToken.java" @@ -0,0 +1,67 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 17/7/15. + */ +public class MemberToken implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer memberId; + private String token; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date expireTime; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Date getExpireTime() { + return expireTime; + } + + public void setExpireTime(Date expireTime) { + this.expireTime = expireTime; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Message.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Message.java" new file mode 100755 index 0000000..e4d0f17 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/Message.java" @@ -0,0 +1,146 @@ +package com.lxinet.jeesns.model.member; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员私信 + * Created by zchuanzhao on 17/3/9. + */ +public class Message implements Serializable { + private Integer id; + private Date createTime; + private Integer fromMemberId; + private Member fromMember; + private Integer toMemberId; + private Member toMember; + private String content; + private String url; + private Integer isread; + private Integer appTag; + private Integer type; + private Integer relateKeyId; + private String description; + private Integer memberId; + private Member member; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getFromMemberId() { + return fromMemberId; + } + + public void setFromMemberId(Integer fromMemberId) { + this.fromMemberId = fromMemberId; + } + + public Member getFromMember() { + return fromMember; + } + + public void setFromMember(Member fromMember) { + this.fromMember = fromMember; + } + + public Integer getToMemberId() { + return toMemberId; + } + + public void setToMemberId(Integer toMemberId) { + this.toMemberId = toMemberId; + } + + public Member getToMember() { + return toMember; + } + + public void setToMember(Member toMember) { + this.toMember = toMember; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getIsread() { + return isread; + } + + public void setIsread(Integer isread) { + this.isread = isread; + } + + public Integer getAppTag() { + return appTag; + } + + public void setAppTag(Integer appTag) { + this.appTag = appTag; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getRelateKeyId() { + return relateKeyId; + } + + public void setRelateKeyId(Integer relateKeyId) { + this.relateKeyId = relateKeyId; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ScoreDetail.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ScoreDetail.java" new file mode 100755 index 0000000..6661346 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ScoreDetail.java" @@ -0,0 +1,109 @@ +package com.lxinet.jeesns.model.member; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 17/3/24. + */ +public class ScoreDetail implements Serializable { + private Integer id; + private Date createTime; + private Integer type; + private Integer memberId; + private Member member; + private Integer score; + private Integer balance; + private String remark; + private Integer foreignId; + private Integer scoreRuleId; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + public Integer getBalance() { + return balance; + } + + public void setBalance(Integer balance) { + this.balance = balance; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public Integer getForeignId() { + return foreignId; + } + + public void setForeignId(Integer foreignId) { + this.foreignId = foreignId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Integer getScoreRuleId() { + return scoreRuleId; + } + + public void setScoreRuleId(Integer scoreRuleId) { + this.scoreRuleId = scoreRuleId; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ValidateCode.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ValidateCode.java" new file mode 100755 index 0000000..7002ad9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/member/ValidateCode.java" @@ -0,0 +1,78 @@ +package com.lxinet.jeesns.model.member; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * 验证码 + * Created by zchuanzhao on 17/01/20. + */ +public class ValidateCode implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String email; + private String code; + private Integer status; + private Integer type; + + public ValidateCode(){ + + } + + public ValidateCode(String email, String code, Integer type) { + this.email = email; + this.code = code; + this.type = type; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/Picture.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/Picture.java" new file mode 100755 index 0000000..fbdd343 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/Picture.java" @@ -0,0 +1,177 @@ +package com.lxinet.jeesns.model.picture; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/3/1. + */ +public class Picture implements Serializable { + private Integer pictureId; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer memberId; + private Member member; + private Integer type; + private Integer foreignId; + private String path; + private String thumbnailPath; + private String smallPath; + private String md5; + private Integer width; + private Integer height; + private String description; + private Integer commentCount; + private Integer favorCount; + private Integer albumId; + private PictureAlbum pictureAlbum; + //是否已点赞,0未点赞,1已点赞 + private Integer isFavor; + + public Integer getPictureId() { + return pictureId; + } + + public void setPictureId(Integer pictureId) { + this.pictureId = pictureId; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getForeignId() { + return foreignId; + } + + public void setForeignId(Integer foreignId) { + this.foreignId = foreignId; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getThumbnailPath() { + return thumbnailPath; + } + + public void setThumbnailPath(String thumbnailPath) { + this.thumbnailPath = thumbnailPath; + } + + public String getMd5() { + return md5; + } + + public void setMd5(String md5) { + this.md5 = md5; + } + + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } + + public Integer getCommentCount() { + return commentCount; + } + + public void setCommentCount(Integer commentCount) { + this.commentCount = commentCount; + } + + public Integer getFavorCount() { + return favorCount; + } + + public void setFavorCount(Integer favorCount) { + this.favorCount = favorCount; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getSmallPath() { + return smallPath; + } + + public void setSmallPath(String smallPath) { + this.smallPath = smallPath; + } + + public Integer getAlbumId() { + return albumId; + } + + public void setAlbumId(Integer albumId) { + this.albumId = albumId; + } + + public PictureAlbum getPictureAlbum() { + return pictureAlbum; + } + + public void setPictureAlbum(PictureAlbum pictureAlbum) { + this.pictureAlbum = pictureAlbum; + } + + public Integer getIsFavor() { + return isFavor; + } + + public void setIsFavor(Integer isFavor) { + this.isFavor = isFavor; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbum.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbum.java" new file mode 100755 index 0000000..340ac21 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbum.java" @@ -0,0 +1,127 @@ +package com.lxinet.jeesns.model.picture; + +import com.lxinet.jeesns.model.member.Member; + +import java.util.Date; + +public class PictureAlbum { + private Integer id; + + private Date createTime; + + private Date updateTime; + + private Integer memberId; + + private Member member; + + private Integer commentCount; + + private Integer favorCount; + + private String name; + + private String description; + + private Integer juri; + + private String cover; + + private Integer type; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getCommentCount() { + return commentCount; + } + + public void setCommentCount(Integer commentCount) { + this.commentCount = commentCount; + } + + public Integer getFavorCount() { + return favorCount; + } + + public void setFavorCount(Integer favorCount) { + this.favorCount = favorCount; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description == null ? null : description.trim(); + } + + public Integer getJuri() { + return juri; + } + + public void setJuri(Integer juri) { + this.juri = juri; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public String getCover() { + return cover; + } + + public void setCover(String cover) { + this.cover = cover; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumComment.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumComment.java" new file mode 100755 index 0000000..9161c78 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumComment.java" @@ -0,0 +1,77 @@ +package com.lxinet.jeesns.model.picture; + +import org.aspectj.weaver.Member; + +import java.util.Date; + +public class PictureAlbumComment { + private Integer id; + + private Date createTime; + + private Integer memberId; + + private Member member; + + private Integer pictureAlbumId; + + private PictureAlbum pictureAlbum; + + private String content; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getPictureAlbumId() { + return pictureAlbumId; + } + + public void setPictureAlbumId(Integer pictureAlbumId) { + this.pictureAlbumId = pictureAlbumId; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content == null ? null : content.trim(); + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public PictureAlbum getPictureAlbum() { + return pictureAlbum; + } + + public void setPictureAlbum(PictureAlbum pictureAlbum) { + this.pictureAlbum = pictureAlbum; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumFavor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumFavor.java" new file mode 100755 index 0000000..d33d9e7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureAlbumFavor.java" @@ -0,0 +1,45 @@ +package com.lxinet.jeesns.model.picture; + +import java.util.Date; + +public class PictureAlbumFavor { + private Integer id; + + private Date createTime; + + private Integer pictureAlbumId; + + private Integer memberId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getPictureAlbumId() { + return pictureAlbumId; + } + + public void setPictureAlbumId(Integer pictureAlbumId) { + this.pictureAlbumId = pictureAlbumId; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureComment.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureComment.java" new file mode 100755 index 0000000..6b96a1c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureComment.java" @@ -0,0 +1,79 @@ +package com.lxinet.jeesns.model.picture; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.util.Date; + +public class PictureComment { + private Integer id; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private Integer memberId; + + private Member member; + + private Integer pictureId; + + private Picture picture; + + private String content; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getPictureId() { + return pictureId; + } + + public void setPictureId(Integer pictureId) { + this.pictureId = pictureId; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content == null ? null : content.trim(); + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Picture getPicture() { + return picture; + } + + public void setPicture(Picture picture) { + this.picture = picture; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureFavor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureFavor.java" new file mode 100755 index 0000000..00a5b52 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureFavor.java" @@ -0,0 +1,45 @@ +package com.lxinet.jeesns.model.picture; + +import java.util.Date; + +public class PictureFavor { + private Integer id; + + private Date createTime; + + private Integer pictureId; + + private Integer memberId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getPictureId() { + return pictureId; + } + + public void setPictureId(Integer pictureId) { + this.pictureId = pictureId; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureTag.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureTag.java" new file mode 100755 index 0000000..5c239cc --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/picture/PictureTag.java" @@ -0,0 +1,32 @@ +package com.lxinet.jeesns.model.picture; + + +public class PictureTag { + private Integer id; + private Integer appId; + private Integer pictureId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getAppId() { + return appId; + } + + public void setAppId(Integer appId) { + this.appId = appId; + } + + public Integer getPictureId() { + return pictureId; + } + + public void setPictureId(Integer pictureId) { + this.pictureId = pictureId; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Action.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Action.java" new file mode 100755 index 0000000..5c9214f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Action.java" @@ -0,0 +1,68 @@ +package com.lxinet.jeesns.model.system; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public class Action implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private String name; + private String log; + private Integer status; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getLog() { + return log; + } + + public void setLog(String log) { + this.log = log; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ActionLog.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ActionLog.java" new file mode 100755 index 0000000..4a4f86b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ActionLog.java" @@ -0,0 +1,124 @@ +package com.lxinet.jeesns.model.system; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public class ActionLog implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + private Integer memberId; + private Member member; + private Integer actionId; + private Action action; + private String remark; + private String actionIp; + private Integer type; + private Integer foreignId; + + public ActionLog(){ + + } + public ActionLog(Integer memberId,Integer actionId,String remark,String actionIp){ + this.memberId = memberId; + this.actionId = actionId; + this.remark = remark; + this.actionIp = actionIp; + + } + public ActionLog(Integer memberId,Integer actionId,String remark,String actionIp,Integer type,Integer foreignId){ + this.memberId = memberId; + this.actionId = actionId; + this.remark = remark; + this.actionIp = actionIp; + this.type = type; + this.foreignId = foreignId; + } + + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getActionId() { + return actionId; + } + + public void setActionId(Integer actionId) { + this.actionId = actionId; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getActionIp() { + return actionIp; + } + + public void setActionIp(String actionIp) { + this.actionIp = actionIp; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getForeignId() { + return foreignId; + } + + public void setForeignId(Integer foreignId) { + this.foreignId = foreignId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Action getAction() { + return action; + } + + public void setAction(Action action) { + this.action = action; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Config.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Config.java" new file mode 100755 index 0000000..c920193 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Config.java" @@ -0,0 +1,39 @@ +package com.lxinet.jeesns.model.system; + +import java.io.Serializable; + +/** + * 系统设置信息实体类 + * Created by zchuanzhao on 2016/11/26. + */ +public class Config implements Serializable { + private String jkey; + + private String jvalue; + + private String description; + + public String getJkey() { + return jkey; + } + + public void setJkey(String jkey) { + this.jkey = jkey; + } + + public String getJvalue() { + return jvalue; + } + + public void setJvalue(String jvalue) { + this.jvalue = jvalue; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ScoreRule.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ScoreRule.java" new file mode 100755 index 0000000..feed976 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/ScoreRule.java" @@ -0,0 +1,86 @@ +package com.lxinet.jeesns.model.system; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/3/24. + */ +public class ScoreRule implements Serializable { + private Integer id; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date updateTime; + private String name; + private Integer score; + private String remark; + private String type; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getScore() { + return score; + } + + public void setScore(Integer score) { + this.score = score; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Tag.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Tag.java" new file mode 100755 index 0000000..0e877b5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/system/Tag.java" @@ -0,0 +1,41 @@ +package com.lxinet.jeesns.model.system; + + +public class Tag { + private Integer id; + private String name; + private Integer funcType; + private Integer referCount; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getFuncType() { + return funcType; + } + + public void setFuncType(Integer funcType) { + this.funcType = funcType; + } + + public Integer getReferCount() { + return referCount; + } + + public void setReferCount(Integer referCount) { + this.referCount = referCount; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/Weibo.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/Weibo.java" new file mode 100755 index 0000000..9a35150 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/Weibo.java" @@ -0,0 +1,124 @@ +package com.lxinet.jeesns.model.weibo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +public class Weibo implements Serializable { + private Integer id; + private Date createTime; + private Integer memberId; + private Member member; + private Integer type; + private String content; + private Integer favor; + private Integer status; + private Integer commentCount; + //是否已点赞,0未点赞,1已点赞 + private Integer isFavor; + private List pictures; + private Integer topicId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getFavor() { + return favor; + } + + public void setFavor(Integer favor) { + this.favor = favor; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Integer getCommentCount() { + return commentCount; + } + + public void setCommentCount(Integer commentCount) { + this.commentCount = commentCount; + } + + public Integer getIsFavor() { + return isFavor; + } + + public void setIsFavor(Integer isFavor) { + this.isFavor = isFavor; + } + + public List getPictures() { + return pictures; + } + + public void setPictures(List pictures) { + this.pictures = pictures; + } + + public Integer getTopicId() { + return topicId; + } + + public void setTopicId(Integer topicId) { + this.topicId = topicId; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboComment.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboComment.java" new file mode 100755 index 0000000..64b7cb7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboComment.java" @@ -0,0 +1,104 @@ +package com.lxinet.jeesns.model.weibo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.lxinet.jeesns.model.member.Member; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2016/12/22. + */ +public class WeiboComment implements Serializable { + private Integer id; + private Date createTime; + private Integer memberId; + private Integer weiboId; + private Member member; + private Weibo weibo; + private Integer commentId; + private WeiboComment weiboComment; + private String content; + private Integer status; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getWeiboId() { + return weiboId; + } + + public void setWeiboId(Integer weiboId) { + this.weiboId = weiboId; + } + + public Member getMember() { + return member; + } + + public void setMember(Member member) { + this.member = member; + } + + public Weibo getWeibo() { + return weibo; + } + + public void setWeibo(Weibo weibo) { + this.weibo = weibo; + } + + public Integer getCommentId() { + return commentId; + } + + public void setCommentId(Integer commentId) { + this.commentId = commentId; + } + + public WeiboComment getWeiboComment() { + return weiboComment; + } + + public void setWeiboComment(WeiboComment weiboComment) { + this.weiboComment = weiboComment; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboFavor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboFavor.java" new file mode 100755 index 0000000..1fad11b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboFavor.java" @@ -0,0 +1,46 @@ +package com.lxinet.jeesns.model.weibo; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2017/2/8. + */ +public class WeiboFavor implements Serializable { + private Integer id; + private Date createTime; + private Integer memberId; + private Integer weiboId; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Integer getMemberId() { + return memberId; + } + + public void setMemberId(Integer memberId) { + this.memberId = memberId; + } + + public Integer getWeiboId() { + return weiboId; + } + + public void setWeiboId(Integer weiboId) { + this.weiboId = weiboId; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboTopic.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboTopic.java" new file mode 100755 index 0000000..9e2b2c3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-model/src/main/java/com/lxinet/jeesns/model/weibo/WeiboTopic.java" @@ -0,0 +1,46 @@ +package com.lxinet.jeesns.model.weibo; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by zchuanzhao on 2018/11/14. + */ +public class WeiboTopic implements Serializable { + private Integer id; + private Date createTime; + private String name; + private Integer count; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getCount() { + return count; + } + + public void setCount(Integer count) { + this.count = count; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/pom.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/pom.xml" new file mode 100755 index 0000000..b7db885 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/pom.xml" @@ -0,0 +1,47 @@ + + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-service + 1.3 + jeesns-service + + + + com.lxinet + jeesns-common + 1.3 + + + com.lxinet + jeesns-model + 1.3 + + + com.lxinet + jeesns-dao + 1.3 + + + + + jeesns-common + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCateService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCateService.java" new file mode 100755 index 0000000..f42903e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCateService.java" @@ -0,0 +1,34 @@ +package com.lxinet.jeesns.service.cms; + + +import com.lxinet.jeesns.model.cms.ArticleCate; + +import java.util.List; + + +/** + * Created by zchuanzhao on 16/9/29. + */ +public interface IArticleCateService { + + ArticleCate findById(int id); + + boolean save(ArticleCate articleCate); + + boolean update(ArticleCate articleCate); + + boolean delete(int id); + + /** + * 获取栏目 + * @return + */ + List list(); + + /** + * 通过父类ID获取子类列表 + * @param fid + * @return + */ + List findListByFid(int fid); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCommentService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCommentService.java" new file mode 100755 index 0000000..f74355d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleCommentService.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.service.cms; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.cms.ArticleComment; +import com.lxinet.jeesns.model.member.Member; + +import java.util.List; + + +/** + * Created by zchuanzhao on 2016/10/14. + */ +public interface IArticleCommentService { + + ArticleComment findById(int id); + + boolean save(Member loginMember, String content, Integer articleId); + + boolean delete(Member loginMember, int id); + + List listByPage(Page page, int articleId, String key); + + void deleteByArticle(Integer articleId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleService.java" new file mode 100755 index 0000000..4d2ef9b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/IArticleService.java" @@ -0,0 +1,35 @@ +package com.lxinet.jeesns.service.cms; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.model.member.Member; + +import java.util.List; + + +/** + * Created by zchuanzhao on 2016/10/14. + */ +public interface IArticleService { + + Article findById(int id); + + Article findById(int id,Member loginMember); + + boolean save(Member member, Article article); + + boolean update(Member member, Article article); + + boolean delete(Member member, int id); + + ResultModel listByPage(Page page, String key, int cateid, int status, int memberId); + + void updateViewCount(int id); + + boolean audit(int id); + + ResultModel favor(Member loginMember, int articleId); + + List
listByCustom(int cid,String sort,int num,int day,int thumbnail); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCateServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCateServiceImpl.java" new file mode 100755 index 0000000..c91d2dc --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCateServiceImpl.java" @@ -0,0 +1,108 @@ +package com.lxinet.jeesns.service.cms.impl; + +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.JeeException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.dao.cms.IArticleDao; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.dao.cms.IArticleCateDao; +import com.lxinet.jeesns.model.cms.ArticleCate; +import com.lxinet.jeesns.service.cms.IArticleCateService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/29. + */ +@Service("articleCateService") +public class ArticleCateServiceImpl implements IArticleCateService { + + @Resource + private IArticleCateDao articleCateDao; + @Resource + private IArticleDao articleDao; + + @Override + public ArticleCate findById(int id) { + ArticleCate articleCate = articleCateDao.findById(id); + return articleCate; + } + + @Override + public boolean save(ArticleCate articleCate) { + if(articleCate.getFid() == null){ + articleCate.setFid(0); + } + if(articleCate.getFid() != 0){ + ArticleCate fatherArticleCate = this.findById(articleCate.getFid()); + if(fatherArticleCate == null){ + throw new ParamException(Messages.PARENT_CATE_NOT_EXISTS); + } + if(fatherArticleCate.getFid() != 0){ + throw new JeeException(Messages.ONLY_TOP_CATE_CAN_ADD); + } + } + if (articleCateDao.save(articleCate) == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean update(ArticleCate articleCate) { + ArticleCate findArticleCate =this.findById(articleCate.getId()); + if(findArticleCate == null){ + throw new ParamException(Messages.CATE_NOT_EXISTS); + } + if(articleCate.getFid() == null){ + articleCate.setFid(0); + } + if(articleCate.getFid().intValue() == articleCate.getId().intValue()){ + throw new ParamException(Messages.PARENT_CONNOT_BE_SELF); + } + if(articleCate.getFid() != 0){ + ArticleCate fatherArticleCate = this.findById(articleCate.getFid()); + if(fatherArticleCate == null){ + throw new ParamException(Messages.PARENT_CATE_NOT_EXISTS); + } + if(fatherArticleCate.getFid() != 0){ + throw new JeeException(Messages.ONLY_TOP_CATE_CAN_ADD); + } + } + findArticleCate.setFid(articleCate.getFid()); + findArticleCate.setName(articleCate.getName()); + findArticleCate.setSort(articleCate.getSort()); + if (articleCateDao.update(articleCate) == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean delete(int id) { + List sonList = this.findListByFid(id); + if(sonList.size() > 0){ + throw new JeeException(Messages.DELETE_SUB_CATE_FIRST); + } + int result = articleCateDao.delete(id); + if(result == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public List list() { + return articleCateDao.list(); + } + + @Override + public List findListByFid(int fid) { + return articleCateDao.findListByFid(fid); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCommentServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCommentServiceImpl.java" new file mode 100755 index 0000000..66ee1d4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleCommentServiceImpl.java" @@ -0,0 +1,114 @@ +package com.lxinet.jeesns.service.cms.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotFountException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.dao.cms.IArticleCommentDao; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.model.cms.ArticleComment; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.cms.IArticleCommentService; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/10/14. + */ +@Service("articleCommentService") +public class ArticleCommentServiceImpl implements IArticleCommentService { + @Resource + private IArticleCommentDao articleCommentDao; + @Resource + private IArticleService articleService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public ArticleComment findById(int id) { + return this.atFormat(articleCommentDao.findById(id)); + } + + @Override + public boolean save(Member loginMember, String content, Integer articleId) { + Article article = articleService.findById(articleId); + ValidUtill.checkIsNull(article, Messages.ARTICLE_NOT_EXISTS); + ValidUtill.checkIsBlank(content, Messages.CONTENT_NOT_EMPTY); + ArticleComment articleComment = new ArticleComment(); + articleComment.setMemberId(loginMember.getId()); + articleComment.setArticleId(articleId); + articleComment.setContent(content); + int result = articleCommentDao.save(articleComment); + if(result == 0){ + throw new OpeErrorException(); + } + //@会员处理并发送系统消息 + messageService.atDeal(loginMember.getId(),content, AppTag.CMS, MessageType.CMS_ARTICLE_COMMENT_REFER,articleComment.getId()); + messageService.diggDeal(loginMember.getId(),article.getMemberId(),content,AppTag.CMS,MessageType.CMS_ARTICLR_REPLY,article.getId()); + //文章评论奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.ARTICLE_REVIEWS,articleComment.getId()); + return true; + } + + @Override + public List listByPage(Page page, int articleId, String key) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key+"%"; + } + List list = articleCommentDao.listByPage(page, articleId, key); + this.atFormat(list); + return list; + } + + @Override + public void deleteByArticle(Integer articleId) { + articleCommentDao.deleteByArticle(articleId); + } + + @Override + @Transactional + public boolean delete(Member loginMember, int id) { + int result = articleCommentDao.delete(id); + if(result == 0){ + throw new OpeErrorException(); + } + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(), ScoreRuleConsts.ARTICLE_REVIEWS,id); + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_ARTICLE_COMMENT,"ID:"+id); + return true; + } + + public ArticleComment atFormat(ArticleComment articleComment){ + articleComment.setContent(memberService.atFormat(articleComment.getContent())); + return articleComment; + } + + public List atFormat(List articleCommentList){ + for (ArticleComment articleComment : articleCommentList){ + atFormat(articleComment); + } + return articleCommentList; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleServiceImpl.java" new file mode 100755 index 0000000..3e6f96c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/cms/impl/ArticleServiceImpl.java" @@ -0,0 +1,212 @@ +package com.lxinet.jeesns.service.cms.impl; + +import com.lxinet.jeesns.common.utils.*; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.dao.cms.IArticleDao; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.model.common.Archive; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.cms.IArticleCommentService; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IConfigService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * Created by zchuanzhao on 2016/10/14. + */ +@Service("articleService") +public class ArticleServiceImpl implements IArticleService { + @Resource + private IArticleDao articleDao; + @Resource + private IArchiveService archiveService; + @Resource + private IConfigService configService; + @Resource + private IArticleCommentService articleCommentService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public Article findById(int id) { + return this.findById(id,null); + } + + @Override + public Article findById(int id, Member loginMember) { + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + Article article = articleDao.findById(id,loginMemberId); + this.atFormat(article); + return article; + } + + @Override + @Transactional + public boolean save(Member member, Article article) { + Map config = configService.getConfigToMap(); + if(member.getIsAdmin() == 0 && "0".equals(config.get(ConfigUtil.CMS_POST))){ + throw new OpeErrorException(Messages.CONTRIBUTION_CLOSED); + } + if(article.getCateId() == null || article.getCateId() == 0){ + throw new ParamException(Messages.CATE_NOT_EMPTY); + } + article.setMemberId(member.getId()); + Archive archive = new Archive(); + try { + //复制属性值 + archive = archive.copy(article); + } catch (Exception e) { + e.printStackTrace(); + } + archive.setPostType(1); + if(member.getIsAdmin() == 0 && "0".equals(config.get(ConfigUtil.CMS_POST_REVIEW))){ + article.setStatus(0); + }else { + article.setStatus(1); + } + //保存文档 + if(!archiveService.save(member,archive)){ + throw new OpeErrorException(); + } + + //保存文章 + article.setArchiveId(archive.getArchiveId()); + int result = articleDao.save(article); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(member.getId(),article.getContent(), AppTag.CMS, MessageType.CMS_ARTICLE_REFER,article.getId()); + if(article.getStatus() == 1){ + //投稿审核通过奖励 + scoreDetailService.scoreBonus(article.getMemberId(), ScoreRuleConsts.ARTICLE_SUBMISSIONS,article.getId()); + } + actionLogService.save(member.getCurrLoginIp(),member.getId(), ActionUtil.POST_ARTICLE,"", ActionLogType.ARTICLE.getValue(),article.getId()); + } + return true; + } + + @Override + public ResultModel listByPage(Page page, String key, int cateid, int status, int memberId) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key+"%"; + } + List
list = articleDao.listByPage(page, key,cateid,status,memberId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public void updateViewCount(int id) { + articleDao.updateViewCount(id); + } + + @Override + public boolean audit(int id) { + if(articleDao.audit(id) == 0){ + throw new OpeErrorException(); + } + Article article = this.findById(id); + if(article != null){ + //说明此次操作是审核通过 + if(article.getStatus() == 1){ + //投稿审核通过奖励 + scoreDetailService.scoreBonus(article.getMemberId(), ScoreRuleConsts.ARTICLE_SUBMISSIONS,article.getId()); + } + } + return true; + } + + @Override + public ResultModel favor(Member loginMember, int articleId) { + Article article = this.findById(articleId); + ValidUtill.checkIsNull(article, Messages.ARTICLE_NOT_EXISTS); + ResultModel resultModel = archiveService.favor(loginMember,article.getArchiveId()); + if(resultModel.getCode() == 0){ + //文章收到喜欢 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.ARTICLE_RECEIVED_LIKE, articleId); + //点赞之后发送系统信息 + messageService.diggDeal(loginMember.getId(),article.getMemberId(),AppTag.CMS,MessageType.CMS_ARTICLE_LIKE,article.getId()); + }else if(resultModel.getCode() == 1){ + //取消喜欢,扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.ARTICLE_RECEIVED_LIKE, articleId); + } + return resultModel; + } + + @Override + public List
listByCustom(int cid, String sort, int num, int day,int thumbnail) { + return articleDao.listByCustom(cid,sort,num,day,thumbnail); + } + + @Override + @Transactional + public boolean update(Member member, Article article) { + Article findArticle = this.findById(article.getId(),member); + ValidUtill.checkIsNull(article, Messages.ARTICLE_NOT_EXISTS); + article.setArchiveId(findArticle.getArchiveId()); + Archive archive = new Archive(); + try { + //复制属性值 + archive = archive.copy(article); + } catch (Exception e) { + e.printStackTrace(); + } + if(!archiveService.update(member,archive)){ + throw new OpeErrorException(); + } + Map config = configService.getConfigToMap(); + if(member.getIsAdmin() == 0 && "0".equals(config.get(ConfigUtil.CMS_POST_REVIEW))){ + findArticle.setStatus(0); + }else { + findArticle.setStatus(1); + } + //更新栏目 + findArticle.setCateId(article.getCateId()); + articleDao.update(findArticle);; + return true; + } + + @Override + @Transactional + public boolean delete(Member member, int id) { + Article article = this.findById(id); + ValidUtill.checkIsNull(article, Messages.ARTICLE_NOT_EXISTS); + int result = articleDao.delete(id); + if(result == 0){ + throw new OpeErrorException(); + } + //扣除积分 + scoreDetailService.scoreCancelBonus(member.getId(),ScoreRuleConsts.ARTICLE_SUBMISSIONS,id); + archiveService.delete(article.getArchiveId()); + articleCommentService.deleteByArticle(id); + actionLogService.save(member.getCurrLoginIp(),member.getId(), ActionUtil.DELETE_ARTICLE,"ID:"+article.getId()+",标题:"+article.getTitle()); + return true; + } + + public Article atFormat(Article article){ + article.setContent(memberService.atFormat(article.getContent())); + return article; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/BaseServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/BaseServiceImpl.java" new file mode 100755 index 0000000..921de95 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/BaseServiceImpl.java" @@ -0,0 +1,35 @@ +package com.lxinet.jeesns.service.common; + + +import com.lxinet.jeesns.dao.common.IBaseDao; + +import java.util.List; + +/** + * Service基类实现类 + * Created by zchuanzhao on 2016/11/26. + */ +public abstract class BaseServiceImpl implements IBaseService { + protected abstract IBaseDao getDao(); + + public T get(Integer id) { + return getDao().findById(id); + } + + public int save(T entity) { + return getDao().save(entity); + } + + public int update(T entity) { + return getDao().update(entity); + } + + public int delete(Integer id) { + return getDao().delete(id); + } + + public List allList() { + return getDao().allList(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IAdsService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IAdsService.java" new file mode 100755 index 0000000..88f089b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IAdsService.java" @@ -0,0 +1,31 @@ +package com.lxinet.jeesns.service.common; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.common.Ads; + +/** + * Created by zchuanzhao on 2017/9/07. + */ +public interface IAdsService { + /** + * 保存广告信息 + * @param ads + * @return + */ + boolean save(Ads ads); + /** + * 分页查询广告信息 + * @param page + * @return + */ + ResultModel listByPage(Page page); + + boolean update(Ads ads); + + boolean delete(Integer id); + + Ads findById(Integer id); + + boolean enable(Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveFavorService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveFavorService.java" new file mode 100755 index 0000000..4dc1b77 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveFavorService.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.service.common; + + +import com.lxinet.jeesns.model.common.ArchiveFavor; + +/** + * 文章点赞Service接口 + * Created by zchuanzhao on 2017/2/9. + */ +public interface IArchiveFavorService { + + ArchiveFavor find(Integer archiveId, Integer memberId); + + void save(Integer archiveId, Integer memberId); + + void delete(Integer archiveId, Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveService.java" new file mode 100755 index 0000000..7075fba --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IArchiveService.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.service.common; + +import com.lxinet.jeesns.model.common.Archive; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.member.Member; + + +/** + * Created by zchuanzhao on 2016/10/14. + */ +public interface IArchiveService { + + Archive findByArchiveId(int id); + + boolean save(Member member, Archive archive); + + boolean update(Member member, Archive archive); + + boolean delete(int id); + + void updateViewCount(int id); + + ResultModel favor(Member loginMember, int archiveId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IBaseService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IBaseService.java" new file mode 100755 index 0000000..abb714d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/IBaseService.java" @@ -0,0 +1,19 @@ +package com.lxinet.jeesns.service.common; + +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/29. + */ +public interface IBaseService { + + T get(Integer id); + + int save(T entity); + + int update(T entity); + + int delete(Integer id); + + List allList(); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ICommonService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ICommonService.java" new file mode 100755 index 0000000..f2c9ace --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ICommonService.java" @@ -0,0 +1,10 @@ +package com.lxinet.jeesns.service.common; + + +/** + * Created by zchuanzhao on 2017/2/6. + */ +public interface ICommonService { + + String getMysqlVsesion(); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ILinkService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ILinkService.java" new file mode 100755 index 0000000..8eb931b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/ILinkService.java" @@ -0,0 +1,27 @@ +package com.lxinet.jeesns.service.common; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.common.Link; + +/** + * Created by zchuanzhao on 2017-10-13. + */ +public interface ILinkService { + + boolean save(Link link); + + ResultModel listByPage(Page page); + + ResultModel allList(); + + ResultModel recommentList(); + + boolean update(Link link); + + boolean delete(Integer id); + + Link findById(Integer id); + + boolean enable(Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/AdsServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/AdsServiceImpl.java" new file mode 100755 index 0000000..d19fa8d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/AdsServiceImpl.java" @@ -0,0 +1,78 @@ +package com.lxinet.jeesns.service.common.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotFountException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.IAdsDao; +import com.lxinet.jeesns.model.common.Ads; +import com.lxinet.jeesns.service.common.IAdsService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/9/07. + */ +@Service("adsService") +public class AdsServiceImpl implements IAdsService { + @Resource + private IAdsDao adsDao; + + /** + * 保存广告信息 + * + * @param ads + * @return + */ + @Override + public boolean save(Ads ads) { + if (adsDao.save(ads) == 0) { + throw new OpeErrorException(); + } + return true; + } + + @Override + public ResultModel listByPage(Page page) { + List list = adsDao.listByPage(page); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public boolean update(Ads ads) { + Ads findAds = this.findById(ads.getId()); + if (findAds == null){ + throw new NotFountException(Messages.AD_NOT_EXISTS); + } + if (adsDao.update(ads) == 0) { + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean delete(Integer id) { + if (adsDao.delete(id) == 0) { + throw new OpeErrorException(); + } + return true; + } + + @Override + public Ads findById(Integer id) { + return adsDao.findById(id); + } + + @Override + public boolean enable(Integer id) { + if (adsDao.enable(id) == 0){ + throw new OpeErrorException(); + } + return true; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveFavorServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveFavorServiceImpl.java" new file mode 100755 index 0000000..246bdbb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveFavorServiceImpl.java" @@ -0,0 +1,32 @@ +package com.lxinet.jeesns.service.common.impl; + +import com.lxinet.jeesns.dao.common.IArchiveFavorDao; +import com.lxinet.jeesns.model.common.ArchiveFavor; +import com.lxinet.jeesns.service.common.IArchiveFavorService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/2/9. + */ +@Service("archiveFavorService") +public class ArchiveFavorServiceImpl implements IArchiveFavorService { + @Resource + private IArchiveFavorDao archiveFavorDao; + + + @Override + public ArchiveFavor find(Integer archiveId, Integer memberId) { + return archiveFavorDao.find(archiveId,memberId); + } + + @Override + public void save(Integer archiveId, Integer memberId) { + archiveFavorDao.save(archiveId,memberId); + } + + @Override + public void delete(Integer archiveId, Integer memberId) { + archiveFavorDao.delete(archiveId,memberId); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveServiceImpl.java" new file mode 100755 index 0000000..1446dd8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/ArchiveServiceImpl.java" @@ -0,0 +1,145 @@ +package com.lxinet.jeesns.service.common.impl; + +import com.lxinet.jeesns.dao.common.IArchiveDao; +import com.lxinet.jeesns.model.common.Archive; +import com.lxinet.jeesns.service.common.IArchiveFavorService; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.utils.HtmlUtil; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.model.member.Member; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.select.Elements; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2016/10/14. + */ +@Service("archiveService") +public class ArchiveServiceImpl implements IArchiveService { + @Resource + private IArchiveDao archiveDao; + @Resource + private IArchiveFavorService archiveFavorService; +// @Resource +// private IScoreRuleService scoreRuleService; + + @Override + public Archive findByArchiveId(int id) { + return archiveDao.findByArchiveId(id); + } + + @Override + public boolean save(Member member, Archive archive) { + archive.setMemberId(member.getId()); + if (archive.getViewCount() == null) { + archive.setViewCount(0); + } + if (archive.getViewRank() == null) { + archive.setViewRank(0); + } + if (StringUtils.isEmpty(archive.getDescription())) { + String contentStr = HtmlUtil.delHTMLTag(archive.getContent()); + if (contentStr.length() > 200) { + archive.setDescription(contentStr.substring(0, 200)); + } else { + archive.setDescription(contentStr); + } + } + if (StringUtils.isEmpty(archive.getThumbnail())) { + Document doc = Jsoup.parseBodyFragment(archive.getContent()); + Elements elements = doc.select("img[src]"); + if (elements.size() > 0) { + String imgsrc = elements.get(0).attr("src"); + archive.setThumbnail(imgsrc); + } + } + return archiveDao.save(archive) == 1; + } + + @Override + public void updateViewCount(int id) { + archiveDao.updateViewCount(id); + } + + @Transactional + @Override + public ResultModel favor(Member loginMember, int archiveId) { + String message; + ResultModel resultModel; + if(archiveFavorService.find(archiveId,loginMember.getId()) == null){ + //增加 + archiveDao.favor(archiveId,1); + archiveFavorService.save(archiveId,loginMember.getId()); + message = "喜欢成功"; + resultModel = new ResultModel(0,message); + }else { + //减少 + archiveDao.favor(archiveId,-1); + archiveFavorService.delete(archiveId,loginMember.getId()); + message = "取消喜欢成功"; + resultModel = new ResultModel(1,message); + } + Archive findArchive = this.findByArchiveId(archiveId); + resultModel.setData(findArchive.getFavor()); + return resultModel; + } + + @Override + public boolean update(Member member, Archive archive) { + Archive findArchive = this.findByArchiveId(archive.getArchiveId()); + if (findArchive == null) { + return false; + } + findArchive.setTitle(archive.getTitle()); + findArchive.setThumbnail(archive.getThumbnail()); + findArchive.setContent(archive.getContent()); + findArchive.setDescription(archive.getDescription()); + findArchive.setKeywords(archive.getKeywords()); + //普通会员 + if (member.getIsAdmin() == 0) { + if (member.getId().intValue() != findArchive.getMemberId().intValue()) { + return false; + } + } else { + //管理员 + findArchive.setSource(archive.getSource()); + findArchive.setViewCount(archive.getViewCount()); + findArchive.setWriter(archive.getWriter()); + findArchive.setViewRank(archive.getViewRank()); + } + if (findArchive.getViewCount() == null) { + findArchive.setViewCount(0); + } + if (findArchive.getViewRank() == null) { + findArchive.setViewRank(0); + } + if (StringUtils.isEmpty(findArchive.getDescription())) { + String contentStr = HtmlUtil.delHTMLTag(findArchive.getContent()); + if (contentStr.length() > 200) { + findArchive.setDescription(contentStr.substring(0, 200)); + } else { + findArchive.setDescription(contentStr); + } + } + if (StringUtils.isEmpty(findArchive.getThumbnail())) { + Document doc = Jsoup.parseBodyFragment(findArchive.getContent()); + Elements elements = doc.select("img[src]"); + if (elements.size() > 0) { + String imgsrc = elements.get(0).attr("src"); + findArchive.setThumbnail(imgsrc); + } + } + return archiveDao.update(findArchive) == 1; + } + + @Override + @Transactional + public boolean delete(int id) { + return archiveDao.delete(id) == 1; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/CommonServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/CommonServiceImpl.java" new file mode 100755 index 0000000..e434948 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/CommonServiceImpl.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.service.common.impl; + +import com.lxinet.jeesns.dao.common.ICommonDao; +import com.lxinet.jeesns.service.common.ICommonService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/2/6. + */ +@Service("commonService") +public class CommonServiceImpl implements ICommonService { + @Resource + private ICommonDao commonDao; + + @Override + public String getMysqlVsesion() { + return commonDao.getMysqlVsesion(); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/LinkServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/LinkServiceImpl.java" new file mode 100755 index 0000000..b277a95 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/common/impl/LinkServiceImpl.java" @@ -0,0 +1,72 @@ +package com.lxinet.jeesns.service.common.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.common.ILinkDao; +import com.lxinet.jeesns.model.common.Link; +import com.lxinet.jeesns.service.common.ILinkService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017-10-13. + */ +@Service("linkService") +public class LinkServiceImpl implements ILinkService { + @Resource + private ILinkDao linkDao; + + @Override + public boolean save(Link link) { + return linkDao.save(link) == 1; + } + + @Override + public ResultModel listByPage(Page page) { + List list = linkDao.listByPage(page); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public ResultModel allList() { + List list = linkDao.allList(); + ResultModel model = new ResultModel(0); + model.setData(list); + return model; + } + + @Override + public ResultModel recommentList() { + List list = linkDao.recommentList(); + ResultModel model = new ResultModel(0); + model.setData(list); + return model; + } + + @Override + public boolean update(Link link) { + Link findLink = this.findById(link.getId()); + ValidUtill.checkIsNull(findLink, Messages.FRIIEND_LINK_NOT_EXISTS); + return linkDao.update(link) == 1; + } + + @Override + public boolean delete(Integer id) { + return linkDao.delete(id) == 1; + } + + @Override + public Link findById(Integer id) { + return linkDao.findById(id); + } + + @Override + public boolean enable(Integer id) { + return linkDao.enable(id) == 1; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupFansService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupFansService.java" new file mode 100755 index 0000000..c31e945 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupFansService.java" @@ -0,0 +1,30 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.GroupFans; +import com.lxinet.jeesns.model.member.Member; +import org.apache.ibatis.annotations.Param; + + +/** + * Created by zchuanzhao on 16/12/26. + */ +public interface IGroupFansService { + + boolean save(Member loginMember, Integer groupId); + + boolean delete(Member loginMember, Integer groupId); + + ResultModel listByPage(Page page, Integer groupId); + + GroupFans findByMemberAndGroup(@Param("groupId") Integer groupId, @Param("memberId") Integer memberId); + + /** + * 获取用户关注的群组列表 + * @param page + * @param memberId + * @return + */ + ResultModel listByMember(Page page, Integer memberId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupService.java" new file mode 100755 index 0000000..ad6fd21 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupService.java" @@ -0,0 +1,30 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.member.Member; + +import java.util.List; + + +/** + * Created by zchuanzhao on 16/12/23. + */ +public interface IGroupService { + + Group findById(int id); + + boolean save(Member loginMember, Group group); + + boolean update(Member loginMember, Group group); + + boolean delete(Member loginMember, int id); + + List list(int status, String key); + + boolean follow(Member loginMember, Integer groupId, int type); + + boolean changeStatus(int id); + + List listByCustom(int status, int num, String sort); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicCommentService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicCommentService.java" new file mode 100755 index 0000000..35b8162 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicCommentService.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.GroupTopicComment; +import com.lxinet.jeesns.model.member.Member; + + +/** + * Created by zchuanzhao on 2016/12/27. + */ +public interface IGroupTopicCommentService { + + GroupTopicComment findById(int id); + + boolean save(Member loginMember, String content, Integer groupTopicId, Integer commentId); + + boolean delete(Member loginMember, int id); + + ResultModel listByGroupTopic(Page page, int groupTopicId); + + void deleteByTopic(int groupTopicId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicService.java" new file mode 100755 index 0000000..77ce041 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicService.java" @@ -0,0 +1,39 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.GroupTopic; +import com.lxinet.jeesns.model.member.Member; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + + +/** + * Created by zchuanzhao on 2016/12/26. + */ +public interface IGroupTopicService { + GroupTopic findById(int id); + + GroupTopic findById(int id,Member loginMember); + + boolean save(Member member, GroupTopic groupTopic); + + boolean update(Member member, GroupTopic groupTopic); + + boolean delete(Member loginMember, int id); + + boolean indexDelete(HttpServletRequest request, Member loginMember, int id); + + ResultModel listByPage(Page page, String key, int groupId, int status, int memberId, int typeId); + + boolean audit(Member member, int id); + + boolean top(Member member, int id, int top); + + boolean essence(Member member, int id, int essence); + + ResultModel favor(Member loginMember, int id); + + List listByCustom(int gid, String sort, int num, int day, int thumbnail); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicTypeService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicTypeService.java" new file mode 100755 index 0000000..c758a01 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTopicTypeService.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.group.GroupTopicType; +import com.lxinet.jeesns.model.member.Member; + +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/8 下午11:13 + */ +public interface IGroupTopicTypeService { + + GroupTopicType findById(int id); + + List list(int groupId); + + boolean delete(Member member, int id); + + boolean save(Member member, GroupTopicType groupTopicType); + + boolean update(Member member, GroupTopicType groupTopicType); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTypeService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTypeService.java" new file mode 100755 index 0000000..9628a3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/IGroupTypeService.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.service.group; + +import com.lxinet.jeesns.model.group.GroupType; +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/15 下午11:13 + */ +public interface IGroupTypeService { + + GroupType findById(int id); + + List list(); + + boolean delete(int id); + + boolean save(GroupType groupType); + + boolean update(GroupType groupType); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupFansServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupFansServiceImpl.java" new file mode 100755 index 0000000..d06a0c1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupFansServiceImpl.java" @@ -0,0 +1,72 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.group.GroupFans; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.group.IGroupFansService; +import com.lxinet.jeesns.dao.group.IGroupFansDao; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/12/26. + */ +@Service("groupFansService") +public class GroupFansServiceImpl implements IGroupFansService { + @Resource + private IGroupFansDao groupFansDao; + + @Override + public ResultModel listByPage(Page page, Integer groupId) { + List list = groupFansDao.listByPage(page, groupId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public GroupFans findByMemberAndGroup(@Param("groupId") Integer groupId, @Param("memberId") Integer memberId) { + return groupFansDao.findByMemberAndGroup(groupId,memberId); + } + + /** + * 关注 + * @param loginMember + * @param groupId + * @return + */ + @Override + public boolean save(Member loginMember, Integer groupId) { + if (null != groupFansDao.findByMemberAndGroup(groupId,loginMember.getId())){ + throw new OpeErrorException("已经关注"); + } + return groupFansDao.save(groupId,loginMember.getId()) == 1; + } + + /** + * 取消关注 + * @param loginMember + * @param groupId + * @return + */ + @Override + public boolean delete(Member loginMember, Integer groupId) { + return groupFansDao.delete(groupId,loginMember.getId()) > 0; + } + + + @Override + public ResultModel listByMember(Page page, Integer memberId) { + List list = groupFansDao.listByMember(page, memberId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupServiceImpl.java" new file mode 100755 index 0000000..09746fb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupServiceImpl.java" @@ -0,0 +1,185 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.system.ScoreRule; +import com.lxinet.jeesns.service.group.IGroupService; +import com.lxinet.jeesns.dao.group.IGroupDao; +import com.lxinet.jeesns.service.group.IGroupFansService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IConfigService; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ConfigUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import com.lxinet.jeesns.service.system.IScoreRuleService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; + +/** + * Created by zchuanzhao on 2016/12/23. + */ +@Service("groupService") +public class GroupServiceImpl implements IGroupService { + @Resource + private IGroupDao groupDao; + @Resource + private IGroupFansService groupFansService; + @Resource + private IMemberService memberService; + @Resource + private IConfigService configService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IScoreRuleService scoreRuleService; + + @Override + public List list(int status, String key) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key.trim()+"%"; + } + List list = groupDao.list(status,key); + return list; + } + + /** + * 关注、取消关注群组 + * @param loginMember + * @param groupId + * @param type 0关注,1取消关注 + * @return + */ + @Override + public boolean follow(Member loginMember, Integer groupId, int type) { + Group group = this.findById(groupId); + ValidUtill.checkIsNull(group,Messages.GROUP_NOT_EXISTS); + if(type == 0){ + return groupFansService.save(loginMember,groupId); + }else { + //创建者无法取消关注 + if(loginMember.getId().intValue() == group.getCreator().intValue()){ + throw new OpeErrorException("管理员不能取消关注"); + } + return groupFansService.delete(loginMember,groupId); + } + + } + + @Override + public boolean changeStatus(int id) { + return groupDao.changeStatus(id) == 1; + } + + @Override + public List listByCustom(int status, int num, String sort) { + return groupDao.listByCustom(status,num,sort); + } + + @Override + public Group findById(int id) { + return groupDao.findById(id); + } + + @Override + @Transactional + public boolean save(Member loginMember, Group group) { + loginMember = memberService.findById(loginMember.getId()); + Map config = configService.getConfigToMap(); + group.setCreator(loginMember.getId()); + if(loginMember.getIsAdmin() > 0){ + group.setStatus(1); + }else { + if("0".equals(config.get(ConfigUtil.GROUP_APPLY))){ + throw new OpeErrorException("群组申请功能已关闭"); + } + ScoreRule scoreRule = scoreRuleService.findById(ScoreRuleConsts.APPLY_GROUP); + if (scoreRule != null && loginMember.getScore() < Math.abs(scoreRule.getScore())){ + throw new OpeErrorException("账户积分不足无法申请群组,申请群组需要积分:" + Math.abs(scoreRule.getScore()) + ",当前积分余额为:" + loginMember.getScore()); + } + if("0".equals(config.get(ConfigUtil.GROUP_APPLY_REVIEW))){ + group.setStatus(0); + }else { + group.setStatus(1); + } + } + //默认图标 + if(StringUtils.isEmpty(group.getLogo())){ + group.setLogo(Const.DEFAULT_IMG_URL); + } + //设置管理员 + String managerIds = String.valueOf(loginMember.getId()); + group.setManagers(managerIds); + group.setCanPost(1); + group.setTopicReview(0); + boolean result = groupDao.save(group) == 1; + if(result){ + //创建者默认关注群组 + groupFansService.save(loginMember,group.getId()); + //申请群组奖励、扣款 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.APPLY_GROUP, group.getId()); + } + return result; + } + + @Override + public boolean update(Member loginMember, Group group) { + Group findGroup = this.findById(group.getId()); + ValidUtill.checkIsNull(findGroup, Messages.GROUP_NOT_EXISTS); + if(loginMember.getId().intValue() != findGroup.getCreator().intValue()){ + throw new OpeErrorException("没有权限"); + } + + //设置管理员 + String managerNames = group.getManagers(); + String managerIds = ""; + String[] names = managerNames.split(","); + if(names.length > 10){ + throw new OpeErrorException("管理员不能超过10个"); + } + for (String name : names){ + Member member = memberService.findByName(name.trim()); + if(member != null){ + managerIds += member.getId() + ","; + } + } + if(managerIds.length() > 0){ + managerIds = managerIds.substring(0,managerIds.length()-1); + } + if(StringUtils.isNotEmpty(group.getLogo())){ + findGroup.setLogo(group.getLogo()); + } + findGroup.setManagers(managerIds); + findGroup.setName(group.getName()); + findGroup.setTags(group.getTags()); + findGroup.setCanPost(group.getCanPost()); + findGroup.setTopicReview(group.getTopicReview()); + findGroup.setIntroduce(group.getIntroduce()); + findGroup.setTypeId(group.getTypeId()); + return groupDao.update(findGroup) == 1; + } + + @Override + public boolean delete(Member loginMember, int id) { + Group findGroup = this.findById(id); + ValidUtill.checkIsNull(findGroup, Messages.GROUP_NOT_EXISTS); + if(groupDao.delete(id) == 1){ + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_GROUP,"ID:"+findGroup.getId()+",名字:"+findGroup.getName()); + } + return groupDao.delete(id) == 1; + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicCommentServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicCommentServiceImpl.java" new file mode 100755 index 0000000..538b69f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicCommentServiceImpl.java" @@ -0,0 +1,114 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.model.group.GroupTopic; +import com.lxinet.jeesns.model.group.GroupTopicComment; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.group.IGroupTopicCommentService; +import com.lxinet.jeesns.dao.group.IGroupTopicCommentDao; +import com.lxinet.jeesns.service.group.IGroupTopicService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/12/27. + */ +@Service("groupTopicCommentService") +public class GroupTopicCommentServiceImpl implements IGroupTopicCommentService { + @Resource + private IGroupTopicCommentDao groupTopicCommentDao; + @Resource + private IGroupTopicService groupTopicService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public GroupTopicComment findById(int id) { + return this.atFormat(groupTopicCommentDao.findById(id)); + } + + @Override + public boolean save(Member loginMember, String content, Integer groupTopicId, Integer commentId) { + GroupTopic groupTopic = groupTopicService.findById(groupTopicId,loginMember); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + ValidUtill.checkIsNull(content, Messages.CONTENT_NOT_EMPTY); + GroupTopicComment groupTopicComment = new GroupTopicComment(); + groupTopicComment.setMemberId(loginMember.getId()); + groupTopicComment.setGroupTopicId(groupTopicId); + groupTopicComment.setContent(content); + groupTopicComment.setCommentId(commentId); + int result = groupTopicCommentDao.save(groupTopicComment); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(loginMember.getId(),content, AppTag.GROUP, MessageType.GROUP_TOPIC_COMMENT_REFER,groupTopicComment.getId()); + messageService.diggDeal(loginMember.getId(),groupTopic.getMemberId(),content,AppTag.GROUP,MessageType.GROUP_TOPIC_REPLY,groupTopic.getId()); + if (commentId != null){ + GroupTopicComment replyGroupTopicComment = findById(commentId); + if(replyGroupTopicComment != null){ + messageService.diggDeal(loginMember.getId(),replyGroupTopicComment.getMemberId(),content,AppTag.GROUP,MessageType.GROUP_TOPIC_REPLY_REPLY,replyGroupTopicComment.getId()); + } + } + //群组帖子评论奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.GROUP_TOPIC_COMMENTS, groupTopicComment.getId()); + } + return result == 1; + } + + @Override + public ResultModel listByGroupTopic(Page page, int groupTopicId) { + List list = groupTopicCommentDao.listByGroupTopic(page, groupTopicId); + this.atFormat(list); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public void deleteByTopic(int groupTopicId) { + groupTopicCommentDao.deleteByTopic(groupTopicId); + } + + @Override + public boolean delete(Member loginMember, int id){ + GroupTopicComment groupTopicComment = this.findById(id); + ValidUtill.checkIsNull(groupTopicComment, Messages.COMMENT_NOT_EXISTS); + int result = groupTopicCommentDao.delete(id); + if(result == 1){ + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.GROUP_TOPIC_COMMENTS,id); + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_GROUP_TOPIC_COMMENT,"ID:"+groupTopicComment.getId()+",内容:"+groupTopicComment.getContent()); + } + return result == 1; + } + + public GroupTopicComment atFormat(GroupTopicComment groupTopicComment){ + groupTopicComment.setContent(memberService.atFormat(groupTopicComment.getContent())); + return groupTopicComment; + } + + public List atFormat(List groupTopicCommentList){ + for (GroupTopicComment groupTopicComment : groupTopicCommentList){ + atFormat(groupTopicComment); + } + return groupTopicCommentList; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicServiceImpl.java" new file mode 100755 index 0000000..f42f9ef --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicServiceImpl.java" @@ -0,0 +1,286 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.common.utils.ActionLogType; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.dao.group.IGroupTopicDao; +import com.lxinet.jeesns.model.common.Archive; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.group.GroupTopic; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.service.group.IGroupFansService; +import com.lxinet.jeesns.service.group.IGroupService; +import com.lxinet.jeesns.service.group.IGroupTopicCommentService; +import com.lxinet.jeesns.service.group.IGroupTopicService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import javax.crypto.spec.OAEPParameterSpec; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/12/26. + */ +@Service("groupTopicService") +public class GroupTopicServiceImpl implements IGroupTopicService { + @Resource + private IGroupTopicDao groupTopicDao; + @Resource + private IGroupService groupService; + @Resource + private IGroupTopicCommentService groupTopicCommentService; + @Resource + private IGroupFansService groupFansService; + @Resource + private IArchiveService archiveService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public GroupTopic findById(int id) { + return this.findById(id,null); + } + + @Override + public GroupTopic findById(int id,Member loginMember) { + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + return this.atFormat(groupTopicDao.findById(id,loginMemberId)); + } + + @Override + @Transactional + public boolean save(Member member, GroupTopic groupTopic) { + if(groupTopic.getGroupId() == null || groupTopic.getGroupId() == 0){ + throw new ParamException(); + } + Group group = groupService.findById(groupTopic.getGroupId()); + ValidUtill.checkIsNull(group, Messages.GROUP_NOT_EXISTS); + if(groupFansService.findByMemberAndGroup(group.getId(),member.getId()) == null){ + throw new OpeErrorException("必须关注该群组后才能发帖"); + } + if(group.getCanPost() == 0){ + throw new OpeErrorException("群组已关闭发帖功能"); + } + groupTopic.setMemberId(member.getId()); + Archive archive = new Archive(); + try { + //复制属性值 + archive = archive.copy(groupTopic); + } catch (Exception e) { + e.printStackTrace(); + } + archive.setPostType(2); + //保存文档 + if(!archiveService.save(member,archive)){ + throw new OpeErrorException(); + } + //保存文章 + groupTopic.setStatus(group.getTopicReview()==0?1:0); + groupTopic.setArchiveId(archive.getArchiveId()); + int result = groupTopicDao.save(groupTopic); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(member.getId(),groupTopic.getContent(), AppTag.GROUP, MessageType.GROUP_TOPIC_REFER,groupTopic.getId()); + //群组发帖奖励 + scoreDetailService.scoreBonus(member.getId(), ScoreRuleConsts.GROUP_POST, groupTopic.getId()); + actionLogService.save(member.getCurrLoginIp(),member.getId(), ActionUtil.POST_GROUP_TOPIC,"", ActionLogType.GROUP_TOPIC.getValue(),groupTopic.getId()); + } + return result == 1; + } + + @Override + public ResultModel listByPage(Page page, String key, int groupId, int status, int memberId, int typeId) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key+"%"; + } + List list = groupTopicDao.listByPage(page, key,groupId,status,memberId,typeId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + @Transactional + public boolean update(Member member, GroupTopic groupTopic) { + GroupTopic findGroupTopic = this.findById(groupTopic.getId(),member); + ValidUtill.checkIsNull(findGroupTopic, Messages.TOPIC_NOT_EXISTS); + if(member.getId().intValue() != findGroupTopic.getMember().getId().intValue()){ + throw new OpeErrorException("没有权限"); + } + groupTopic.setArchiveId(findGroupTopic.getArchiveId()); + Archive archive = new Archive(); + try { + //复制属性值 + archive = archive.copy(groupTopic); + } catch (Exception e) { + e.printStackTrace(); + } + if (groupTopic.getTypeId() != null && !groupTopic.getTypeId().equals(findGroupTopic.getTypeId())){ + groupTopicDao.updateType(groupTopic.getId(),groupTopic.getTypeId()); + } + return archiveService.update(member,archive); + } + + @Override + @Transactional + public boolean delete(Member loginMember, int id) { + GroupTopic groupTopic = this.findById(id); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + int result = groupTopicDao.delete(id); + if(result == 1){ + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.GROUP_POST,id); + archiveService.delete(groupTopic.getArchiveId()); + groupTopicCommentService.deleteByTopic(id); + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_GROUP_TOPIC,"ID:"+groupTopic.getId()+",标题:"+groupTopic.getTitle()); + + } + return result == 1; + } + + + @Override + @Transactional + public boolean indexDelete(HttpServletRequest request, Member loginMember, int id) { + GroupTopic groupTopic = this.findById(id,loginMember); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + Group group = groupService.findById(groupTopic.getGroup().getId()); + ValidUtill.checkIsNull(group); + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + boolean isManager = false; + for (String manager : groupManagerArr){ + if(loginMember.getId().intValue() == Integer.parseInt(manager)){ + isManager = true; + } + } + if(loginMember.getId().intValue() == groupTopic.getMember().getId().intValue() || loginMember.getIsAdmin() > 0 || + isManager || loginMember.getId().intValue() == group.getCreator().intValue()){ + boolean flag = this.delete(loginMember,id); + return flag; + } + throw new OpeErrorException("没有权限"); + } + + @Override + public boolean audit(Member member, int id) { + GroupTopic groupTopic = this.findById(id,member); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + Group group = groupService.findById(groupTopic.getGroup().getId()); + ValidUtill.checkIsNull(group); + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + boolean isManager = false; + for (String manager : groupManagerArr){ + if(member.getId() == Integer.parseInt(manager)){ + isManager = true; + } + } + if(member.getId().intValue() == groupTopic.getMember().getId().intValue() || member.getIsAdmin() > 0 || + isManager || member.getId().intValue() == group.getCreator().intValue()){ + return groupTopicDao.audit(id) == 1; + } + throw new OpeErrorException("没有权限"); + } + + @Override + public boolean top(Member member, int id, int top) { + GroupTopic groupTopic = this.findById(id,member); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + Group group = groupService.findById(groupTopic.getGroup().getId()); + ValidUtill.checkIsNull(group); + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + boolean isManager = false; + for (String manager : groupManagerArr){ + if(member.getId() == Integer.parseInt(manager)){ + isManager = true; + } + } + if(member.getId().intValue() == groupTopic.getMember().getId().intValue() || member.getIsAdmin() > 0 || + isManager || member.getId().intValue() == group.getCreator().intValue()){ + return groupTopicDao.top(id,top) == 1; + } + throw new OpeErrorException("没有权限"); + } + + /** + * 将帖子设置精华 + * @param member + * @param id + * @param essence + * @return + */ + @Override + public boolean essence(Member member, int id, int essence) { + GroupTopic groupTopic = this.findById(id,member); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + Group group = groupService.findById(groupTopic.getGroup().getId()); + ValidUtill.checkIsNull(group); + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + boolean isManager = false; + for (String manager : groupManagerArr){ + if(member.getId() == Integer.parseInt(manager)){ + isManager = true; + } + } + if(member.getId().intValue() == groupTopic.getMember().getId().intValue() || member.getIsAdmin() > 0 || + isManager || member.getId().intValue() == group.getCreator().intValue()){ + return groupTopicDao.essence(id,essence) == 1; + } + throw new OpeErrorException("没有权限"); + } + + + @Override + public ResultModel favor(Member loginMember, int id) { + GroupTopic groupTopic = this.findById(id); + ValidUtill.checkIsNull(groupTopic, Messages.TOPIC_NOT_EXISTS); + ResultModel resultModel = archiveService.favor(loginMember,groupTopic.getArchiveId()); + if(resultModel.getCode() == 0){ + //帖子收到喜欢 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.GROUP_TOPIC_RECEIVED_LIKE, id); + //点赞之后发送系统信息 + messageService.diggDeal(loginMember.getId(),groupTopic.getMemberId(),AppTag.GROUP,MessageType.GROUP_TOPIC_LIKE,groupTopic.getId()); + }else if(resultModel.getCode() == 1){ + //帖子取消喜欢 + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.GROUP_TOPIC_RECEIVED_LIKE, id); + } + return resultModel; + } + + @Override + public List listByCustom(int gid, String sort, int num, int day,int thumbnail) { + return groupTopicDao.listByCustom(gid,sort,num,day,thumbnail); + } + + public GroupTopic atFormat(GroupTopic groupTopic){ + groupTopic.setContent(memberService.atFormat(groupTopic.getContent())); + return groupTopic; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicTypeServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicTypeServiceImpl.java" new file mode 100755 index 0000000..88f9185 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTopicTypeServiceImpl.java" @@ -0,0 +1,49 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.dao.group.IGroupTopicTypeDao; +import com.lxinet.jeesns.model.group.GroupTopicType; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.group.IGroupTopicTypeService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/9 下午1:17 + */ +@Service +public class GroupTopicTypeServiceImpl implements IGroupTopicTypeService { + @Resource + private IGroupTopicTypeDao groupTopicTypeDao; + + @Override + public GroupTopicType findById(int id) { + return groupTopicTypeDao.findById(id); + } + + @Override + public List list(int groupId) { + return groupTopicTypeDao.list(groupId); + } + + @Override + public boolean delete(Member member, int id) { + int result = groupTopicTypeDao.delete(id); + return result == 1; + } + + @Override + public boolean save(Member member, GroupTopicType groupTopicType) { + int result = groupTopicTypeDao.save(groupTopicType); + return result == 1; + } + + @Override + public boolean update(Member member, GroupTopicType groupTopicType) { + int result = groupTopicTypeDao.update(groupTopicType); + return result == 1; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTypeServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTypeServiceImpl.java" new file mode 100755 index 0000000..69619df --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/group/impl/GroupTypeServiceImpl.java" @@ -0,0 +1,60 @@ +package com.lxinet.jeesns.service.group.impl; + +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.dao.group.IGroupTypeDao; +import com.lxinet.jeesns.model.group.GroupType; +import com.lxinet.jeesns.service.group.IGroupTypeService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/15 下午1:17 + */ +@Service +public class GroupTypeServiceImpl implements IGroupTypeService { + @Resource + private IGroupTypeDao groupTypeDao; + + @Override + public GroupType findById(int id) { + return groupTypeDao.findById(id); + } + + @Override + public List list() { + return groupTypeDao.allList(); + } + + @Override + public boolean delete(int id) { + if (id == 1){ + throw new OpeErrorException("默认分类无法删除"); + } + int result = groupTypeDao.delete(id); + if (result == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean save(GroupType groupType) { + int result = groupTypeDao.save(groupType); + if (result == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean update(GroupType groupType) { + int result = groupTypeDao.update(groupType); + if (result == 0){ + throw new OpeErrorException(); + } + return true; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/ICheckinService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/ICheckinService.java" new file mode 100755 index 0000000..d0b32d7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/ICheckinService.java" @@ -0,0 +1,26 @@ +package com.lxinet.jeesns.service.member; + +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Checkin; + +import java.util.List; + + +/** + * 签到 + * Created by zchuanzhao on 18/8/20. + */ +public interface ICheckinService { + + List list(Page page, Integer memberId); + + List todayList(Page page); + + List todayContinueList(); + + Checkin todayCheckin(Integer memberId); + + Checkin yesterdayCheckin(Integer memberId); + + boolean save(Integer memberId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberFansService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberFansService.java" new file mode 100755 index 0000000..9863b24 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberFansService.java" @@ -0,0 +1,22 @@ +package com.lxinet.jeesns.service.member; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.MemberFans; + + +/** + * Created by zchuanzhao on 17/2/21. + */ +public interface IMemberFansService { + + boolean save(Integer whoFollowId, Integer followWhoId); + + boolean delete(Integer whoFollowId, Integer followWhoId); + + ResultModel followsList(Page page, Integer whoFollowId); + + ResultModel fansList(Page page, Integer followWhoId); + + MemberFans find(Integer whoFollowId, Integer followWhoId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberService.java" new file mode 100755 index 0000000..03e1190 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberService.java" @@ -0,0 +1,182 @@ +package com.lxinet.jeesns.service.member; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/29. + */ +public interface IMemberService { + + /** + * 会员登录 + * @param member + * @param request + * @return + */ + boolean login(Member member, HttpServletRequest request); + + Member manageLogin(Member member, HttpServletRequest request); + + Member findById(int id); + + /** + * 注册 + * @param member + * @param request + * @return + */ + ResultModel register(Member member, HttpServletRequest request); + + ResultModel update(Member member); + + ResultModel delete(int id); + + ResultModel listByPage(Page page, String key); + + /** + * 管理员列表 + * @param page + * @param key + * @return + */ + ResultModel managerList(Page page, String key); + + /** + * 管理员授权 + * @param name + * @return + */ + ResultModel managerAdd(Member loginMember, String name); + + /** + * 管理员取消 + * @param id + * @return + */ + ResultModel managerCancel(Member loginMember, int id); + + /** + * 会员启用、禁用操作 + * @param id + * @return + */ + ResultModel isenable(int id); + + /** + * 后台修改密码 + * @param id + * @param password + * @return + */ + ResultModel changepwd(Member loginMember, int id, String password); + + + /** + * 会员修改密码 + * @param loginMember + * @param oldPassword + * @param newPassword + * @return + */ + ResultModel changepwd(Member loginMember, String oldPassword, String newPassword); + + /** + * 修改头像 + * @param member + * @param oldAvatar 旧头像 + * @param request + * @return + */ + ResultModel updateAvatar(Member member, String oldAvatar, HttpServletRequest request); + + /** + * 修改会员级别信息 + * @param member 登录会员 + * @param name 昵称 + * @param sex 性别 + * @param introduce 个人说明 + * @return + */ + ResultModel editBaseInfo(Member member, String name, String sex, String introduce); + + /** + * 修改会员其他信息 + * @param loginMember 登录会员 + * @param birthday + * @param qq + * @param wechat + * @param contactPhone + * @param contactEmail + * @param website + * @return + */ + ResultModel editOtherInfo(Member loginMember, String birthday, String qq, String wechat, String contactPhone, + String contactEmail, String website); + + + Member findByName(String name); + + ResultModel sendEmailActiveValidCode(Member loginMember, HttpServletRequest request); + + /** + * 会员账号激活 + * @param loginMember + * @param randomCode + * @return + */ + ResultModel active(Member loginMember, String randomCode, HttpServletRequest request); + + Member findByNameAndEmail(String name, String email); + + ResultModel forgetpwd(String name, String email, HttpServletRequest request); + + ResultModel resetpwd(String email, String token, String password, HttpServletRequest request); + + /** + * 关注、取消关注 + * @param loginMember + * @param followWhoId + * @return + */ + ResultModel follows(Member loginMember, Integer followWhoId); + + /** + * 是否已关注 + * @param loginMember + * @param followWhoId + * @return + */ + ResultModel isFollowed(Member loginMember, Integer followWhoId); + + /** + * 获取私信中的联系人列表 + * @param page + * @param memberId + * @return + */ + List listContactMemberIds(Page page, Integer memberId); + + /** + * 获取私信中的联系人列表 + * @param page + * @param memberId + * @return + */ + ResultModel listContactMembers(Page page, Integer memberId); + + /** + * 更新会员积分 + * @param score + * @param memberId + * @return + */ + boolean updateScore(Integer score, Integer memberId); + + String atFormat(String content); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberTokenService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberTokenService.java" new file mode 100755 index 0000000..65c3b03 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMemberTokenService.java" @@ -0,0 +1,15 @@ +package com.lxinet.jeesns.service.member; + + +import com.lxinet.jeesns.model.member.MemberToken; + +/** + * Created by zchuanzhao on 2017/7/15. + */ +public interface IMemberTokenService { + + MemberToken getByToken(String token); + + void save(Integer memberId,String token); + +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMessageService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMessageService.java" new file mode 100755 index 0000000..def14fa --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IMessageService.java" @@ -0,0 +1,66 @@ +package com.lxinet.jeesns.service.member; + +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Message; + +/** + * 会员私信Service + * Created by zchuanzhao on 17/3/9. + */ +public interface IMessageService { + + ResultModel sentMsg(Integer fromMemberId, Integer toMemberId, String content); + + ResultModel systemMsgSave(Integer toMemberId, String content, Integer appTag, Integer type, Integer relateKeyId, Integer memberId, String description); + + ResultModel listByPage(Page page, Integer fromMemberId, Integer toMemberId); + + ResultModel messageRecords(Page page, Integer fromMemberId, Integer toMemberId); + + ResultModel systemMessage(Page page, Integer toMemberId, String basePath); + + /** + * 删除某个会员的所有聊天记录 + * @param memberId + * @return + */ + int deleteByMember(Integer memberId); + + /** + * 清空两个会员的聊天记录 + * @param fromMemberId + * @param toMemberId + * @return + */ + int clearMessageByMember(Integer fromMemberId, Integer toMemberId); + + /** + * 会员未读私信数量 + * @param memberId + * @return + */ + int countUnreadNum(int memberId); + + /** + * 系统未读信息数量 + * @param memberId + * @return + */ + int countSystemUnreadNum(int memberId); + + /** + * 设置已读状态 + * @param fromMemberId + * @param toMemberId + * @return + */ + int setRead(Integer fromMemberId, Integer toMemberId); + + void atDeal(int loginMemberId,String content,int appTag,MessageType messageType,int relateKeyId); + + void diggDeal(int loginMemberId,int toMemberId, String content, int appTag,MessageType messageType,int relateKeyId); + + void diggDeal(int loginMemberId,int toMemberId, int appTag,MessageType messageType,int relateKeyId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IScoreDetailService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IScoreDetailService.java" new file mode 100755 index 0000000..054ab4c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IScoreDetailService.java" @@ -0,0 +1,42 @@ +package com.lxinet.jeesns.service.member; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.ScoreDetail; + + +/** + * Created by zchuanzhao on 17/3/24. + */ +public interface IScoreDetailService { + + ResultModel list(Page page, Integer memberId); + + ResultModel save(ScoreDetail scoreDetail); + + /** + * 是否能奖励,true表示可以奖励 + * @param memberId + * @param scoreRuleId + * @param type + * @return + */ + boolean canBonus(int memberId, int scoreRuleId, String type); + + /** + * 根据会员、获取奖励的外键、奖励规则ID获取奖励激励,不包括foreign_id=0 + * @param memberId + * @param scoreRuleId + * @param forgignId + * @return + */ + ScoreDetail findByForeignAndRule(int memberId, int scoreRuleId, int forgignId); + + void cancel(int scoreDetailId); + + void scoreBonus(int memberId, int scoreRuleId); + + void scoreBonus(int memberId, int scoreRuleId, int foreignId); + + void scoreCancelBonus(int memberId, int scoreRuleId, int foreignId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IValidateCodeService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IValidateCodeService.java" new file mode 100755 index 0000000..37590a6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/IValidateCodeService.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.service.member; + + +import com.lxinet.jeesns.model.member.ValidateCode; + +/** + * 验证码Service接口 + * Created by zchuanzhao on 17/01/20. + */ +public interface IValidateCodeService { + + boolean save(ValidateCode validateCode); + + /** + * 验证,30分钟以内有效 + * @param email + * @param code + * @param type + * @return + */ + ValidateCode valid(String email, String code, int type); + + boolean used(Integer id); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/CheckinServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/CheckinServiceImpl.java" new file mode 100755 index 0000000..1a804fb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/CheckinServiceImpl.java" @@ -0,0 +1,78 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.member.ICheckinDao; +import com.lxinet.jeesns.model.member.Checkin; +import com.lxinet.jeesns.service.member.ICheckinService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 签到 + * Created by zchuanzhao on 18/8/20. + */ +@Service +public class CheckinServiceImpl implements ICheckinService { + @Resource + private ICheckinDao checkinDao; + @Resource + private IScoreDetailService scoreDetailService; + + @Override + public List list(Page page, Integer memberId) { + List list = checkinDao.listByPage(page,memberId); + return list; + } + + @Override + public List todayList(Page page) { + List list = checkinDao.todayList(page); + return list; + } + + @Override + public List todayContinueList() { + return checkinDao.todayContinueList(); + } + + @Override + public Checkin todayCheckin(Integer memberId) { + return checkinDao.todayCheckin(memberId); + } + + @Override + public Checkin yesterdayCheckin(Integer memberId) { + return checkinDao.yesterdayCheckin(memberId); + } + + @Override + @Transactional + public boolean save(Integer memberId) { + synchronized (this){ + if (null != todayCheckin(memberId)){ + throw new OpeErrorException("今天已经签到过了"); + } + Checkin checkin = new Checkin(); + checkin.setMemberId(memberId); + Checkin yesterdayCheckin = yesterdayCheckin(memberId); + if (null != yesterdayCheckin){ + checkin.setContinueDay(yesterdayCheckin.getContinueDay() + 1); + }else { + checkin.setContinueDay(1); + } + boolean result = checkinDao.save(checkin) == 1; + if (result){ + scoreDetailService.scoreBonus(memberId, ScoreRuleConsts.CHECKIN, checkin.getId()); + } + return result; + } + + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberFansServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberFansServiceImpl.java" new file mode 100755 index 0000000..6e3cd07 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberFansServiceImpl.java" @@ -0,0 +1,63 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.member.IMemberFansDao; +import com.lxinet.jeesns.model.member.MemberFans; +import com.lxinet.jeesns.service.member.IMemberFansService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/21. + */ +@Service("memberFansServiceImpl") +public class MemberFansServiceImpl implements IMemberFansService { + @Resource + private IMemberFansDao memberFansDao; + + @Override + public MemberFans find(Integer whoFollowId, Integer followWhoId) { + return memberFansDao.find(whoFollowId,followWhoId); + } + + /** + * 关注 + */ + @Override + public boolean save(Integer whoFollowId, Integer followWhoId) { + if(memberFansDao.find(whoFollowId,followWhoId) != null){ + throw new OpeErrorException("已经关注"); + } + return memberFansDao.save(whoFollowId,followWhoId) == 1; + } + + /** + * 取消关注 + */ + @Override + public boolean delete(Integer whoFollowId, Integer followWhoId) { + return memberFansDao.delete(whoFollowId,followWhoId) > 0; + } + + @Override + public ResultModel followsList(Page page, Integer whoFollowId) { + List list = memberFansDao.followsList(page, whoFollowId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public ResultModel fansList(Page page, Integer followWhoId) { + List list = memberFansDao.fansList(page, followWhoId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberServiceImpl.java" new file mode 100755 index 0000000..fa326af --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberServiceImpl.java" @@ -0,0 +1,523 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.dao.member.IMemberDao; +import com.lxinet.jeesns.common.utils.EmailSendUtil; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.member.ValidateCode; +import com.lxinet.jeesns.service.member.IMemberFansService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.member.IValidateCodeService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IConfigService; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ConfigUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + + +/** + * Created by zchuanzhao on 16/9/29. + */ +@Service("memberService") +public class MemberServiceImpl implements IMemberService { + @Resource + private IMemberDao memberDao; + @Resource + private IValidateCodeService validateCodeService; + @Resource + private IConfigService configService; + @Resource + private IActionLogService actionLogService; + @Resource + private IMemberFansService memberFansService; + @Resource + private IScoreDetailService scoreDetailService; + + @Override + public boolean login(Member member, HttpServletRequest request) { + Map config = configService.getConfigToMap(); + if("0".equals(config.get(ConfigUtil.MEMBER_LOGIN_OPEN))){ + throw new OpeErrorException(Messages.LOGIN_CLOSED); + } + String password = member.getPassword(); + member.setPassword(Md5Util.getMD5Code(member.getPassword())); + Member findMember = memberDao.login(member); + if (null == findMember){ + actionLogService.save(IpUtil.getIpAddress(request),null,ActionUtil.MEMBER_LOGIN_ERROR,"登录用户名:"+member.getName()+",登录密码:"+password); + throw new OpeErrorException(Messages.LOGIN_INFO_WRONG); + } + if(findMember.getStatus() == -1){ + throw new OpeErrorException(Messages.ACCOUNT_IS_DISABLED); + } + //登录成功更新状态 + memberDao.loginSuccess(findMember.getId(), IpUtil.getIpAddress(request)); + findMember = this.findById(findMember.getId()); + MemberUtil.setLoginMember(request,findMember); + actionLogService.save(findMember.getCurrLoginIp(),findMember.getId(), ActionUtil.MEMBER_LOGIN); + //登录奖励 + scoreDetailService.scoreBonus(findMember.getId(), ScoreRuleConsts.LOGIN); + return true; + } + + @Override + public Member manageLogin(Member member,HttpServletRequest request) { + String password = member.getPassword(); + member.setPassword(Md5Util.getMD5Code(member.getPassword())); + Member findMember = memberDao.manageLogin(member); + if(findMember != null){ + //登录成功更新状态 + memberDao.loginSuccess(findMember.getId(), IpUtil.getIpAddress(request)); + findMember = this.findById(findMember.getId()); + }else { + actionLogService.save(IpUtil.getIpAddress(request),null,ActionUtil.MEMBER_LOGIN_ERROR,"登录用户名:"+member.getName()+",登录密码:"+password); + } + return findMember; + } + + @Override + public Member findById(int id) { + return memberDao.findById(id); + } + + @Override + @Transactional + public ResultModel register(Member member, HttpServletRequest request) { + if(memberDao.findByName(member.getName()) != null){ + throw new OpeErrorException(Messages.USERNAME_EXISTS); + } + if(memberDao.findByEmail(member.getEmail()) != null){ + throw new OpeErrorException(Messages.EMAIL_EXISTS); + } + member.setRegip(IpUtil.getIpAddress(request)); + member.setPassword(Md5Util.getMD5Code(member.getPassword())); + member.setAvatar(Const.DEFAULT_AVATAR); + if(memberDao.register(member) == 1){ + actionLogService.save(member.getRegip(),member.getId(),ActionUtil.MEMBER_REG); + //注册奖励 + scoreDetailService.scoreBonus(member.getId(),ScoreRuleConsts.REG_INIT); + return new ResultModel(2,"注册成功",request.getServletContext().getContextPath()+"/member/login"); + } + return new ResultModel(-1,"注册失败"); + } + + @Override + public ResultModel update(Member member) { + if(memberDao.update(member) == 1){ + return new ResultModel(3,"更新成功"); + } + return new ResultModel(-1,"更新失败"); + } + + @Override + public ResultModel delete(int id) { + if(memberDao.delete(id) == 1){ + return new ResultModel(1,"删除成功"); + } + return new ResultModel(-1,"删除失败"); + } + + @Override + public ResultModel listByPage(Page page, String key) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key.trim()+"%"; + } + List list = memberDao.listByPage(page, key); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public ResultModel managerList(Page page, String key) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key.trim()+"%"; + } + List list = memberDao.managerList(page, key); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public ResultModel managerAdd(Member loginMember, String name) { + int isAdmin = 1; + Member findMember = this.findByName(name); + if(findMember == null){ + return new ResultModel(-1,"会员["+name+"]不存在"); + } + //为了旧系统升级使用 + if(findMember.getId() == 1 && findMember.getIsAdmin() == 1){ + isAdmin = 2; + } + if(isAdmin == 1 && loginMember.getId().intValue() == findMember.getId().intValue()){ + return new ResultModel(-1,"不能操作自己的账号"); + } + if(isAdmin != 2 && findMember.getIsAdmin() > 0){ + return new ResultModel(-1,"会员["+name+"]已经是管理员,无需再授权"); + } + //管理员只能对授权为普通管理员 + memberDao.managerAddAndCancel(isAdmin,findMember.getId()); + if(isAdmin == 2){ + loginMember.setIsAdmin(isAdmin); + } + return new ResultModel(3,"操作成功"); + } + + @Override + public ResultModel managerCancel(Member loginMember, int id) { + Member findMember = this.findById(id); + if(loginMember.getId().intValue() == findMember.getId().intValue()){ + return new ResultModel(-1,"不能操作自己的账号"); + } + if(findMember == null){ + return new ResultModel(-1,"会员不存在"); + } + memberDao.managerAddAndCancel(0,findMember.getId()); + return new ResultModel(1,"操作成功"); + } + + + /** + * 会员启用、禁用操作 + * @param id + * @return + */ + @Override + public ResultModel isenable(int id) { + if(memberDao.isenable(id) == 1){ + return new ResultModel(1,"操作成功"); + } + return new ResultModel(-1,"操作失败"); + } + + /** + * 后台修改密码 + * @param id + * @param password + * @return + */ + @Override + public ResultModel changepwd(Member loginMember, int id, String password) { + if(StringUtils.isBlank(password)){ + throw new OpeErrorException(Messages.PASSWORD_NOT_EMPTY); + } + if(password.length() < 6){ + return new ResultModel(-1,"密码不能少于6个字符"); + } + password = Md5Util.getMD5Code(password); + if(memberDao.changepwd(id,password) == 1){ + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(),ActionUtil.CHANGE_PWD); + return new ResultModel(3,"密码修改成功"); + } + return new ResultModel(-1,"密码修改失败"); + } + + /** + * 会员修改密码 + * @param loginMember + * @param oldPassword + * @param newPassword + * @return + */ + @Override + public ResultModel changepwd(Member loginMember, String oldPassword, String newPassword) { + if(StringUtils.isBlank(newPassword)){ + throw new OpeErrorException(Messages.PASSWORD_NOT_EMPTY); + } + if(newPassword.length() < 6){ + return new ResultModel(-1,"密码不能少于6个字符"); + } + oldPassword = Md5Util.getMD5Code(oldPassword); + Member member = memberDao.findById(loginMember.getId()); + if(!oldPassword.equals(member.getPassword())){ + return new ResultModel(-1,"旧密码错误"); + } + return this.changepwd(loginMember,member.getId(),newPassword); + } + + /** + * 修改头像 + * @param member + * @param oldAvatar 旧头像 + * @param request + * @return + */ + @Override + public ResultModel updateAvatar(Member member, String oldAvatar, HttpServletRequest request) { + int result = memberDao.updateAvatar(member.getId(),member.getAvatar()); + if(result == 1){ + if(StringUtils.isNotEmpty(oldAvatar) && !Const.DEFAULT_AVATAR.equals(oldAvatar)){ + //头像真实路径 + String realPath = request.getServletContext().getRealPath(oldAvatar); + //删除旧头像 + File file = new File(realPath); + if(file.exists()){ + file.delete(); + } + } + return new ResultModel(0,"头像修改成功"); + } + return new ResultModel(-1,"头像修改失败,请重试"); + } + + /** + * 修改会员基本信息 + * @param member 登录会员 + * @param name 昵称 + * @param sex 性别 + * @param introduce 个人说明 + * @return + */ + @Override + public ResultModel editBaseInfo(Member member, String name, String sex, String introduce) { + if(!StringUtils.checkNickname(member.getName())){ + return new ResultModel(-1,"昵称只能由中文、字母、数字、下划线(_)或者短横线(-)组成"); + } + if (name != null && !name.equals(member.getName())){ + if(this.findByName(name) != null){ + return new ResultModel(-1,"昵称已被占用,请更换一个"); + } + } + member.setName(name); + member.setSex(sex); + member.setIntroduce(introduce); + if(memberDao.editBaseInfo(member) == 1){ + return new ResultModel(0,"修改成功"); + } + return new ResultModel(-1,"修改失败"); + } + + /** + * 修改会员其他信息 + * @param loginMember 登录会员 + * @param birthday + * @param qq + * @param wechat + * @param contactPhone + * @param contactEmail + * @param website + * @return + */ + @Override + public ResultModel editOtherInfo(Member loginMember, String birthday, String qq, String wechat, String contactPhone, + String contactEmail, String website) { + loginMember.setBirthday(birthday); + loginMember.setQq(qq); + loginMember.setWechat(wechat); + loginMember.setContactPhone(contactPhone); + loginMember.setContactEmail(contactEmail); + loginMember.setWebsite(website); + if(memberDao.editOtherInfo(loginMember) == 1){ + return new ResultModel(0,"修改成功"); + } + return new ResultModel(-1,"修改失败"); + } + + @Override + public Member findByName(String name) { + return memberDao.findByName(name); + } + + @Override + public ResultModel sendEmailActiveValidCode(Member loginMember, HttpServletRequest request) { + loginMember = this.findById(loginMember.getId()); + if(loginMember.getIsActive() == 1){ + return new ResultModel(-1,"您的账号已经激活,无需重复激活"); + } + String randomCode = RandomCodeUtil.randomCode6(); + ValidateCode validateCode = new ValidateCode(loginMember.getEmail(),randomCode,2); + if(validateCodeService.save(validateCode)){ + if(EmailSendUtil.activeMember(request, loginMember.getEmail(),randomCode)){ + return new ResultModel(0,"邮件发送成功"); + } + } + return new ResultModel(-1,"邮件发送失败,请重试"); + } + + @Transactional + @Override + public ResultModel active(Member loginMember, String randomCode, HttpServletRequest request) { + try { + loginMember = this.findById(loginMember.getId()); + if(loginMember.getIsActive() == 1){ + return new ResultModel(-1,"您的账号已经激活,无需重复激活"); + } + ValidateCode validateCode = validateCodeService.valid(loginMember.getEmail(),randomCode,2); + if(validateCode == null){ + return new ResultModel(-1,"验证码错误"); + } + + if(validateCodeService.used(validateCode.getId())){ + if(memberDao.active(loginMember.getId()) == 1){ + loginMember.setIsActive(1); + MemberUtil.setLoginMember(request,loginMember); + //邮箱认证奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.EMAIL_AUTHENTICATION); + return new ResultModel(2,"激活成功,正在进入会员中心...",request.getContextPath()+"/member/"); + } + } + return new ResultModel(-1,"激活失败,请重试"); + }catch (Exception e){ + e.printStackTrace(); + return new ResultModel(-1,"激活失败,请重试"); + } + } + + @Override + public Member findByNameAndEmail(String name, String email) { + return memberDao.findByNameAndEmail(name,email); + } + + @Override + public ResultModel forgetpwd(String name, String email, HttpServletRequest request) { + Member member = this.findByNameAndEmail(name,email); + if(member == null){ + return new ResultModel(-1,"会员不存在"); + } + String randomCode = RandomCodeUtil.uuid(); + ValidateCode validateCode = new ValidateCode(email,randomCode,1); + if(validateCodeService.save(validateCode)){ + if(EmailSendUtil.forgetpwd(request, email,randomCode)){ + return new ResultModel(0,"邮件发送成功"); + } + } + return new ResultModel(-1,"邮件发送失败,请重试"); + } + + @Transactional + @Override + public ResultModel resetpwd(String email, String token, String password, HttpServletRequest request) { + Member member = memberDao.findByEmail(email); + if(member == null){ + return new ResultModel(-1,"会员不存在"); + } + ValidateCode validateCode = validateCodeService.valid(email,token,1); + if(validateCode == null){ + return new ResultModel(-1,"验证码错误"); + } + password = Md5Util.getMD5Code(password); + if(memberDao.changepwd(member.getId(),password) == 1){ + validateCodeService.used(validateCode.getId()); + actionLogService.save(IpUtil.getIpAddress(request),member.getId(), ActionUtil.FIND_PWD); + return new ResultModel(2,"密码重置成功",request.getContextPath()+"/member/login"); + } + return new ResultModel(-1,"密码重置失败"); + } + + @Transactional + @Override + public ResultModel follows(Member loginMember, Integer followWhoId) { + if(loginMember == null){ + throw new NotLoginException(); + } + if(this.findById(followWhoId) == null){ + return new ResultModel(-1,"关注的会员不存在"); + } + if(loginMember.getId().intValue() == followWhoId.intValue()){ + return new ResultModel(-1,"不能关注自己"); + } + if(memberFansService.find(loginMember.getId(),followWhoId) == null){ + //关注 + memberFansService.save(loginMember.getId(),followWhoId); + memberDao.follows(loginMember.getId()); + memberDao.fans(followWhoId); + return new ResultModel(1,"关注成功"); + }else { + //取消关注 + memberFansService.delete(loginMember.getId(),followWhoId); + memberDao.follows(loginMember.getId()); + memberDao.fans(followWhoId); + return new ResultModel(0,"取消关注成功"); + } + } + + @Override + public ResultModel isFollowed(Member loginMember, Integer followWhoId) { + int loginMemberId = 0; + if(loginMember != null){ + loginMemberId = loginMember.getId().intValue(); + } + if(memberFansService.find(loginMemberId,followWhoId) == null){ + return new ResultModel(0,"未关注"); + }else { + return new ResultModel(1,"已关注"); + } + } + + @Override + public List listContactMemberIds(Page page, Integer memberId) { + List list = memberDao.listContactMemberIds(page, memberId); + return list; + } + + + /** + * 获取私信中的联系人列表 + * @param page + * @param memberId + * @return + */ + @Override + public ResultModel listContactMembers(Page page, Integer memberId) { + List memberIdList = this.listContactMemberIds(page,memberId); + List list = new ArrayList<>(); + if(memberIdList.size() > 0){ + List idList = new ArrayList<>(); + String idString = ""; + for (Member member : memberIdList){ + if (member != null){ + idList.add(member.getId()); + idString += member.getId() + ","; + } + } + if (idString.length() > 0){ + idString = idString.substring(0,idString.length()-1); + } + if (StringUtils.isNotEmpty(idString)){ + list = memberDao.listContactMembers(memberId, idList, idString); + } + } + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + /** + * 更新会员积分 + * @param score + * @param memberId + * @return + */ + @Override + public boolean updateScore(Integer score, Integer memberId) { + return memberDao.updateScore(score,memberId) == 1; + } + + @Override + public String atFormat(String content) { + List nameList = AtUtil.getAtNameList(content); + for (String name : nameList){ + Member member = this.findByName(name); + if (member != null){ + content = AtUtil.replaceAt(content,name,member.getId()); + } + } + return content; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberTokenServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberTokenServiceImpl.java" new file mode 100755 index 0000000..6e7e918 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MemberTokenServiceImpl.java" @@ -0,0 +1,31 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.dao.member.IMemberTokenDao; +import com.lxinet.jeesns.model.member.MemberToken; +import com.lxinet.jeesns.service.member.IMemberTokenService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.Calendar; +import java.util.Date; + +/** + * Created by zchuanzhao on 16/9/29. + */ +@Service("memberTokenService") +public class MemberTokenServiceImpl implements IMemberTokenService { + @Resource + private IMemberTokenDao memberTokenDao; + + @Override + public MemberToken getByToken(String token) { + return memberTokenDao.getByToken(token); + } + + @Override + public void save(Integer memberId,String token) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.HOUR_OF_DAY,1); + memberTokenDao.save(memberId,token,calendar.getTime()); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MessageServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MessageServiceImpl.java" new file mode 100755 index 0000000..c866453 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/MessageServiceImpl.java" @@ -0,0 +1,135 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.AtUtil; +import com.lxinet.jeesns.dao.member.IMessageDao; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.member.Message; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/9. + */ +@Service("messageService") +public class MessageServiceImpl implements IMessageService { + @Resource + private IMessageDao messageDao; + @Resource + private IMemberService memberService; + + @Override + public ResultModel sentMsg(Integer fromMemberId, Integer toMemberId, String content) { + if(fromMemberId.intValue() == toMemberId.intValue()){ + return new ResultModel(-1, "不能发信息给自己"); + } + Message message = new Message(); + message.setFromMemberId(fromMemberId); + message.setToMemberId(toMemberId); + message.setContent(content); + if(messageDao.sentMsg(message) == 1){ + return new ResultModel(0, "信息发送成功"); + } + return new ResultModel(-1, "信息发送失败"); + } + + @Override + public ResultModel systemMsgSave(Integer toMemberId, String content, Integer appTag, Integer type, Integer relateKeyId, Integer loginMemberId, String description) { + Message message = new Message(); + message.setToMemberId(toMemberId); + message.setContent(content); + message.setAppTag(appTag); + message.setRelateKeyId(relateKeyId); + message.setType(type); + message.setMemberId(loginMemberId); + message.setDescription(description); + if(messageDao.systemMsgSave(message) == 1){ + return new ResultModel(0, "信息发送成功"); + } + return new ResultModel(-1, "信息发送失败"); + } + + @Override + public ResultModel listByPage(Page page, Integer fromMemberId, Integer toMemberId) { + List list = messageDao.listByPage(page,fromMemberId, toMemberId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public ResultModel messageRecords(Page page, Integer fromMemberId, Integer toMemberId) { + List list = messageDao.messageRecords(page, fromMemberId, toMemberId); + ResultModel model = new ResultModel(0, page); + model.setData(list); + //设置该会员聊天记录为已读 + this.setRead(fromMemberId,toMemberId); + return model; + } + + @Override + public ResultModel systemMessage(Page page, Integer toMemberId, String basePath) { + List list = messageDao.systemMessage(page, toMemberId,basePath); + ResultModel model = new ResultModel(0, page); + model.setData(list); + //设置该会员聊天记录为已读 + this.setRead(null,toMemberId); + return model; + } + + @Override + public int deleteByMember(Integer memberId) { + return messageDao.deleteByMember(memberId); + } + + @Override + public int clearMessageByMember(Integer fromMemberId, Integer toMemberId) { + return messageDao.clearMessageByMember(fromMemberId, toMemberId); + } + + @Override + public int countUnreadNum(int memberId) { + return messageDao.countUnreadNum(memberId); + } + + @Override + public int countSystemUnreadNum(int memberId) { + return messageDao.countSystemUnreadNum(memberId); + } + + @Override + public int setRead(Integer fromMemberId, Integer toMemberId) { + return messageDao.setRead(fromMemberId,toMemberId); + } + + @Override + public void atDeal(int loginMemberId,String content,int appTag,MessageType messageType,int relateKeyId) { + List atMemberList = AtUtil.getAtNameList(content); + if (atMemberList.size() > 0){ + for (String name : atMemberList){ + Member findAtMember = memberService.findByName(name); + if (findAtMember != null && loginMemberId != findAtMember.getId()){ + this.systemMsgSave(findAtMember.getId(),content,appTag,messageType.getCode(),relateKeyId,loginMemberId,messageType.getContent()); + } + } + } + } + + @Override + public void diggDeal(int loginMemberId, int toMemberId,String content, int appTag, MessageType messageType, int relateKeyId) { + if (loginMemberId != toMemberId){ + this.systemMsgSave(toMemberId,content,appTag,messageType.getCode(),relateKeyId,loginMemberId,messageType.getContent()); + } + } + + @Override + public void diggDeal(int loginMemberId, int toMemberId, int appTag, MessageType messageType, int relateKeyId) { + diggDeal(loginMemberId,toMemberId,null,appTag,messageType,relateKeyId); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ScoreDetailServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ScoreDetailServiceImpl.java" new file mode 100755 index 0000000..011f824 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ScoreDetailServiceImpl.java" @@ -0,0 +1,143 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.member.IScoreDetailDao; +import com.lxinet.jeesns.model.member.ScoreDetail; +import com.lxinet.jeesns.model.system.ScoreRule; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IScoreRuleService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/21. + */ +@Service +public class ScoreDetailServiceImpl implements IScoreDetailService { + @Resource + private IScoreDetailDao scoreDetailDao; + @Resource + private IScoreRuleService scoreRuleService; + @Resource + private IMemberService memberService; + + @Override + public ResultModel list(Page page, Integer memberId) { + List list = scoreDetailDao.listByPage(page,memberId); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public ResultModel save(ScoreDetail scoreDetail) { + if(scoreDetailDao.save(scoreDetail) > 0){ + return new ResultModel(0); + } + return new ResultModel(-1,"保存失败"); + } + + /** + * 是否能奖励,true表示可以奖励 + * @param memberId + * @param scoreRuleId + * @param type + * @return + */ + @Override + public boolean canBonus(int memberId, int scoreRuleId, String type) { + List list = scoreDetailDao.canBonus(memberId,scoreRuleId,type); + return list.size() == 0; + } + + /** + * 根据会员、获取奖励的外键、奖励规则ID获取奖励激励,不包括foreign_id=0 + * @param memberId + * @param scoreRuleId + * @param forgignId + * @return + */ + @Override + public ScoreDetail findByForeignAndRule(int memberId, int scoreRuleId, int forgignId) { + return scoreDetailDao.findByForeignAndRule(memberId,scoreRuleId,forgignId); + } + + @Override + public void cancel(int scoreDetailId) { + scoreDetailDao.cancel(scoreDetailId); + } + + + + /** + * 根据积分规则奖励 + * @param memberId + * @param scoreRuleId + */ + @Override + public void scoreBonus(int memberId, int scoreRuleId) { + this.scoreBonus(memberId,scoreRuleId,0); + } + + + /** + * 根据积分规则奖励 + * @param memberId + * @param scoreRuleId + * @param foreignId + */ + @Override + public void scoreBonus(int memberId, int scoreRuleId, int foreignId) { + ScoreRule scoreRule = scoreRuleService.findById(scoreRuleId); + if(scoreRule != null){ + if(scoreRule.getScore() != 0){ + String type = scoreRule.getType(); + boolean canBonus = true; + //unlimite为不限制奖励次数 + if(!"unlimite".equals(type)){ + canBonus = this.canBonus(memberId, scoreRuleId, type); + } + if(canBonus){ + //每个会员、每个奖励规则、每个外键(不包含0)只能奖励一次 + if(this.findByForeignAndRule(memberId, scoreRuleId, foreignId) == null){ + memberService.updateScore(scoreRule.getScore(), memberId); + ScoreDetail scoreDetail = new ScoreDetail(); + scoreDetail.setType(1); + scoreDetail.setMemberId(memberId); + scoreDetail.setForeignId(foreignId); + scoreDetail.setScore(scoreRule.getScore()); + String remark = scoreRule.getName(); + if(foreignId > 0){ + remark += " #"+foreignId; + } + scoreDetail.setRemark(remark); + scoreDetail.setScoreRuleId(scoreRuleId); + this.save(scoreDetail); + } + + } + } + } + } + + @Override + public void scoreCancelBonus(int memberId, int scoreRuleId, int foreignId) { + ScoreDetail scoreDetail = this.findByForeignAndRule(memberId, scoreRuleId, foreignId); + if(scoreDetail != null){ + this.cancel(scoreDetail.getId()); + //扣除积分 + memberService.updateScore(-scoreDetail.getScore(), memberId); + ScoreDetail scoreDetailCancel = new ScoreDetail(); + scoreDetailCancel.setType(2); + scoreDetailCancel.setMemberId(memberId); + scoreDetailCancel.setForeignId(foreignId); + scoreDetailCancel.setScore(-scoreDetail.getScore()); + scoreDetailCancel.setRemark("撤销积分奖励 #"+scoreDetail.getId()); + scoreDetailCancel.setScoreRuleId(scoreRuleId); + this.save(scoreDetailCancel); + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ValidateCodeServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ValidateCodeServiceImpl.java" new file mode 100755 index 0000000..da0b650 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/member/impl/ValidateCodeServiceImpl.java" @@ -0,0 +1,32 @@ +package com.lxinet.jeesns.service.member.impl; + +import com.lxinet.jeesns.dao.member.IValidateCodeDao; +import com.lxinet.jeesns.model.member.ValidateCode; +import com.lxinet.jeesns.service.member.IValidateCodeService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/1/20. + */ +@Service("validateCodeService") +public class ValidateCodeServiceImpl implements IValidateCodeService { + @Resource + private IValidateCodeDao validateCodeDao; + + @Override + public boolean save(ValidateCode validateCode) { + return validateCodeDao.save(validateCode) == 1; + } + + @Override + public ValidateCode valid(String email, String code, int type) { + return validateCodeDao.valid(email,code,type); + } + + @Override + public boolean used(Integer id) { + return validateCodeDao.used(id) == 1; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumCommentService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumCommentService.java" new file mode 100755 index 0000000..ef63e9a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumCommentService.java" @@ -0,0 +1,25 @@ +package com.lxinet.jeesns.service.picture; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.PictureAlbumComment; + + +/** + * + * @author zchuanzhao + * @date 2017/11/17 + */ +public interface IPictureAlbumCommentService { + + PictureAlbumComment findById(int id); + + boolean save(Member loginMember, String content, Integer pictureAlbumId); + + boolean delete(Member loginMember, int id); + + ResultModel listByPictureAlbum(Page page, int pictureAlbumId); + + void deleteByPictureAlbum(Integer pictureAlbumId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumFavorService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumFavorService.java" new file mode 100755 index 0000000..f92aa3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumFavorService.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.service.picture; + + +import com.lxinet.jeesns.model.picture.PictureAlbumFavor; + +/** + * 图片点赞Service接口 + * Created by zchuanzhao on 2017/11/17. + */ +public interface IPictureAlbumFavorService { + + PictureAlbumFavor find(Integer pictureAlbumId, Integer memberId); + + void save(Integer pictureAlbumId, Integer memberId); + + void delete(Integer pictureAlbumId, Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumService.java" new file mode 100755 index 0000000..919d032 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureAlbumService.java" @@ -0,0 +1,25 @@ +package com.lxinet.jeesns.service.picture; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.picture.PictureAlbum; + +/** + * Created by zchuanzhao on 2017/11/03. + */ +public interface IPictureAlbumService { + + ResultModel listByMember(Integer memberId); + + ResultModel listByPage(Page page); + + boolean delete(Integer id); + + boolean save(PictureAlbum pictureAlbum); + + boolean update(PictureAlbum pictureAlbum); + + PictureAlbum findWeiboAlbum(Integer memberId); + + PictureAlbum findById(Integer id); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureCommentService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureCommentService.java" new file mode 100755 index 0000000..d677415 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureCommentService.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.service.picture; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.PictureComment; + + +/** + * Created by zchuanzhao on 2017/11/14. + */ +public interface IPictureCommentService { + + PictureComment findById(int id); + + boolean save(Member loginMember, String content, Integer pictureId); + + boolean delete(Member loginMember, int id); + + ResultModel listByPicture(Page page, int pictureId); + + void deleteByPicture(Integer pictureId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureFavorService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureFavorService.java" new file mode 100755 index 0000000..495d803 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureFavorService.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.service.picture; + + +import com.lxinet.jeesns.model.picture.PictureFavor; + +/** + * 图片点赞Service接口 + * Created by zchuanzhao on 2017/11/16. + */ +public interface IPictureFavorService { + + PictureFavor find(Integer pictureId, Integer memberId); + + void save(Integer pictureId, Integer memberId); + + void delete(Integer pictureId, Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureService.java" new file mode 100755 index 0000000..8c12335 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/IPictureService.java" @@ -0,0 +1,33 @@ +package com.lxinet.jeesns.service.picture; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.Picture; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/7. + */ +public interface IPictureService { + + List find(Integer foreignId); + + Picture findById(Integer pictureId,int loginMemberId); + + ResultModel listByPage(Page page, int loginMemberId); + + ResultModel listByAlbum(Page page, Integer pictureAlbumId, int loginMemberId); + + int deleteByForeignId(HttpServletRequest request, Integer foreignId); + + boolean delete(HttpServletRequest request, Integer pictureId); + + int save(Picture picture); + + int update(Integer foreignId, String ids,String description); + + ResultModel favor(Member loginMember, int pictureId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumCommentServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumCommentServiceImpl.java" new file mode 100755 index 0000000..8839afb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumCommentServiceImpl.java" @@ -0,0 +1,86 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.picture.IPictureAlbumCommentDao; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.PictureAlbum; +import com.lxinet.jeesns.model.picture.PictureAlbumComment; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.picture.IPictureAlbumCommentService; +import com.lxinet.jeesns.service.picture.IPictureAlbumService; +import com.sun.org.apache.regexp.internal.RE; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * + * @author zchuanzhao + * @date 2017/11/17 + */ +@Service("pictureAlbumCommentService") +public class PictureAlbumCommentServiceImpl implements IPictureAlbumCommentService { + @Resource + private IPictureAlbumCommentDao pictureAlbumCommentDao; + @Resource + private IPictureAlbumService pictureAlbumService; + @Resource + private IMemberService memberService; + + @Override + public PictureAlbumComment findById(int id) { + PictureAlbumComment pictureAlbumComment = pictureAlbumCommentDao.findById(id); + atFormat(pictureAlbumComment); + return pictureAlbumComment; + } + + @Override + public boolean save(Member loginMember, String content, Integer pictureAlbumId) { + PictureAlbum pictureAlbum = pictureAlbumService.findById(pictureAlbumId); + ValidUtill.checkIsNull(pictureAlbum, Messages.PICTURE_ALBUM_NOT_EXISTS); + PictureAlbumComment pictureAlbumComment = new PictureAlbumComment(); + pictureAlbumComment.setMemberId(loginMember.getId()); + pictureAlbumComment.setPictureAlbumId(pictureAlbumId); + pictureAlbumComment.setContent(content); + int result = pictureAlbumCommentDao.save(pictureAlbumComment); + return result == 1; + } + + @Override + public ResultModel listByPictureAlbum(Page page, int pictureAlbumId) { + List list = pictureAlbumCommentDao.listByPictureAlbum(page, pictureAlbumId); + atFormat(list); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public void deleteByPictureAlbum(Integer pictureAlbumId) { + pictureAlbumCommentDao.deleteByPictureAlbum(pictureAlbumId); + } + + @Override + public boolean delete(Member loginMember, int id) { + PictureAlbumComment pictureAlbumComment = this.findById(id); + ValidUtill.checkIsNull(pictureAlbumComment, Messages.COMMENT_NOT_EXISTS); + int result = pictureAlbumCommentDao.delete(id); + return result == 1; + } + + public PictureAlbumComment atFormat(PictureAlbumComment pictureAlbumComment){ + pictureAlbumComment.setContent(memberService.atFormat(pictureAlbumComment.getContent())); + return pictureAlbumComment; + } + + public List atFormat(List pictureAlbumCommentList){ + for (PictureAlbumComment pictureAlbumComment : pictureAlbumCommentList){ + atFormat(pictureAlbumComment); + } + return pictureAlbumCommentList; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumFavorServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumFavorServiceImpl.java" new file mode 100755 index 0000000..8f241e0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumFavorServiceImpl.java" @@ -0,0 +1,38 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.dao.picture.IPictureAlbumFavorDao; +import com.lxinet.jeesns.dao.picture.IPictureFavorDao; +import com.lxinet.jeesns.model.picture.PictureAlbumFavor; +import com.lxinet.jeesns.model.picture.PictureFavor; +import com.lxinet.jeesns.service.picture.IPictureAlbumFavorService; +import com.lxinet.jeesns.service.picture.IPictureFavorService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * + * @author zchuanzhao + * @date 2017/11/17 + */ +@Service("pictureAlbumFavorService") +public class PictureAlbumFavorServiceImpl implements IPictureAlbumFavorService { + @Resource + private IPictureAlbumFavorDao pictureAlbumFavorDao; + + + @Override + public PictureAlbumFavor find(Integer pictureAlbumId, Integer memberId) { + return pictureAlbumFavorDao.find(pictureAlbumId,memberId); + } + + @Override + public void save(Integer pictureAlbumId, Integer memberId) { + pictureAlbumFavorDao.save(pictureAlbumId,memberId); + } + + @Override + public void delete(Integer pictureAlbumId, Integer memberId) { + pictureAlbumFavorDao.delete(pictureAlbumId,memberId); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumServiceImpl.java" new file mode 100755 index 0000000..f40ff0f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureAlbumServiceImpl.java" @@ -0,0 +1,68 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.dao.picture.IPictureAlbumDao; +import com.lxinet.jeesns.model.picture.PictureAlbum; +import com.lxinet.jeesns.service.picture.IPictureAlbumService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/7. + */ +@Service +public class PictureAlbumServiceImpl implements IPictureAlbumService { + @Resource + private IPictureAlbumDao pictureAlbumDao; + + @Override + public ResultModel listByMember(Integer memberId) { + List list = pictureAlbumDao.listByMember(memberId); + ResultModel model = new ResultModel(0); + model.setData(list); + return model; + } + + @Override + public ResultModel listByPage(Page page) { + List list = pictureAlbumDao.listByPage(page); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public boolean delete(Integer id) { + return pictureAlbumDao.delete(id) == 1; + } + + @Override + public boolean save(PictureAlbum pictureAlbum) { + if (pictureAlbum.getType() == null){ + pictureAlbum.setType(0); + } + if (StringUtils.isEmpty(pictureAlbum.getCover())){ + pictureAlbum.setCover(Const.DEFAULT_PICTURE_COVER); + } + return pictureAlbumDao.save(pictureAlbum) == 1; + } + + @Override + public boolean update(PictureAlbum pictureAlbum) { + return pictureAlbumDao.update(pictureAlbum) == 1; + } + + @Override + public PictureAlbum findWeiboAlbum(Integer memberId) { + return pictureAlbumDao.findWeiboAlbum(memberId); + } + + @Override + public PictureAlbum findById(Integer id) { + return pictureAlbumDao.findById(id); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureCommentServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureCommentServiceImpl.java" new file mode 100755 index 0000000..dd210dd --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureCommentServiceImpl.java" @@ -0,0 +1,93 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.picture.IPictureCommentDao; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.model.picture.PictureComment; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.picture.IPictureCommentService; +import com.lxinet.jeesns.service.picture.IPictureService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/11/14. + */ +@Service("pictureCommentService") +public class PictureCommentServiceImpl implements IPictureCommentService { + @Resource + private IPictureCommentDao pictureCommentDao; + @Resource + private IPictureService pictureService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public PictureComment findById(int id) { + PictureComment PictureComment = pictureCommentDao.findById(id); + atFormat(PictureComment); + return PictureComment; + } + + @Override + public boolean save(Member loginMember, String content, Integer pictureId) { + Picture picture = pictureService.findById(pictureId,loginMember.getId()); + ValidUtill.checkIsNull(picture, Messages.PICTURE_NOT_EXISTS); + PictureComment pictureComment = new PictureComment(); + pictureComment.setMemberId(loginMember.getId()); + pictureComment.setPictureId(pictureId); + pictureComment.setContent(content); + int result = pictureCommentDao.save(pictureComment); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(loginMember.getId(),content, AppTag.PICTURE, MessageType.PICTURE_COMMENT_REFER,picture.getPictureId()); + //回复微博发送系统信息 + messageService.diggDeal(loginMember.getId(), picture.getMemberId(), content,AppTag.PICTURE, MessageType.PICTURE_REPLY, picture.getPictureId()); + } + return result == 1; + } + + @Override + public ResultModel listByPicture(Page page, int pictureId) { + List list = pictureCommentDao.listByPicture(page, pictureId); + atFormat(list); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public void deleteByPicture(Integer pictureId) { + pictureCommentDao.deleteByPicture(pictureId); + } + + @Override + public boolean delete(Member loginMember, int id) { + PictureComment pictureComment = this.findById(id); + ValidUtill.checkIsNull(pictureComment, Messages.COMMENT_NOT_EXISTS); + int result = pictureCommentDao.delete(id); + return result == 1; + } + + public PictureComment atFormat(PictureComment pictureComment){ + pictureComment.setContent(memberService.atFormat(pictureComment.getContent())); + return pictureComment; + } + + public List atFormat(List pictureCommentList){ + for (PictureComment pictureComment : pictureCommentList){ + atFormat(pictureComment); + } + return pictureCommentList; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureFavorServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureFavorServiceImpl.java" new file mode 100755 index 0000000..82b4b7c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureFavorServiceImpl.java" @@ -0,0 +1,32 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.dao.picture.IPictureFavorDao; +import com.lxinet.jeesns.model.picture.PictureFavor; +import com.lxinet.jeesns.service.picture.IPictureFavorService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/11/16. + */ +@Service("pictureFavorService") +public class PictureFavorServiceImpl implements IPictureFavorService { + @Resource + private IPictureFavorDao pictureFavorDao; + + + @Override + public PictureFavor find(Integer pictureId, Integer memberId) { + return pictureFavorDao.find(pictureId,memberId); + } + + @Override + public void save(Integer pictureId, Integer memberId) { + pictureFavorDao.save(pictureId,memberId); + } + + @Override + public void delete(Integer pictureId, Integer memberId) { + pictureFavorDao.delete(pictureId,memberId); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureServiceImpl.java" new file mode 100755 index 0000000..2f4e263 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/picture/impl/PictureServiceImpl.java" @@ -0,0 +1,116 @@ +package com.lxinet.jeesns.service.picture.impl; + +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.picture.IPictureDao; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.picture.IPictureFavorService; +import com.lxinet.jeesns.service.picture.IPictureService; +import com.lxinet.jeesns.common.utils.PictureUtil; +import com.lxinet.jeesns.core.utils.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * + * @author zchuanzhao + * @date 2017/3/7 + */ +@Service +public class PictureServiceImpl implements IPictureService { + @Resource + private IPictureDao pictureDao; + @Resource + private IPictureFavorService pictureFavorService; + @Resource + private IMessageService messageService; + + @Override + public List find(Integer foreignId) { + return pictureDao.find(foreignId); + } + + @Override + public Picture findById(Integer pictureId,int loginMemberId) { + return pictureDao.findById(pictureId,loginMemberId); + } + + @Override + public ResultModel listByPage(Page page, int loginMemberId) { + List list = pictureDao.listByPage(page,loginMemberId); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public ResultModel listByAlbum(Page page, Integer pictureAlbumId, int loginMemberId) { + List list = pictureDao.listByAlbum(page,pictureAlbumId,loginMemberId); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public int deleteByForeignId(HttpServletRequest request, Integer foreignId) { + List pictures = this.find(foreignId); + PictureUtil.delete(request,pictures); + return pictureDao.deleteByForeignId(foreignId); + } + + @Override + public boolean delete(HttpServletRequest request, Integer pictureId) { + Picture picture = this.findById(pictureId,0); + PictureUtil.delete(request,picture); + return pictureDao.delete(pictureId) == 1; + } + + @Override + public int save(Picture picture) { + return pictureDao.save(picture); + } + + @Override + public int update(Integer foreignId, String ids,String description) { + if(StringUtils.isNotEmpty(ids)){ + String[] idsArr = ids.split(","); + return pictureDao.update(foreignId, idsArr,description); + } + return 0; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ResultModel favor(Member loginMember, int pictureId) { + String message; + ResultModel resultModel; + Picture picture = this.findById(pictureId,loginMember.getId()); + if(pictureFavorService.find(pictureId,loginMember.getId()) == null){ + //增加 + pictureDao.favor(pictureId,1); + picture.setFavorCount(picture.getFavorCount() + 1); + pictureFavorService.save(pictureId,loginMember.getId()); + message = "点赞成功"; + resultModel = new ResultModel(0,message); + //点赞之后发送系统信息 + messageService.diggDeal(loginMember.getId(),picture.getMemberId(), AppTag.PICTURE, MessageType.PICTURE_ZAN,pictureId); + }else { + //减少 + pictureDao.favor(pictureId,-1); + picture.setFavorCount(picture.getFavorCount() - 1); + pictureFavorService.delete(pictureId,loginMember.getId()); + message = "取消赞成功"; + resultModel = new ResultModel(1,message); + } + resultModel.setData(picture.getFavorCount()); + return resultModel; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionLogService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionLogService.java" new file mode 100755 index 0000000..b4a02aa --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionLogService.java" @@ -0,0 +1,24 @@ +package com.lxinet.jeesns.service.system; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.system.ActionLog; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public interface IActionLogService { + + ResultModel listByPage(Page page, Integer memberId); + + ResultModel memberActionLog(Page page, Integer memberId); + + ActionLog findById(Integer id); + + void save(String actionIp,Integer memberId, Integer actionId); + + void save(String actionIp,Integer memberId, Integer actionId,String remark); + + void save(String actionIp,Integer memberId, Integer actionId,String remark, Integer type, Integer foreignId); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionService.java" new file mode 100755 index 0000000..595ef3f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IActionService.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.service.system; + +import com.lxinet.jeesns.model.system.Action; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public interface IActionService { + + List list(); + + Action findById(Integer id); + + boolean update(Action action); + + boolean isenable(Integer id); + + boolean canuse(Integer id); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IConfigService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IConfigService.java" new file mode 100755 index 0000000..7c3f44f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IConfigService.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.service.system; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.system.Config; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * Created by zchuanzhao on 16/9/29. + */ +public interface IConfigService { + List allList(); + + Map getConfigToMap(); + + String getValue(String key); + + boolean update(Map params, HttpServletRequest request); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IScoreRuleService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IScoreRuleService.java" new file mode 100755 index 0000000..05c51df --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/IScoreRuleService.java" @@ -0,0 +1,21 @@ +package com.lxinet.jeesns.service.system; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.system.ScoreRule; + +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +public interface IScoreRuleService { + + List list(); + + ScoreRule findById(Integer id); + + boolean update(ScoreRule scoreRule); + + boolean enabled(int id); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/ITagService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/ITagService.java" new file mode 100755 index 0000000..8a69c49 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/ITagService.java" @@ -0,0 +1,18 @@ +package com.lxinet.jeesns.service.system; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.system.Tag; + +public interface ITagService { + boolean save(Tag tag); + + ResultModel listByPage(Page page, int funcType); + + boolean update(Tag tag); + + boolean delete(Integer id); + + Tag findById(Integer id); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionLogServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionLogServiceImpl.java" new file mode 100755 index 0000000..bac70c8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionLogServiceImpl.java" @@ -0,0 +1,66 @@ +package com.lxinet.jeesns.service.system.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.system.IActionLogDao; +import com.lxinet.jeesns.model.system.Action; +import com.lxinet.jeesns.model.system.ActionLog; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IActionService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +@Service("actionLogService") +public class ActionLogServiceImpl implements IActionLogService { + @Resource + private IActionService actionService; + @Resource + private IActionLogDao actionLogDao; + + @Override + public ResultModel listByPage(Page page, Integer memberId) { + List list = actionLogDao.listByPage(page, memberId); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public ResultModel memberActionLog(Page page, Integer memberId) { + List list = actionLogDao.memberActionLog(page, memberId); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public ActionLog findById(Integer id) { + return actionLogDao.findById(id); + } + + @Override + public void save(String actionIp, Integer memberId, Integer actionId) { + this.save(actionIp,memberId,actionId,"",0,0); + } + + @Override + public void save(String actionIp, Integer memberId, Integer actionId, String remark) { + this.save(actionIp,memberId,actionId,remark,0,0); + } + + @Override + public void save(String actionIp, Integer memberId, Integer actionId, String remark, Integer type, Integer foreignId) { + Action action = actionService.findById(actionId); + if(action != null){ + if(action.getStatus() == 0){ + ActionLog actionLog = new ActionLog(memberId,actionId,remark,actionIp,type,foreignId); + actionLogDao.save(actionLog); + } + } + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionServiceImpl.java" new file mode 100755 index 0000000..6dc18ce --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ActionServiceImpl.java" @@ -0,0 +1,62 @@ +package com.lxinet.jeesns.service.system.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.dao.system.IActionDao; +import com.lxinet.jeesns.model.system.Action; +import com.lxinet.jeesns.service.system.IActionService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +@Service("actionService") +public class ActionServiceImpl implements IActionService { + @Resource + private IActionDao actionDao; + + @Override + public List list() { + return actionDao.allList(); + } + + @Override + public Action findById(Integer id) { + return actionDao.findById(id); + } + + @Override + public boolean update(Action action) { + if(actionDao.update(action) == 0){ + throw new OpeErrorException(); + } + return true; + } + + @Override + public boolean isenable(Integer id) { + if(actionDao.isenable(id) == 0){ + throw new OpeErrorException(); + } + return true; + } + + /** + * 状态是否能使用 + * @param id + * @return true可以使用,false不能使用 + */ + @Override + public boolean canuse(Integer id) { + Action action = this.findById(id); + if(action == null){ + return false; + } + if(action.getStatus() == 1){ + return false; + } + return true; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ConfigServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ConfigServiceImpl.java" new file mode 100755 index 0000000..f9dfbb8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ConfigServiceImpl.java" @@ -0,0 +1,59 @@ +package com.lxinet.jeesns.service.system.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.dao.system.IConfigDao; +import com.lxinet.jeesns.model.system.Config; +import com.lxinet.jeesns.service.system.IConfigService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by zchuanzhao on 16/9/27. + */ +@Service("configService") +public class ConfigServiceImpl implements IConfigService { + @Resource + private IConfigDao configDao; + + + @Override + public List allList() { + return configDao.allList(); + } + + @Override + public Map getConfigToMap() { + List allList = this.allList(); + Map map = new HashMap<>(); + for (Config config : allList) { + map.put(config.getJkey(),config.getJvalue()); + } + return map; + } + + @Override + public String getValue(String key) { + return null; + } + + @Override + public boolean update(Map params, HttpServletRequest request) { + for(Map.Entry entry : params.entrySet()){ + if(((String)entry.getValue()).length() > 500){ + throw new ParamException("只能输入255个字符"); + }else { + configDao.update((String)entry.getKey(),(String)entry.getValue()); + request.getServletContext().setAttribute(((String)entry.getKey()).toUpperCase(),entry.getValue()); + } + } + return true; + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ScoreRuleServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ScoreRuleServiceImpl.java" new file mode 100755 index 0000000..0aa64e7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/ScoreRuleServiceImpl.java" @@ -0,0 +1,40 @@ +package com.lxinet.jeesns.service.system.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.dao.system.IScoreRuleDao; +import com.lxinet.jeesns.model.system.ScoreRule; +import com.lxinet.jeesns.service.system.IScoreRuleService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/24. + */ +@Service +public class ScoreRuleServiceImpl implements IScoreRuleService { + @Resource + private IScoreRuleDao scoreRuleDao; + + + @Override + public List list() { + return scoreRuleDao.allList(); + } + + @Override + public ScoreRule findById(Integer id) { + return scoreRuleDao.findById(id); + } + + @Override + public boolean update(ScoreRule scoreRule) { + return scoreRuleDao.update(scoreRule) == 1; + } + + @Override + public boolean enabled(int id) { + return scoreRuleDao.enabled(id) == 1; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/TagServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/TagServiceImpl.java" new file mode 100755 index 0000000..95c56fe --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/system/impl/TagServiceImpl.java" @@ -0,0 +1,52 @@ +package com.lxinet.jeesns.service.system.impl; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.dao.system.ITagDao; +import com.lxinet.jeesns.model.system.Tag; +import com.lxinet.jeesns.service.system.ITagService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017-11-01. + */ +@Service("tagService") +public class TagServiceImpl implements ITagService { + @Resource + private ITagDao tagDao; + + @Override + public boolean save(Tag tag) { + return tagDao.save(tag) == 1; + } + + @Override + public ResultModel listByPage(Page page, int funcType) { + List list = tagDao.listByPage(page,funcType); + ResultModel model = new ResultModel(0, page); + model.setData(list); + return model; + } + + @Override + public boolean update(Tag tag) { + Tag findTag = this.findById(tag.getId()); + if (findTag == null) { + throw new OpeErrorException("标签不存在"); + } + return tagDao.update(tag) == 1; + } + + @Override + public boolean delete(Integer id) { + return tagDao.delete(id) > 0; + } + + @Override + public Tag findById(Integer id) { + return tagDao.findById(id); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboCommentService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboCommentService.java" new file mode 100755 index 0000000..988db1e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboCommentService.java" @@ -0,0 +1,23 @@ +package com.lxinet.jeesns.service.weibo; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.WeiboComment; + + +/** + * Created by zchuanzhao on 2016/10/14. + */ +public interface IWeiboCommentService { + + WeiboComment findById(int id); + + boolean save(Member loginMember, String content, Integer weiboId, Integer weiboCommentId); + + boolean delete(Member loginMember, int id); + + ResultModel listByWeibo(Page page, int weiboId); + + void deleteByWeibo(Integer weiboId); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboFavorService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboFavorService.java" new file mode 100755 index 0000000..55baa16 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboFavorService.java" @@ -0,0 +1,17 @@ +package com.lxinet.jeesns.service.weibo; + + +import com.lxinet.jeesns.model.weibo.WeiboFavor; + +/** + * 微博点赞Service接口 + * Created by zchuanzhao on 2017/2/8. + */ +public interface IWeiboFavorService { + + WeiboFavor find(Integer weiboId, Integer memberId); + + void save(Integer weiboId, Integer memberId); + + void delete(Integer weiboId, Integer memberId); +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboService.java" new file mode 100755 index 0000000..93099d2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboService.java" @@ -0,0 +1,33 @@ +package com.lxinet.jeesns.service.weibo; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.Weibo; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +public interface IWeiboService { + + Weibo findById(int id, int memberId); + + boolean save(HttpServletRequest request, Member loginMember, String content, String pictures); + + ResultModel listByPage(Page page, int memberId, int loginMemberId, String key); + + boolean delete(HttpServletRequest request, Member loginMember, int id); + + boolean userDelete(HttpServletRequest request, Member loginMember, int id); + + List hotList(int loginMemberId); + + ResultModel favor(Member loginMember, int weiboId); + + List listByCustom(int loginMemberId, String sort,int num,int day); + + ResultModel listByTopic(Page page, int loginMemberId, String topicName); +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboTopicService.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboTopicService.java" new file mode 100755 index 0000000..1b2b455 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/IWeiboTopicService.java" @@ -0,0 +1,15 @@ +package com.lxinet.jeesns.service.weibo; + +import com.lxinet.jeesns.model.weibo.WeiboTopic; + + +/** + * Created by zchuanzhao on 2018/11/14. + */ +public interface IWeiboTopicService { + + WeiboTopic findByName(String name); + + Integer save(WeiboTopic weiboTopic); + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboCommentServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboCommentServiceImpl.java" new file mode 100755 index 0000000..93be68f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboCommentServiceImpl.java" @@ -0,0 +1,120 @@ +package com.lxinet.jeesns.service.weibo.impl; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.Weibo; +import com.lxinet.jeesns.model.weibo.WeiboComment; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.dao.weibo.IWeiboCommentDao; +import com.lxinet.jeesns.service.weibo.IWeiboCommentService; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import com.lxinet.jeesns.common.utils.ActionUtil; +import com.lxinet.jeesns.common.utils.ScoreRuleConsts; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/12/22. + */ +@Service("weiboCommentService") +public class WeiboCommentServiceImpl implements IWeiboCommentService { + @Resource + private IWeiboCommentDao weiboCommentDao; + @Resource + private IWeiboService weiboService; + @Resource + private IActionLogService actionLogService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + + @Override + public WeiboComment findById(int id) { + WeiboComment weiboComment = weiboCommentDao.findById(id); + atFormat(weiboComment); + return weiboComment; + } + + @Override + public boolean save(Member loginMember, String content, Integer weiboId, Integer weiboCommentId) { + Weibo weibo = weiboService.findById(weiboId,loginMember.getId()); + ValidUtill.checkIsNull(weibo, Messages.WEIBO_NOT_EXISTS); + ValidUtill.checkIsNull(content, Messages.CONTENT_NOT_EMPTY); + if(content.length() > 500){ + throw new ParamException("评论内容不能超过500"); + } + WeiboComment weiboComment = new WeiboComment(); + weiboComment.setMemberId(loginMember.getId()); + weiboComment.setWeiboId(weiboId); + weiboComment.setContent(content); + weiboComment.setCommentId(weiboCommentId); + int result = weiboCommentDao.save(weiboComment); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(loginMember.getId(),content, AppTag.WEIBO, MessageType.WEIBO_COMMENT_REFER,weibo.getId()); + //回复微博发送系统信息 + messageService.diggDeal(loginMember.getId(), weibo.getMemberId(), content,AppTag.WEIBO, MessageType.WEIBO_REPLY, weibo.getId()); + if (weiboCommentId != null){ + WeiboComment replyWeiboComment = this.findById(weiboCommentId); + if (replyWeiboComment != null){ + //回复微博发送系统信息 + messageService.diggDeal(loginMember.getId(), replyWeiboComment.getMemberId(), content, AppTag.WEIBO, MessageType.WEIBO_REPLY_REPLY, replyWeiboComment.getId()); + } + } + //微博评论奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.COMMENT_WEIBO, weiboComment.getId()); + } + return result == 1; + } + + @Override + public ResultModel listByWeibo(Page page, int weiboId) { + List list = weiboCommentDao.listByWeibo(page, weiboId); + atFormat(list); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Override + public void deleteByWeibo(Integer weiboId) { + weiboCommentDao.deleteByWeibo(weiboId); + } + + @Override + public boolean delete(Member loginMember, int id) { + WeiboComment weiboComment = this.findById(id); + int result = weiboCommentDao.delete(id); + if(result == 1){ + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_WEIBO_COMMENT,"ID:"+weiboComment.getId()+"内容:"+weiboComment.getContent()); + } + return result == 1; + } + + public WeiboComment atFormat(WeiboComment weiboComment){ + weiboComment.setContent(memberService.atFormat(weiboComment.getContent())); + return weiboComment; + } + + public List atFormat(List weiboCommentList){ + for (WeiboComment weiboComment : weiboCommentList){ + atFormat(weiboComment); + } + return weiboCommentList; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboFavorServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboFavorServiceImpl.java" new file mode 100755 index 0000000..7ccdf3d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboFavorServiceImpl.java" @@ -0,0 +1,32 @@ +package com.lxinet.jeesns.service.weibo.impl; + +import com.lxinet.jeesns.dao.weibo.IWeiboFavorDao; +import com.lxinet.jeesns.model.weibo.WeiboFavor; +import com.lxinet.jeesns.service.weibo.IWeiboFavorService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/2/8. + */ +@Service("weiboFavorService") +public class WeiboFavorServiceImpl implements IWeiboFavorService { + @Resource + private IWeiboFavorDao weiboFavorDao; + + + @Override + public WeiboFavor find(Integer weiboId, Integer memberId) { + return weiboFavorDao.find(weiboId,memberId); + } + + @Override + public void save(Integer weiboId, Integer memberId) { + weiboFavorDao.save(weiboId,memberId); + } + + @Override + public void delete(Integer weiboId, Integer memberId) { + weiboFavorDao.delete(weiboId,memberId); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboServiceImpl.java" new file mode 100755 index 0000000..21f958d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboServiceImpl.java" @@ -0,0 +1,220 @@ +package com.lxinet.jeesns.service.weibo.impl; + +import com.lxinet.jeesns.common.utils.*; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.enums.MessageType; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.core.exception.OpeErrorException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.Weibo; +import com.lxinet.jeesns.model.weibo.WeiboTopic; +import com.lxinet.jeesns.service.picture.IPictureService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.dao.weibo.IWeiboDao; +import com.lxinet.jeesns.service.weibo.IWeiboFavorService; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import com.lxinet.jeesns.service.weibo.IWeiboTopicService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +@Service("weiboService") +public class WeiboServiceImpl implements IWeiboService { + @Resource + private IWeiboDao weiboDao; + @Resource + private IWeiboFavorService weiboFavorService; + @Resource + private IActionLogService actionLogService; + @Resource + private IPictureService pictureService; + @Resource + private IScoreDetailService scoreDetailService; + @Resource + private IMessageService messageService; + @Resource + private IMemberService memberService; + @Resource + private IWeiboTopicService weiboTopicService; + + @Override + public Weibo findById(int id, int memberId) { + Weibo weibo = weiboDao.findById(id,memberId); + return weibo; + } + + @Override + @Transactional + public boolean save(HttpServletRequest request, Member loginMember, String content, String pictures) { + if("0".equals(request.getServletContext().getAttribute(ConfigUtil.WEIBO_POST.toUpperCase()))){ + throw new OpeErrorException("微博已关闭"); + } + ValidUtill.checkIsNull(content, Messages.CONTENT_NOT_EMPTY); + if(content.length() > Integer.parseInt((String) request.getServletContext().getAttribute(ConfigUtil.WEIBO_POST_MAXCONTENT.toUpperCase()))){ + throw new ParamException("内容不能超过"+request.getServletContext().getAttribute(ConfigUtil.WEIBO_POST_MAXCONTENT.toUpperCase())+"字"); + } + //获取话题 + String topicName = WeiboTopicUtil.getTopicName(content); + WeiboTopic weiboTopic = null; + if (StringUtils.isNotBlank(topicName)){ + weiboTopic = weiboTopicService.findByName(topicName); + if (weiboTopic == null){ + weiboTopic = new WeiboTopic(); + weiboTopic.setName(topicName); + weiboTopicService.save(weiboTopic); + } + } + Weibo weibo = new Weibo(); + weibo.setMemberId(loginMember.getId()); + weibo.setContent(content); + weibo.setStatus(1); + if(StringUtils.isEmpty(pictures)){ + //普通文本 + weibo.setType(0); + }else { + //图片 + weibo.setType(1); + } + if (weiboTopic != null){ + weibo.setTopicId(weiboTopic.getId()); + } + int result = weiboDao.save(weibo); + if(result == 1){ + //@会员处理并发送系统消息 + messageService.atDeal(loginMember.getId(),content, AppTag.WEIBO, MessageType.WEIBO_REFER,weibo.getId()); + pictureService.update(weibo.getId(),pictures, content); + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.POST_WEIBO,"", ActionLogType.WEIBO.getValue(),weibo.getId()); + //发布微博奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.RELEASE_WEIBO, weibo.getId()); + } + return result == 1; + } + + @Override + public ResultModel listByPage(Page page, int memberId, int loginMemberId, String key) { + if (StringUtils.isNotBlank(key)){ + key = "%"+key.trim()+"%"; + } + List list = weiboDao.listByPage(page, memberId,loginMemberId,key); + list = this.formatWeibo(list); + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + @Transactional + @Override + public boolean delete(HttpServletRequest request, Member loginMember, int id) { + Weibo weibo = this.findById(id,loginMember.getId()); + ValidUtill.checkIsNull(weibo, Messages.WEIBO_NOT_EXISTS); + weiboDao.delete(id); + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.RELEASE_WEIBO,id); + pictureService.deleteByForeignId(request, id); + actionLogService.save(loginMember.getCurrLoginIp(),loginMember.getId(), ActionUtil.DELETE_WEIBO, "ID:"+weibo.getId()+",内容:"+weibo.getContent()); + return true; + } + + @Transactional + @Override + public boolean userDelete(HttpServletRequest request, Member loginMember, int id) { + Weibo weibo = this.findById(id,loginMember.getId()); + ValidUtill.checkIsNull(weibo, Messages.WEIBO_NOT_EXISTS); + if(loginMember.getIsAdmin() == 0 && (loginMember.getId().intValue() != weibo.getMember().getId().intValue())){ + throw new OpeErrorException("没有权限"); + } + return this.delete(request, loginMember,id); + } + + @Override + public List hotList(int loginMemberId) { + List hotList = weiboDao.hotList(loginMemberId); + hotList = this.formatWeibo(hotList); + return hotList; + } + + @Transactional + @Override + public ResultModel favor(Member loginMember, int weiboId) { + ValidUtill.checkParam(weiboId != 0); + Weibo weibo = this.findById(weiboId,loginMember.getId()); + ResultModel resultModel = new ResultModel(0); + if(weiboFavorService.find(weiboId,loginMember.getId()) == null){ + //增加 + weiboDao.favor(weiboId,1); + weibo.setFavor(weibo.getFavor() + 1); + weiboFavorService.save(weiboId,loginMember.getId()); + //发布微博奖励 + scoreDetailService.scoreBonus(loginMember.getId(), ScoreRuleConsts.WEIBO_RECEIVED_THUMBUP, weiboId); + //点赞之后发送系统信息 + messageService.diggDeal(loginMember.getId(),weibo.getMemberId(),AppTag.WEIBO,MessageType.WEIBO_ZAN,weibo.getId()); + }else { + //减少 + weiboDao.favor(weiboId,-1); + weibo.setFavor(weibo.getFavor() - 1); + weiboFavorService.delete(weiboId,loginMember.getId()); + //扣除积分 + scoreDetailService.scoreCancelBonus(loginMember.getId(),ScoreRuleConsts.WEIBO_RECEIVED_THUMBUP,weiboId); + resultModel.setCode(1); + } + resultModel.setData(weibo.getFavor()); + return resultModel; + } + + @Override + public List listByCustom(int loginMemberId, String sort, int num, int day) { + List list = weiboDao.listByCustom(loginMemberId,sort,num,day); + list = this.formatWeibo(list); + return list; + } + + @Override + public ResultModel listByTopic(Page page, int loginMemberId, String topicName) { + WeiboTopic weiboTopic = weiboTopicService.findByName(topicName); + List list; + if (weiboTopic == null){ + weiboTopic = new WeiboTopic(); + weiboTopic.setName(topicName); + weiboTopicService.save(weiboTopic); + list = new ArrayList<>(); + }else { + list = weiboDao.listByTopic(page, loginMemberId, weiboTopic.getId()); + list = this.formatWeibo(list); + } + ResultModel model = new ResultModel(0,page); + model.setData(list); + return model; + } + + public Weibo formatWeibo(Weibo weibo){ + weibo.setContent(memberService.atFormat(weibo.getContent())); + weibo.setContent(WeiboTopicUtil.formatTopic(weibo.getContent())); + return weibo; + } + + public List formatWeibo(List weiboList){ + for (Weibo weibo : weiboList){ + formatWeibo(weibo); + } + return weiboList; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboTopicServiceImpl.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboTopicServiceImpl.java" new file mode 100755 index 0000000..383f3d6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-service/src/main/java/com/lxinet/jeesns/service/weibo/impl/WeiboTopicServiceImpl.java" @@ -0,0 +1,27 @@ +package com.lxinet.jeesns.service.weibo.impl; + +import com.lxinet.jeesns.dao.weibo.IWeiboTopicDao; +import com.lxinet.jeesns.model.weibo.WeiboTopic; +import com.lxinet.jeesns.service.weibo.IWeiboTopicService; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2018/11/14. + */ +@Service("weiboTopicService") +public class WeiboTopicServiceImpl implements IWeiboTopicService { + @Resource + private IWeiboTopicDao weiboTopicDao; + + @Override + public WeiboTopic findByName(String name) { + return weiboTopicDao.findByName(name); + } + + @Override + public Integer save(WeiboTopic weiboTopic){ + weiboTopicDao.save(weiboTopic); + return weiboTopic.getId(); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/jeesns.sql" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/jeesns.sql" new file mode 100755 index 0000000..18b50ae --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/jeesns.sql" @@ -0,0 +1,576 @@ +##开始创建表 +CREATE TABLE `tbl_action` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(50) DEFAULT NULL, + `log` varchar(255) DEFAULT NULL, + `status` int(11) DEFAULT '0' COMMENT '状态,0正常,1禁用', + `update_time` datetime DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + +CREATE TABLE `tbl_member` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `group_id` int(11) DEFAULT '0' COMMENT '分组ID', + `name` varchar(50) DEFAULT NULL COMMENT '会员名称', + `email` varchar(50) DEFAULT '' COMMENT '邮箱', + `phone` varchar(11) DEFAULT '' COMMENT '手机号码', + `password` varchar(32) DEFAULT '' COMMENT '密码', + `sex` varchar(2) DEFAULT NULL COMMENT '性别', + `avatar` varchar(255) DEFAULT NULL COMMENT '头像', + `create_time` datetime DEFAULT NULL COMMENT '注册时间', + `regip` varchar(15) DEFAULT '' COMMENT '注册IP', + `login_count` int(11) DEFAULT '0' COMMENT '登录次数', + `curr_login_time` datetime DEFAULT NULL COMMENT '本次登录时间', + `curr_login_ip` varchar(15) DEFAULT NULL COMMENT '本次登录IP', + `last_login_time` datetime DEFAULT NULL COMMENT '上次登录时间', + `last_login_ip` varchar(15) DEFAULT NULL COMMENT '上次登录IP', + `update_time` datetime DEFAULT NULL COMMENT '更新资料时间', + `money` double(11,2) DEFAULT '0.00' COMMENT '金额', + `score` int(11) DEFAULT '0' COMMENT '积分', + `is_active` int(1) DEFAULT '0' COMMENT '是否已激活,0未激活,1已激活', + `status` int(2) DEFAULT '0' COMMENT '-1禁用,0启用', + `birthday` varchar(10) DEFAULT NULL COMMENT '生日', + `addprovince` varchar(20) DEFAULT '' COMMENT '居住省份', + `addcity` varchar(20) DEFAULT '' COMMENT '居住城市', + `addarea` varchar(20) DEFAULT '' COMMENT '居住地区', + `address` varchar(50) DEFAULT '' COMMENT '居住地址', + `qq` varchar(15) DEFAULT '' COMMENT 'QQ', + `wechat` varchar(20) DEFAULT '' COMMENT '微信', + `contact_phone` varchar(11) DEFAULT '' COMMENT '联系手机号', + `contact_email` varchar(32) DEFAULT '' COMMENT '联系邮箱', + `website` varchar(50) DEFAULT '' COMMENT '个人网站', + `introduce` varchar(255) DEFAULT '' COMMENT '个人介绍', + `is_admin` int(11) DEFAULT '0' COMMENT '是否管理员,0不是,1是普通管理员,2是超级管理员', + `follows` INT(11) DEFAULT '0' comment '关注会员数量', + `fans` INT(11) DEFAULT '0' comment '粉丝数量', + `member_level_id` INT(11) DEFAULT '1' comment '会员等级ID', + `is_vip` INT(11) DEFAULT '0' comment '0普通会员,1VIP', + PRIMARY KEY (`id`), + UNIQUE KEY `name` (`name`), + UNIQUE KEY `email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_action_log` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` int(11) DEFAULT NULL, + `action_id` int(11) DEFAULT NULL, + `remark` varchar(1000) DEFAULT NULL, + `type` tinyint(2) DEFAULT '0', + `foreign_id` int(11) DEFAULT '0', + `action_ip` varchar(15) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_archive` ( + `archive_id` int(11) NOT NULL AUTO_INCREMENT, + `post_type` int(11) DEFAULT '0' COMMENT '发布类型,1是普通文章,2是群组文章', + `title` varchar(255) DEFAULT NULL COMMENT '文档标题', + `member_id` int(11) DEFAULT NULL COMMENT '会员ID', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `description` varchar(255) DEFAULT NULL COMMENT '描述说明', + `keywords` varchar(100) DEFAULT NULL COMMENT '关键词', + `view_rank` int(11) DEFAULT '0' COMMENT '浏览权限,0不限制,1会员', + `view_count` int(11) DEFAULT '0' COMMENT '浏览次数', + `writer` varchar(30) DEFAULT '' COMMENT '作者', + `source` varchar(30) DEFAULT '' COMMENT '来源', + `pub_time` datetime DEFAULT NULL COMMENT '发布日期', + `update_time` datetime DEFAULT NULL COMMENT '最后更新时间', + `thumbnail` varchar(255) DEFAULT NULL COMMENT '缩略图', + `last_reply` datetime DEFAULT NULL COMMENT '最后回复时间', + `can_reply` int(1) DEFAULT '0' COMMENT '是否可以回复,0可以回复,1不可以回复', + `good_num` int(11) DEFAULT '0' COMMENT '点赞数量', + `bad_num` int(11) DEFAULT '0' COMMENT '踩数量', + `check_admin` int(11) DEFAULT '0' COMMENT '审核管理员id', + `content` text COMMENT '内容', + `favor` int(11) DEFAULT '0' COMMENT '喜欢、点赞', + PRIMARY KEY (`archive_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_archive_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `archive_id` int(11) DEFAULT '0', + `member_id` int(11) DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_archive_id_member_id` (`archive_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_article` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `collect_time` datetime DEFAULT NULL, + `cate_id` int(11) DEFAULT NULL COMMENT '栏目ID', + `archive_id` int(11) DEFAULT NULL COMMENT '文章ID', + `status` int(11) DEFAULT '0' COMMENT '状态,0未审核,1已审核', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_article_cate` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fid` int(11) DEFAULT '0' COMMENT '上级类目ID,顶级栏目为0', + `name` varchar(30) DEFAULT NULL COMMENT '栏目名称', + `status` int(1) DEFAULT '0' COMMENT '0正常,1隐藏', + `sort` int(11) DEFAULT '50' COMMENT '排序,越大越靠前', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_article_comment` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `article_id` int(11) DEFAULT NULL, + `member_id` int(11) DEFAULT NULL, + `content` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_config` ( + `jkey` varchar(100) NOT NULL DEFAULT '', + `jvalue` varchar(500) DEFAULT '', + `description` varchar(255) DEFAULT '', + PRIMARY KEY (`jkey`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + + +CREATE TABLE `tbl_group` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(50) DEFAULT NULL COMMENT '群组名字', + `logo` varchar(255) DEFAULT NULL COMMENT '群组logo', + `creator` int(11) DEFAULT NULL COMMENT '创建人', + `managers` varchar(200) DEFAULT NULL COMMENT '管理员', + `tags` varchar(100) DEFAULT NULL COMMENT '标签', + `introduce` varchar(255) DEFAULT NULL COMMENT '介绍', + `can_post` int(11) DEFAULT '0' COMMENT '是否能发帖,0不可以,1可以', + `topic_review` int(11) DEFAULT '0' COMMENT '帖子是否需要审核,0不需要,1需要', + `status` int(11) DEFAULT '0' COMMENT '0未审核,1已审核,-1审核不通过', + `type_id` int(11) DEFAULT null, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_group_fans` ( + `create_time` datetime DEFAULT NULL, + `group_id` int(11) DEFAULT NULL, + `member_id` int(11) DEFAULT NULL, + UNIQUE KEY `uk_group_id_member_id` (`group_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_group_topic` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `collect_time` datetime DEFAULT NULL, + `group_id` int(11) DEFAULT NULL, + `archive_id` int(11) DEFAULT NULL, + `status` int(11) DEFAULT '0' COMMENT '状态,0未审核,1已审核', + `is_essence` int(11) DEFAULT '0' COMMENT '精华,0不加精,1加精', + `is_top` int(11) DEFAULT '0' COMMENT '置顶,0不置顶,1置顶,2超级置顶', + `type_id` int(11) DEFAULT null COMMENT '帖子分类ID', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_group_topic_comment` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `group_topic_id` int(11) DEFAULT NULL, + `member_id` int(11) DEFAULT NULL, + `comment_id` int(11) DEFAULT NULL, + `content` text, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_member_fans` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `follow_who` int(11) DEFAULT '0', + `who_follow` int(11) DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_follow_who_who_follow` (`follow_who`,`who_follow`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_memgroup` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `isadmin` int(1) DEFAULT '0' COMMENT '是否是管理组,0不是,1是', + `name` varchar(50) DEFAULT '' COMMENT '分组名称', + `fid` int(11) DEFAULT '0' COMMENT '上级分组ID,默认0,0是顶级分组', + `rankid` int(11) DEFAULT '0' COMMENT '权限ID,0-99是会员权限,100以上是管理员权限', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_validate_code` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime NOT NULL, + `email` varchar(32) NOT NULL DEFAULT '', + `code` varchar(50) NOT NULL DEFAULT '', + `status` int(1) NOT NULL DEFAULT '0', + `type` int(1) DEFAULT '0' COMMENT '1是重置密码,2会员激活', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_weibo` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime NOT NULL, + `member_id` int(11) NOT NULL, + `type` int(11) DEFAULT '0' COMMENT '0为普通文本,1为图片', + `content` varchar(1000) DEFAULT NULL, + `favor` int(11) DEFAULT '0' COMMENT '赞', + `status` tinyint(11) DEFAULT '0' COMMENT '0未审核,1已审核,-1审核不通过', + `topic_id` int(11) DEFAULT '0' COMMENT '话题ID', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_weibo_comment` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime NOT NULL, + `member_id` int(11) NOT NULL DEFAULT '0', + `weibo_id` int(11) NOT NULL DEFAULT '0', + `comment_id` int(11) COMMENT '评论的id', + `content` varchar(1000) DEFAULT NULL, + `status` int(11) DEFAULT '0' COMMENT '0正常,1禁用', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_weibo_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `weibo_id` int(11) DEFAULT '0', + `member_id` int(11) DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_weibo_id_member_id` (`weibo_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture` ( + `picture_id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `type` INT(11) NOT NULL COMMENT '1是文章图片,2是微博图片,3是群组帖子图片', + `foreign_id` INT(11) COMMENT '外键ID', + `path` VARCHAR(255) NOT NULL COMMENT '图片路径', + `thumbnail_path` VARCHAR(255) COMMENT '缩略图', + `small_path` VARCHAR(255) COMMENT '按比例缩小的图片', + `md5` VARCHAR(32) NOT NULL, + `width` INT(11) DEFAULT '0', + `height` INT(11) DEFAULT '0', + `description` VARCHAR(1000), + `comment_count` INT(11) DEFAULT '0', + `favor_count` INT(11) DEFAULT '0', + `album_id` INT(11), + PRIMARY KEY (picture_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_message` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `from_member_id` INT(11) DEFAULT '0', + `to_member_id` INT(11) DEFAULT '0', + `content` TEXT, + `url` VARCHAR(255), + `app_tag` INT(11), + `type` INT(11), + `relate_key_id` INT(11), + `member_id` INT(11), + `description` VARCHAR(500), + `isread` INT(1) DEFAULT '0' COMMENT '是否已读,0未读,1已读', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +##积分规则表 +CREATE TABLE `tbl_score_rule` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + `name` VARCHAR(30) DEFAULT '0' COMMENT '规则名称', + `score` INT(11) DEFAULT '0' COMMENT '变化积分', + `remark` VARCHAR(255) COMMENT '说明', + `type` VARCHAR(10) DEFAULT 'unlimite' COMMENT '奖励次数类型,day每天一次,week每周一次,month每月一次,year每年一次,one只有一次,unlimite不限次数', + `status` INT(11) DEFAULT '1' COMMENT '状态,0禁用,1启用', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +##积分明细表 +CREATE TABLE `tbl_score_detail` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11) DEFAULT '0' COMMENT '会员ID', + `type` INT(11) DEFAULT '0' COMMENT '类型,0是普通积分增加,1是奖励,2是撤销奖励', + `score` INT(11) DEFAULT '0' COMMENT '变化积分', + `balance` INT(11) DEFAULT '0' COMMENT '账户剩余积分', + `remark` VARCHAR(255) COMMENT '说明', + `foreign_id` INT(11) DEFAULT '0' COMMENT '外键ID', + `score_rule_id` INT(11) DEFAULT '0' COMMENT '积分规则ID', + `status` INT(11) DEFAULT '1' COMMENT '状态,1是成功,0是取消', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +##会员登录TOKEN表 +CREATE TABLE `tbl_member_token` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11) DEFAULT '0' COMMENT '会员ID', + `token` VARCHAR(32) DEFAULT '', + `expire_time` datetime, + `status` INT(11) DEFAULT '0' COMMENT '状态,0是正常,1是失效', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +##广告表 +CREATE TABLE `tbl_ads` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `type` INT(11) NOT NULL COMMENT '1是图片链接,2是文字链接,3是代码', + `name` VARCHAR(100) COMMENT '广告名称', + `start_time` datetime , + `end_time` datetime , + `content` VARCHAR(1000) NOT NULL COMMENT '内容,如果是图片链接,该内容为图片地址,如果是文字链接,改内容是文字描述信息,如果是代码,改内容是广告代码', + `link` VARCHAR(255) COMMENT '链接,图片链接和文字链接类型时才有效', + `status` INT(1) DEFAULT '0' COMMENT '状态,0禁用,1启用', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +##友情链接表 +CREATE TABLE `tbl_link` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` VARCHAR(100) COMMENT '网站名称', + `url` VARCHAR(255) COMMENT '网址', + `sort` INT(11) NOT NULL DEFAULT '0' COMMENT '排序,越大越靠前', + `recomment` INT(11) NOT NULL DEFAULT '0' COMMENT '推荐,0不推荐,1推荐', + `status` INT(1) DEFAULT '0' COMMENT '状态,0禁用,1启用', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_picture_album` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + `member_id` INT(11), + `comment_count` INT(11) DEFAULT '0', + `favor_count` INT(11) DEFAULT '0', + `name` VARCHAR (32), + `description` VARCHAR (255), + `juri` INT(11) DEFAULT '0' COMMENT '权限,0所有人可以查看,1是相互关注的人可以查看,2是仅自己可以查看', + `cover` VARCHAR(255), + `type` INT(1) DEFAULT '0' COMMENT '0是普通相册,2是微博配图,5是头像相册', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_picture_album_comment` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `picture_album_id` INT(11), + `content` VARCHAR (1000), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_album_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `picture_album_id` int(11), + `member_id` int(11), + PRIMARY KEY (`id`), + UNIQUE KEY `uk_picture_album_id_member_id` (`picture_album_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_tag` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `func_type` INT (11), + `name` VARCHAR (32), + `refer_count` INT (11) DEFAULT '0', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_picture_tag` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `picture_id` INT (11), + `tag_id` INT (11), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_comment` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `picture_id` INT(11), + `content` VARCHAR (1000), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `picture_id` int(11), + `member_id` int(11), + PRIMARY KEY (`id`), + UNIQUE KEY `uk_picture_album_id_member_id` (`picture_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_group_topic_type` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `group_id` INT(11), + `name` VARCHAR (32), + `juri` INT(11) DEFAULT '0' COMMENT '权限,0所有人发布,1是管理员才可以发布', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_group_type` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` VARCHAR (32), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_checkin` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `continue_day` INT(11), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_weibo_topic` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(255), + `count` INT(11) DEFAULT '0', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_member_level` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(255), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `tbl_action_log` ADD CONSTRAINT `fk_action_log_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_action_log` ADD CONSTRAINT `fk_action_log_action` FOREIGN KEY (`action_id`) REFERENCES `tbl_action` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_archive_favor` ADD CONSTRAINT `fk_archive_favor_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_archive_favor` ADD CONSTRAINT `fk_archive_favor_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_article` ADD CONSTRAINT `fk_article_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_article` ADD CONSTRAINT `fk_article_cate` FOREIGN KEY (`cate_id`) REFERENCES `tbl_article_cate` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_article_comment` ADD CONSTRAINT `fk_article_comment_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_article_comment` ADD CONSTRAINT `fk_article_comment_article` FOREIGN KEY (`article_id`) REFERENCES `tbl_article` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group` ADD CONSTRAINT `fk_group_member` FOREIGN KEY (`creator`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_weibo` ADD CONSTRAINT `fk_weibo_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_topic` ADD CONSTRAINT `fk_group_topic_group` FOREIGN KEY (`group_id`) REFERENCES `tbl_group` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_topic` ADD CONSTRAINT `fk_group_topic_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_fans` ADD CONSTRAINT `fk_group_fans_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_fans` ADD CONSTRAINT `fk_group_fans_group` FOREIGN KEY (`group_id`) REFERENCES `tbl_group` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_topic_comment` ADD CONSTRAINT `fk_group_topic_comment_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_topic_comment` ADD CONSTRAINT `fk_group_topic_comment_group_topic` FOREIGN KEY (`group_topic_id`) REFERENCES `tbl_group_topic` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_member_fans` ADD CONSTRAINT `fk_member_fans_follow_who` FOREIGN KEY (`follow_who`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_member_fans` ADD CONSTRAINT `fk_member_fans_who_follow` FOREIGN KEY (`who_follow`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_weibo_comment` ADD CONSTRAINT `fk_weibo_comment_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_weibo_comment` ADD CONSTRAINT `fk_weibo_comment_weibo` FOREIGN KEY (`weibo_id`) REFERENCES `tbl_weibo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_weibo_favor` ADD CONSTRAINT `fk_weibo_favor_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_weibo_favor` ADD CONSTRAINT `fk_weibo_favor_weibo` FOREIGN KEY (`weibo_id`) REFERENCES `tbl_weibo` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_message` ADD CONSTRAINT `fk_message_from_member` FOREIGN KEY (`from_member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_message` ADD CONSTRAINT `fk_message_to_member` FOREIGN KEY (`to_member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_score_detail` ADD CONSTRAINT `fk_score_detail_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_score_detail` ADD CONSTRAINT `fk_score_detail_score_rule` FOREIGN KEY (`score_rule_id`) REFERENCES `tbl_score_rule` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_member_token` ADD CONSTRAINT `fk_member_token_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_message` ADD CONSTRAINT `fk_message_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_picture_comment` ADD CONSTRAINT `fk_picture_comment_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_picture_comment` ADD CONSTRAINT `fk_picture_comment_picture` FOREIGN KEY (`picture_id`) REFERENCES `tbl_picture` (`picture_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_picture_favor` ADD CONSTRAINT `fk_picture_favor_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_picture_favor` ADD CONSTRAINT `fk_picture_favor_picture` FOREIGN KEY (`picture_id`) REFERENCES `tbl_picture` (`picture_id`) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE `tbl_group_topic` ADD CONSTRAINT `fk_group_topic_type` FOREIGN KEY (`type_id`) REFERENCES `tbl_group_topic_type` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE `tbl_group` ADD CONSTRAINT `fk_group_type` FOREIGN KEY (`type_id`) REFERENCES `tbl_group_type` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; +ALTER TABLE `tbl_checkin` ADD CONSTRAINT `fk_checkin_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; + + + + + +##数据 +INSERT INTO `tbl_config` (`jkey`, `jvalue`, `description`) +VALUES + ('cms_post','1','cms会员文章投稿,0关闭,1开启'), + ('cms_post_review','0','cms投稿审核,0需要审核,1不需要审核'), + ('group_alias','群组','群组别名'), + ('group_apply','1','群组是否可以申请,0不可以,1可以'), + ('group_apply_review','0','群组申请是否需要审核,0需要审核,1不需要审核'), + ('member_email_valid','0','邮箱验证,0不需要验证,1需要验证'), + ('member_login_open','1','会员登录开关,0关闭,1开启'), + ('member_register_open','1','会员注册开关,0关闭,1开启'), + ('site_description','JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。','网站描述'), + ('site_domain','http://www.jeesns.cn/','网站域名'), + ('site_keys','jeesns,sns,java','网站关键词'), + ('site_logo','/res/common/images/logo.png','网站LOGO'), + ('site_name','JEESNS','网站名称'), + ('site_send_email_account','','发送邮箱账号'), + ('site_send_email_password','','发送邮箱密码'), + ('site_send_email_smtp','','发送邮箱SMTP服务器地址'), + ('site_seo_title','又一个JEESNS社区','SEO标题'), + ('site_icp','闽ICP备12013573号','备案号'), + ('site_copyright','Copyright © 2012 - 2017.','版权说明'), + ('site_tongji','','统计代码'), + ('weibo_alias','微博','微博别名'), + ('weibo_post','1','微博发布,0不可以发布,1可以发布'), + ('weibo_post_maxcontent','140','微博内容字数'); + + +INSERT INTO `tbl_member` (`id`, `group_id`, `name`, `email`, `phone`, `password`, `sex`, `avatar`, `create_time`, `regip`, `login_count`, `curr_login_time`, `curr_login_ip`, `last_login_time`, `last_login_ip`, `update_time`, `money`, `score`, `is_active`, `status`, `birthday`, `addprovince`, `addcity`, `addarea`, `address`, `qq`, `wechat`, `contact_phone`, `contact_email`, `website`, `introduce`, `is_admin`) +VALUES + (1,0,'admin','admin@jeesns.cn','13800138000','56b0436e6dd61a1f5f6a636cdf790eee','女','/res/common/images/default-avatar.png',now(),'',0,now(),'127.0.0.1',now(),'127.0.0.1',NULL,0.00,0,1,0,'1971-12-20','','','','','8888888','admin','13800138000','admin@jeesns.cn','www.jeesns.cn','',2); + +INSERT INTO tbl_action(id, create_time, name, log, status, update_time) VALUES + (1,now(),'会员注册','注册了账号',0,now()), + (2,now(),'会员登录','登录了账号',0,now()), + (3,now(),'修改密码','修改了密码',0,now()), + (4,now(),'找回密码','找回了密码',0,now()), + (5,now(),'登录失败','登录失败',0,now()), + (3001,now(),'删除微博','删除了微博',0,now()), + (3002,now(),'删除微博评论','删除了微博评论',0,now()), + (3003,now(),'删除群组','删除了群组',0,now()), + (3004,now(),'删除群组帖子','删除了帖子',0,now()), + (3005,now(),'删除群组帖子评论','删除了帖子评论',0,now()), + (3006,now(),'删除文章','删除文章',0,now()), + (3007,now(),'删除文章评论','删除了文章评论',0,now()), + (10001,now(),'发布微博','发布了微博',0,now()), + (10002,now(),'群组发帖','发布了群组帖子',0,now()), + (10003,now(),'发布文章','发布了文章',0,now()), + (10004,now(),'签到','签到',0,now()); + + +INSERT INTO tbl_score_rule(id,create_time,update_time,name,score,remark,type,status) VALUES + (1,now(),now(),'注册奖励',100,'注册奖励','one',1), + (2,now(),now(),'邮箱认证',1,'邮箱认证奖励积分,只有一次','one',1), + (3,now(),now(),'每天登陆奖励',1,'每天登陆奖励积分,一天仅限一次','day',1), + (4,now(),now(),'文章投稿',1,'文章投稿奖励积分,如需审核,审核之后奖励','unlimite',1), + (5,now(),now(),'文章评论',1,'评论文章奖励积分','unlimite',1), + (6,now(),now(),'文章收到喜欢',1,'文章收到喜欢,作者奖励积分','unlimite',1), + (7,now(),now(),'发布微博',1,'发布微博奖励积分','unlimite',1), + (8,now(),now(),'评论微博',1,'评论微博奖励积分','unlimite',1), + (9,now(),now(),'微博收到点赞',1,'微博收到点赞,作者奖励积分','unlimite',1), + (10,now(),now(),'申请群组',-10,'申请群组扣除/奖励积分,如需要扣除积分,请填写负数','unlimite',1), + (11,now(),now(),'群组发帖',1,'群组发帖奖励积分,如需审核,审核之后奖励','unlimite',1), + (12,now(),now(),'群组帖子评论',1,'群组帖子评论奖励积分','unlimite',1), + (13,now(),now(),'群组帖子收到喜欢',1,'群组帖子收到喜欢奖励积分','unlimite',1), + (14,now(),now(),'签到',1,'签到奖励','day',1); + +INSERT INTO `tbl_group_type` values (1,now(),'默认分类'); + +INSERT INTO tbl_member_level(id, create_time, name) VALUES (1,now(),'普通会员'); \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.0to1.2.1.sql" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.0to1.2.1.sql" new file mode 100755 index 0000000..b16c8ff --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.0to1.2.1.sql" @@ -0,0 +1,103 @@ +CREATE TABLE `tbl_picture_album` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `update_time` datetime DEFAULT NULL, + `member_id` INT(11), + `comment_count` INT(11) DEFAULT '0', + `favor_count` INT(11) DEFAULT '0', + `name` VARCHAR (32), + `description` VARCHAR (255), + `juri` INT(11) DEFAULT '0' COMMENT '权限,0所有人可以查看,1是相互关注的人可以查看,2是仅自己可以查看', + `cover` VARCHAR(255), + `type` INT(1) DEFAULT '0' COMMENT '0是普通相册,2是微博配图,5是头像相册', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_picture_album_comment` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `picture_album_id` INT(11), + `content` VARCHAR (1000), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_album_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `picture_album_id` int(11), + `member_id` int(11), + PRIMARY KEY (`id`), + UNIQUE KEY `uk_picture_album_id_member_id` (`picture_album_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_tag` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `func_type` INT (11), + `name` VARCHAR (32), + `refer_count` INT (11) DEFAULT '0', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_picture_tag` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `picture_id` INT (11), + `tag_id` INT (11), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_comment` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `picture_id` INT(11), + `content` VARCHAR (1000), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +CREATE TABLE `tbl_picture_favor` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `picture_id` int(11), + `member_id` int(11), + PRIMARY KEY (`id`), + UNIQUE KEY `uk_picture_album_id_member_id` (`picture_id`,`member_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + + +ALTER TABLE `tbl_picture` ADD COLUMN `comment_count` INT DEFAULT '0'; +ALTER TABLE `tbl_picture` ADD COLUMN `favor_count` INT DEFAULT '0'; +ALTER TABLE `tbl_picture` ADD COLUMN `small_path` VARCHAR(255); +ALTER TABLE `tbl_picture` ADD COLUMN `album_id` INT(11); +UPDATE tbl_picture SET type = 2 where type = 3; +UPDATE tbl_picture SET small_path = thumbnail_path where small_path IS NULL; +DELETE FROM tbl_picture where foreign_id=0; +UPDATE tbl_picture set member_id=(SELECT member_id FROM tbl_weibo WHERE id = foreign_id),description=(SELECT content FROM tbl_weibo WHERE id = foreign_id); + + +DROP PROCEDURE IF EXISTS proc_picture_album; +DELIMITER ;; +CREATE PROCEDURE proc_picture_album() + BEGIN + DECLARE Done INT DEFAULT 0; + DECLARE memberid INT; + DECLARE rs CURSOR FOR SELECT id FROM tbl_member; + DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1; + OPEN rs; + FETCH NEXT FROM rs INTO memberid; + REPEAT + IF NOT Done THEN + insert into tbl_picture_album(id,create_time,update_time,member_id,name,juri,type,cover) + values(memberid,now(),now(),memberid,"微博配图",0,2,"/res/common/images/empty_album.png"); + update tbl_picture set album_id=memberid where member_id=memberid; + END IF; + FETCH NEXT FROM rs INTO memberid; + UNTIL Done END REPEAT; + CLOSE rs; + end;; +DELIMITER ; +call proc_picture_album() + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.1to1.3.sql" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.1to1.3.sql" new file mode 100755 index 0000000..78198d4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.2.1to1.3.sql" @@ -0,0 +1,22 @@ +CREATE TABLE `tbl_group_topic_type` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `group_id` INT(11), + `name` VARCHAR (32), + `juri` INT(11) DEFAULT '0' COMMENT '权限,0所有人发布,1是管理员才可以发布', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `tbl_group_topic` ADD COLUMN `type_id` INT DEFAULT NULL; +ALTER TABLE `tbl_group_topic` ADD CONSTRAINT `fk_group_topic_type` FOREIGN KEY (`type_id`) REFERENCES `tbl_group_topic_type` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +CREATE TABLE `tbl_group_type` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` VARCHAR (32), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `tbl_group` ADD COLUMN `type_id` INT DEFAULT NULL; +ALTER TABLE `tbl_group` ADD CONSTRAINT `fk_group_type` FOREIGN KEY (`type_id`) REFERENCES `tbl_group_type` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; +INSERT INTO `tbl_group_type` values (1,now(),'默认分类'); diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.3to1.3.1.sql" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.3to1.3.1.sql" new file mode 100755 index 0000000..1947e1e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/database/update_1.3to1.3.1.sql" @@ -0,0 +1,40 @@ +CREATE TABLE `tbl_checkin` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `member_id` INT(11), + `continue_day` INT(11), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE `tbl_weibo_topic` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(255), + `count` INT(11) DEFAULT '0', + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `tbl_weibo` ADD COLUMN `topic_id` INT DEFAULT '0'; + + +CREATE TABLE `tbl_member_level` ( + `id` INT(11) NOT NULL AUTO_INCREMENT, + `create_time` datetime DEFAULT NULL, + `name` varchar(255), + PRIMARY KEY (id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +ALTER TABLE `tbl_member` ADD COLUMN `member_level_id` INT DEFAULT '1'; +ALTER TABLE `tbl_member` ADD COLUMN `is_vip` INT DEFAULT '0'; + +INSERT INTO tbl_member_level(id, create_time, name) VALUES (1,now(),'普通会员'); + + + +ALTER TABLE `tbl_checkin` ADD CONSTRAINT `fk_checkin_member` FOREIGN KEY (`member_id`) REFERENCES `tbl_member` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +INSERT INTO tbl_action(id, create_time, name, log, status, update_time) VALUES (10004,now(),'签到','签到',0,now()); + +INSERT INTO tbl_score_rule(id,create_time,update_time,name,score,remark,type,status) VALUES (14,now(),now(),'签到',1,'签到奖励','day',1); + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/doc/JEESNS\346\225\260\346\215\256\345\272\223\350\241\250\350\256\276\350\256\241\347\273\223\346\236\204.docx" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/doc/JEESNS\346\225\260\346\215\256\345\272\223\350\241\250\350\256\276\350\256\241\347\273\223\346\236\204.docx" new file mode 100755 index 0000000..dc04463 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/doc/JEESNS\346\225\260\346\215\256\345\272\223\350\241\250\350\256\276\350\256\241\347\273\223\346\236\204.docx" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/pom.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/pom.xml" new file mode 100755 index 0000000..f3d6f20 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/pom.xml" @@ -0,0 +1,60 @@ + + + 4.0.0 + + com.lxinet + jeesns + 1.3 + + com.lxinet + jeesns-web + war + 1.3 + + + + mysql + mysql-connector-java + 8.0.15 + + + com.lxinet + jeesns-core + 1.3 + compile + + + com.lxinet + jeesns-model + 1.3 + compile + + + com.lxinet + jeesns-common + 1.3 + + + com.lxinet + jeesns-service + 1.3 + compile + + + + + jeesns-web + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/aop/ControllerAop.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/aop/ControllerAop.java" new file mode 100755 index 0000000..8c30cfb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/aop/ControllerAop.java" @@ -0,0 +1,49 @@ +package com.lxinet.jeesns.aop; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.JeeException; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + + +/** + * @author zchuanzhao + */ +public class ControllerAop { + + public Object handlerController(ProceedingJoinPoint pjp){ + ResultModel result; + try { + result = (ResultModel) pjp.proceed(); + } catch (Throwable e) { + result = handlerExceotion(pjp, e); + } + return result; + } + + private ResultModel handlerExceotion(ProceedingJoinPoint pjp, Throwable e){ + ResultModel result = new ResultModel(); + if (e instanceof JeeException && null != ((JeeException) e).getJeeMessage()){ + result.setMessage(((JeeException)e).getJeeMessage()); + }else { + result.setCode(-1); + if (null == e.getMessage()){ + result.setMessage("系统异常:" + e.toString()); + }else { + result.setMessage(e.getMessage()); + } + e.printStackTrace(); + } + return result; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/AdsDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/AdsDirective.java" new file mode 100755 index 0000000..c16f61d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/AdsDirective.java" @@ -0,0 +1,27 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import com.lxinet.jeesns.model.common.Ads; +import com.lxinet.jeesns.service.common.IAdsService; +import freemarker.template.TemplateException; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.io.IOException; + +/** + * Created by zchuanzhao on 2017/09/08. + */ +@Component +public class AdsDirective extends BaseDirective { + + @Resource + private IAdsService adsService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + int id = handler.getInteger("id",0); + Ads ads = adsService.findById(id); + handler.put("ad", ads).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/ArticleDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/ArticleDirective.java" new file mode 100755 index 0000000..4a53c1a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/ArticleDirective.java" @@ -0,0 +1,31 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import freemarker.template.*; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +@Component +public class ArticleDirective extends BaseDirective { + @Resource + private IArticleService articleService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + int cid = handler.getInteger("cid",0); + int num = handler.getInteger("num",0); + String sort = handler.getString("sort","id"); + int day = handler.getInteger("day",0); + int thumbnail = handler.getInteger("thumbnail",0); + List
list = articleService.listByCustom(cid,sort,num,day,thumbnail); + handler.put("articleList", list).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupDirective.java" new file mode 100755 index 0000000..356a3d7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupDirective.java" @@ -0,0 +1,29 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.service.group.IGroupService; +import freemarker.template.TemplateException; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +@Component +public class GroupDirective extends BaseDirective { + @Resource + private IGroupService groupService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + int num = handler.getInteger("num",0); + String sort = handler.getString("sort","id"); + int status = handler.getInteger("status",-1); + List list = groupService.listByCustom(status,num,sort); + handler.put("groupList", list).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTopicDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTopicDirective.java" new file mode 100755 index 0000000..6579809 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTopicDirective.java" @@ -0,0 +1,31 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import com.lxinet.jeesns.model.group.GroupTopic; +import com.lxinet.jeesns.service.group.IGroupTopicService; +import freemarker.template.TemplateException; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +@Component +public class GroupTopicDirective extends BaseDirective { + @Resource + private IGroupTopicService groupTopicService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + int gid = handler.getInteger("gid",0); + int num = handler.getInteger("num",0); + String sort = handler.getString("sort","id"); + int day = handler.getInteger("day",0); + int thumbnail = handler.getInteger("thumbnail",0); + List list = groupTopicService.listByCustom(gid,sort,num,day,thumbnail); + handler.put("groupTopicList", list).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTypeDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTypeDirective.java" new file mode 100755 index 0000000..dfa1961 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/GroupTypeDirective.java" @@ -0,0 +1,28 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import com.lxinet.jeesns.model.group.GroupType; +import com.lxinet.jeesns.service.group.IGroupTypeService; +import freemarker.template.TemplateException; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/16 下午16:14 + */ +@Component +public class GroupTypeDirective extends BaseDirective { + + @Resource + private IGroupTypeService groupTypeService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + List list = groupTypeService.list(); + handler.put("groupTypeList", list).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/WeiboDirective.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/WeiboDirective.java" new file mode 100755 index 0000000..112fe60 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/directive/WeiboDirective.java" @@ -0,0 +1,37 @@ +package com.lxinet.jeesns.directive; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.directive.BaseDirective; +import com.lxinet.jeesns.core.handler.DirectiveHandler; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.Weibo; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import freemarker.template.TemplateException; +import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/5/18. + */ +@Component +public class WeiboDirective extends BaseDirective { + @Resource + private HttpServletRequest request; + + @Resource + private IWeiboService weiboService; + @Override + public void execute(DirectiveHandler handler) throws TemplateException, IOException { + int num = handler.getInteger("num",0); + String sort = handler.getString("sort","id"); + int day = handler.getInteger("day",0); + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + List list = weiboService.listByCustom(loginMemberId,sort,num,day); + handler.put("weiboList", list).render(); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/AdminLoginInterceptor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/AdminLoginInterceptor.java" new file mode 100755 index 0000000..245b9f5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/AdminLoginInterceptor.java" @@ -0,0 +1,51 @@ +package com.lxinet.jeesns.interceptor; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.core.utils.SpringContextHolder; +import com.lxinet.jeesns.model.member.Member; +import net.sf.json.JSONObject; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; + +/** + * Created by zchuanzhao on 16/11/25. + */ +public class AdminLoginInterceptor implements JeesnsInterceptor { + + @Override + public boolean interceptor(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + Member loginAdmin = MemberUtil.getLoginMember(request); + if (loginAdmin == null || loginAdmin.getIsAdmin() == 0) { + if (isAjaxRequest(request)){ + response.setCharacterEncoding("utf-8"); + response.setContentType("application/json"); + PrintWriter out = response.getWriter(); + JSONObject json = new JSONObject(); + json.put("code", -99); + json.put("message", "登录信息已失效,请重新登录"); + out.write(json.toString()); + out.flush(); + out.close(); + }else { + JeesnsConfig jeesnsConfig = SpringContextHolder.getBean("jeesnsConfig"); + response.sendRedirect(request.getContextPath() + "/" + jeesnsConfig.getManagePath() + "/login"); + } + return false; + } + request.setAttribute("loginUser", loginAdmin); + return true; + } + + /** + * 判断是否是AJAX请求 + * @return true ajax + */ + private boolean isAjaxRequest(HttpServletRequest request){ + String header = request.getHeader("X-Requested-With"); + return "XMLHttpRequest".equalsIgnoreCase(header) ? true : false; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/InitInterceptor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/InitInterceptor.java" new file mode 100755 index 0000000..11f737e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/InitInterceptor.java" @@ -0,0 +1,166 @@ +package com.lxinet.jeesns.interceptor; + +import com.lxinet.jeesns.common.utils.ConfigUtil; +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.After; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.annotation.Clear; +import com.lxinet.jeesns.core.utils.SpringContextHolder; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMessageService; +import org.springframework.web.method.HandlerMethod; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.annotation.Annotation; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +/** + * 初始化监听器 + * Created by zchuanzhao on 16/9/26. + */ +public class InitInterceptor implements HandlerInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + IMessageService messageService = SpringContextHolder.getBean("messageService"); + Member loginUser = MemberUtil.getLoginMember(request); + request.setAttribute("loginUser", loginUser); + //会员未读私信数量 + Integer unReadMessageNum = 0; + //系统未读信息数量 + Integer systemUnReadMessageNum = 0; + if (loginUser != null) { + if (loginUser.getIsActive() == 0) { + String memberEmailValid = (String) request.getServletContext().getAttribute(ConfigUtil.MEMBER_EMAIL_VALID.toUpperCase()); + if (Integer.parseInt(memberEmailValid) == 1) { + if (!(request.getServletPath().indexOf("member/active") != -1 || request.getServletPath().indexOf("member/logout") != -1 || + request.getServletPath().indexOf("member/sendEmailActiveValidCode") != -1 || request.getServletPath().indexOf("/res/") != -1 || + request.getServletPath().indexOf("/upload/") != -1)) { + response.sendRedirect(request.getContextPath() + "/member/active"); + return false; + } + } + } + //会员未读信息 + unReadMessageNum = messageService.countUnreadNum(loginUser.getId()); + systemUnReadMessageNum = messageService.countSystemUnreadNum(loginUser.getId()); + } + request.setAttribute("unReadMessageNum", unReadMessageNum); + request.setAttribute("systemUnReadMessageNum", systemUnReadMessageNum); + + if (handler != null) { + List annotationList = new ArrayList<>(); + if (handler.getClass().isAssignableFrom(HandlerMethod.class)) { + Class clazz = ((HandlerMethod) handler).getMethod().getDeclaringClass(); + Annotation[] classAnnotations = clazz.getAnnotations(); + for (Annotation annotation : classAnnotations) { + annotationList.add(annotation); + } + Annotation[] methodAnnotations = ((HandlerMethod) handler).getMethod().getAnnotations(); + for (Annotation annotation : methodAnnotations) { + annotationList.add(annotation); + } + for (int i = 0; i < annotationList.size(); i++) { + boolean hasClear = false; + Annotation annotation = annotationList.get(i); + //获取Before注解 + Before before = null; + try { + before = (Before) annotation; + } catch (Exception e) { + + } + if (before != null) { + for (int j = i + 1; j < annotationList.size(); j++) { + Annotation annotation1 = annotationList.get(j); + Clear clear = null; + try { + clear = (Clear) annotation1; + } catch (Exception e) { + + } + if (clear != null) { + hasClear = true; + break; + } + } + //在@Before注解后面如果有@Clear注解,该注解就无效 + if (!hasClear) { + Class interceptorlll = before.value(); + Object object = Class.forName(interceptorlll.getCanonicalName()).newInstance(); + Class[] clazzs = new Class[]{HttpServletRequest.class, HttpServletResponse.class, Object.class}; + Method method = object.getClass().getMethod("interceptor", clazzs); + Object[] params = new Object[]{request, response, handler}; + boolean result = (boolean) method.invoke(object, params); + return result; + } + } + } + } + } + return true; + } + + @Override + public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { + + } + + @Override + public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler, Exception e) throws Exception { + if (handler != null) { + List annotationList = new ArrayList<>(); + if (handler.getClass().isAssignableFrom(HandlerMethod.class)) { + Class clazz = ((HandlerMethod) handler).getMethod().getDeclaringClass(); + Annotation[] classAnnotations = clazz.getAnnotations(); + for (Annotation annotation : classAnnotations) { + annotationList.add(annotation); + } + Annotation[] methodAnnotations = ((HandlerMethod) handler).getMethod().getAnnotations(); + for (Annotation annotation : methodAnnotations) { + annotationList.add(annotation); + } + for (int i = 0; i < annotationList.size(); i++) { + boolean hasClear = false; + Annotation annotation = annotationList.get(i); + //获取After注解 + After after = null; + try { + after = (After) annotation; + } catch (Exception e1) { + + } + if (after != null) { + for (int j = i + 1; j < annotationList.size(); j++) { + Annotation annotation1 = annotationList.get(j); + Clear clear = null; + try { + clear = (Clear) annotation1; + } catch (Exception e1) { + + } + if (clear != null) { + hasClear = true; + break; + } + } + //在@After注解后面如果有@Clear注解,该注解就无效 + if (!hasClear) { + Class interceptorlll = after.value(); + Object object = Class.forName(interceptorlll.getCanonicalName()).newInstance(); + Class[] clazzs = new Class[]{HttpServletRequest.class, HttpServletResponse.class, Object.class}; + Method method = object.getClass().getMethod("interceptor", clazzs); + Object[] params = new Object[]{httpServletRequest, httpServletResponse, handler}; + method.invoke(object, params); + } + } + } + } + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/UserLoginInterceptor.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/UserLoginInterceptor.java" new file mode 100755 index 0000000..d87afe3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/interceptor/UserLoginInterceptor.java" @@ -0,0 +1,76 @@ +package com.lxinet.jeesns.interceptor; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.exception.JeeException; +import com.lxinet.jeesns.core.utils.SpringContextHolder; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.common.utils.ConfigUtil; +import org.json.JSONObject; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +public class UserLoginInterceptor implements JeesnsInterceptor { + + @Override + public boolean interceptor(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{ + try { + Member loginUser = MemberUtil.getLoginMember(request); + if (loginUser == null || loginUser.getId() == null) { + if (!isAjaxRequest(request)){ + response.sendRedirect(request.getContextPath() + "/member/login"); + }else { + response.setCharacterEncoding("utf-8"); + out(response,"未登录"); + } + return false; + }else { + IMemberService memberService = SpringContextHolder.getBean("memberService"); + Member findMember = memberService.findById(loginUser.getId()); + if(1 == Integer.parseInt((String) request.getServletContext().getAttribute(ConfigUtil.MEMBER_EMAIL_VALID.toUpperCase()))){ + if(findMember.getIsActive() == 0){ + if (!isAjaxRequest(request)){ + response.sendRedirect(request.getContextPath() + "/member/active"); + }else { + out(response,"未激活"); + } + return false; + } + } + } + }catch (Exception e){ + e.printStackTrace(); + return false; + } + return true; + } + + private boolean isAjaxRequest(HttpServletRequest request){ + String header = request.getHeader("X-Requested-With"); + return "XMLHttpRequest".equalsIgnoreCase(header) ? true : false; + } + + private void out(HttpServletResponse response, String msg){ + PrintWriter out = null; + try { + out = response.getWriter(); + JSONObject json = new JSONObject(); + json.put("code",-1); + json.put("message",msg); + out.print(json.toString()); + out.flush(); + } catch (IOException e1) { + e1.printStackTrace(); + }finally { + if (out != null){ + out.close(); + } + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/listener/InitListener.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/listener/InitListener.java" new file mode 100755 index 0000000..b1096b4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/listener/InitListener.java" @@ -0,0 +1,53 @@ +package com.lxinet.jeesns.listener; + +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.core.utils.SpringContextHolder; +import com.lxinet.jeesns.model.system.Config; +import com.lxinet.jeesns.service.system.IConfigService; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/5/25. + */ +public class InitListener implements ServletContextListener { + + public InitListener() { + } + + + @Override + public void contextInitialized(ServletContextEvent sce) { + try { + Const.PROJECT_PATH = sce.getServletContext().getContextPath(); + sce.getServletContext().setAttribute("basePath", Const.PROJECT_PATH); + JeesnsConfig jeesnsConfig = SpringContextHolder.getBean("jeesnsConfig"); + sce.getServletContext().setAttribute("jeesnsConfig",jeesnsConfig); + String frontTemplate = jeesnsConfig.getFrontTemplate(); + sce.getServletContext().setAttribute("frontTemplate",frontTemplate); + String managePath = Const.PROJECT_PATH + "/" + jeesnsConfig.getManagePath(); + Const.GROUP_PATH = Const.PROJECT_PATH + "/" + jeesnsConfig.getGroupPath(); + Const.WEIBO_PATH = Const.PROJECT_PATH + "/" + jeesnsConfig.getWeiboPath(); + sce.getServletContext().setAttribute("managePath",managePath); + sce.getServletContext().setAttribute("groupPath",Const.GROUP_PATH); + sce.getServletContext().setAttribute("weiboPath",Const.WEIBO_PATH); + IConfigService configService = SpringContextHolder.getBean("configService"); + List configList = configService.allList(); + for (Config config : configList) { + sce.getServletContext().setAttribute(config.getJkey().toUpperCase(),config.getJvalue()); + } + }catch (Exception e){ + e.printStackTrace(); + } + + + } + + @Override + public void contextDestroyed(ServletContextEvent sce) { + + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/utils/StaticFieldInjection.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/utils/StaticFieldInjection.java" new file mode 100755 index 0000000..4cd0c30 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/utils/StaticFieldInjection.java" @@ -0,0 +1,22 @@ +package com.lxinet.jeesns.utils; + +import com.lxinet.jeesns.core.utils.LocaleUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; +import org.springframework.stereotype.Component; +import javax.annotation.PostConstruct; + +/** + * @author zchuanzhao + */ +@Component +public class StaticFieldInjection { + + @Autowired + private MessageSource messageSource; + + @PostConstruct + private void init(){ + LocaleUtil.setMessageSource(messageSource); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/BaseController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/BaseController.java" new file mode 100755 index 0000000..b141a9b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/BaseController.java" @@ -0,0 +1,148 @@ +package com.lxinet.jeesns.web.common; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.JeeException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.model.member.MemberToken; +import com.lxinet.jeesns.service.member.IMemberTokenService; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.StringUtils; +import org.json.JSONObject; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.annotation.ExceptionHandler; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.net.URLEncoder; +import java.util.List; + +/** + * Controller基类 + * Created by zchuanzhao on 2016/11/26. + */ +public class BaseController { + @Resource + protected HttpServletRequest request; + @Resource + protected HttpServletResponse response; + @Resource + protected IMemberTokenService memberTokenService; + + protected ResultModel validMemberToken(){ + ResultModel model = new ResultModel(-1,"非法操作"); + String token = getParam("token"); + if (StringUtils.isNotEmpty(token)){ + MemberToken memberToken = memberTokenService.getByToken(token); + if (memberToken != null){ + model.setData(memberToken); + model.setCode(0); + model.setMessage(""); + } + } + return model; + } + + protected String getParam(String name){ + return request.getParameter(name); + } + + protected String getParam(String name, String defaultValue){ + String value = getParam(name); + if (null == value){ + value = defaultValue; + } + return value; + } + + protected int getParamToInt(String name) throws ParamException { + String value = getParam(name); + try { + return Integer.parseInt(value); + }catch (Exception e){ + throw new ParamException("参数异常"); + } + } + + protected int getParamToInt(String name, int defaultValue){ + try { + return getParamToInt(name); + } catch (ParamException paramException) { + return defaultValue; + } + } + + protected double getParamToDouble(String name) throws ParamException { + String value = getParam(name); + try { + return Double.parseDouble(value); + }catch (Exception e){ + throw new ParamException("参数异常"); + } + } + + protected double getParamToInt(String name, double defaultValue){ + try { + return getParamToDouble(name); + } catch (ParamException paramException) { + return defaultValue; + } + } + + + protected String getErrorMessages(BindingResult result) { + StringBuffer errorMessages = new StringBuffer(); + List list = result.getFieldErrors(); + int count = 0; + for (FieldError error : list) { + errorMessages.append(error.getDefaultMessage()); + count ++; + if(count < list.size()){ + errorMessages.append("
"); + } + } + return errorMessages.toString(); + } + + protected String errorModel(Model model,String msg){ + model.addAttribute("msg",msg); + return Const.MANAGE_ERROR_FTL_PATH; + } + + /** + * 判断是否是AJAX请求 + * @return true ajax + */ + protected boolean isAjaxRequest(){ + String header = request.getHeader("X-Requested-With"); + return "XMLHttpRequest".equalsIgnoreCase(header) ? true : false; + } + + /** + * 全局捕获异常 + * @param e 捕获到的异常 + */ + @ExceptionHandler + public void execptionHandler(Exception e){ + //ajax请求在aop中处理异常 + if (!isAjaxRequest()){ + try { + e.printStackTrace(); + String msg = "系统异常:" + e.toString(); + if (e instanceof JeeException && ((JeeException) e).getJeeMessage() != null){ + msg = ((JeeException) e).getJeeMessage().getMessage(); + } + msg = URLEncoder.encode(msg, "UTF-8"); + request.setAttribute("msg",msg); + response.sendRedirect(request.getContextPath() + "/error?msg="+msg); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/CkeditorUploadController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/CkeditorUploadController.java" new file mode 100755 index 0000000..3b9bceb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/common/CkeditorUploadController.java" @@ -0,0 +1,102 @@ +package com.lxinet.jeesns.web.common; + + +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; +import com.lxinet.jeesns.core.utils.Const; +import org.apache.commons.fileupload.servlet.ServletFileUpload; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + + +/** + * ckeditor上传文件 + * Created by zchuanzhao on 2017/09/06. + */ +@Controller +@RequestMapping("/ckeditorUpload") +public class CkeditorUploadController extends BaseController { + + /** + * 上传图片 + * @param upload + */ + @RequestMapping(value = "/uploadImage") + public void uploadImage(@RequestParam MultipartFile[] upload) { + String callback = request.getParameter("CKEditorFuncNum"); + PrintWriter out = null; + try { + response.setCharacterEncoding("utf-8"); + out = response.getWriter(); + } catch (IOException e) { + e.printStackTrace(); + } + if (!ServletFileUpload.isMultipartContent(request)) { + out.print(""); + out.flush(); + out.close(); + } + + String fileName;//上传的图片文件名 + String suffix;//上传图片的文件扩展名 + for (MultipartFile file : upload) { + if (file.getSize() > 1 * 1024 * 1024) { + out.print(""); + out.flush(); + out.close(); + } + + fileName = file.getOriginalFilename(); + suffix = fileName.substring(fileName.lastIndexOf("."), fileName.length()).toLowerCase(); + String[] imageExtensionNameArray = {".jpg", ".jpeg", ".png", ".gif", ".bmp"}; + String allImageExtensionName = ""; + boolean isContain = false;//默认不包含上传图片文件扩展名 + for (int i = 0; i < imageExtensionNameArray.length; i++) { + if (suffix.equals(imageExtensionNameArray[i])) { + isContain = true; + } + if (i == 0) { + allImageExtensionName += imageExtensionNameArray[i]; + } else { + allImageExtensionName += " , " + imageExtensionNameArray[i]; + } + + } + + String newFileName = UUID.randomUUID() + suffix; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String ymd = sdf.format(new Date()); + String path = Const.UPLOAD_PATH + "/images/" + ymd + "/"; + String savePath = request.getServletContext().getRealPath(path); + if (isContain) {//包含 + File baseFile = new File(savePath); + if (!baseFile.exists()) { // 如果路径不存在,创建 + baseFile.mkdirs(); + } + File targetFile = new File(baseFile, newFileName); + try { + file.transferTo(targetFile); + } catch (IOException e) { + out.print(""); + out.flush(); + out.close(); + } + String imageUrl = request.getContextPath() + path + newFileName; + out.print(""); + out.flush(); + out.close(); + + } else { + out.print(""); + out.flush(); + out.close(); + } + } + } +} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ActionController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ActionController.java" new file mode 100755 index 0000000..99e9329 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ActionController.java" @@ -0,0 +1,35 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.system.ActionLog; +import com.lxinet.jeesns.service.system.IActionLogService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; + +/** + * 动态 + * Created by zchuanzhao on 2017/3/8. + */ +@Controller("frontActionController") +@RequestMapping("/action/") +public class ActionController extends BaseController { + @Resource + private IActionLogService actionLogService; + @Resource + private JeesnsConfig jeesnsConfig; + + @RequestMapping("list") + public String list(Model model){ + Page page = new Page(request); + ResultModel actionList = actionLogService.memberActionLog(page,0); + model.addAttribute("model", actionList); + return jeesnsConfig.getFrontTemplate() + "/action/list"; + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ArticleController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ArticleController.java" new file mode 100755 index 0000000..f00561e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ArticleController.java" @@ -0,0 +1,219 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotFountException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.model.cms.ArticleComment; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.cms.ArticleCate; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.service.cms.IArticleCateService; +import com.lxinet.jeesns.service.cms.IArticleCommentService; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.model.member.Member; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.io.UnsupportedEncodingException; +import java.util.List; + +/** + * 前台文章Controller + * Created by zchuanzhao on 16/9/29. + */ +@Controller("frontArticleController") +@RequestMapping("/article") +public class ArticleController extends BaseController { + @Resource + private JeesnsConfig jeesnsConfig; + @Resource + private IArticleCateService articleCateService; + @Resource + private IArticleService articleService; + @Resource + private IArchiveService archiveService; + @Resource + private IArticleCommentService articleCommentService; + + @RequestMapping(value="/list",method = RequestMethod.GET) + public String list(String key, @RequestParam(value = "cid",defaultValue = "0",required = false) Integer cid, + @RequestParam(value = "memberId",defaultValue = "0",required = false) Integer memberId, Model model) { + if (StringUtils.isNotEmpty(key)){ + try { + key = new String(key.getBytes("iso-8859-1"),"utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + Page page = new Page(request); + ResultModel resultModel = articleService.listByPage(page,key,cid,1,memberId); + model.addAttribute("model", resultModel); + List articleCateList = articleCateService.list(); + model.addAttribute("articleCateList",articleCateList); + ArticleCate articleCate = articleCateService.findById(cid); + model.addAttribute("articleCate",articleCate); + return jeesnsConfig.getFrontTemplate() + "/cms/list"; + } + + @RequestMapping(value="/detail/{id}",method = RequestMethod.GET) + public String detail(@PathVariable("id") Integer id, Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + Article article = articleService.findById(id,loginMember); + //文章不存在或者访问未审核的文章,跳到错误页面,提示文章不存在 + if(article == null || article.getStatus() == 0){ + throw new NotFountException(Messages.ARTICLE_NOT_EXISTS); + } + //更新文章访问次数 + archiveService.updateViewCount(article.getArchiveId()); + model.addAttribute("article",article); + List articleCateList = articleCateService.list(); + model.addAttribute("articleCateList",articleCateList); + model.addAttribute("loginUser",loginMember); + return jeesnsConfig.getFrontTemplate() + "/cms/detail"; + } + + @RequestMapping(value="/add",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String add(Model model) { + List cateList = articleCateService.list(); + model.addAttribute("cateList",cateList); + String judgeLoginJump = MemberUtil.judgeLoginJump(request, RedirectUrlUtil.ARTICLE_ADD); + if(StringUtils.isNotEmpty(judgeLoginJump)){ + return judgeLoginJump; + } + return jeesnsConfig.getFrontTemplate() + "/cms/add"; + } + + @RequestMapping(value="/save",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel save(@Valid Article article, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + return new ResultModel(-1,getErrorMessages(bindingResult)); + } + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(articleService.save(loginMember,article)); + if(resultModel.getCode() == 0){ + resultModel.setCode(2); + //文章需要审核就跳转到列表页面 + if(article.getStatus() == 0){ + resultModel.setMessage("文章发布成功,请等待审核"); + resultModel.setUrl(request.getContextPath()+"/article/list"); + }else { + resultModel.setUrl(request.getContextPath()+"/article/detail/"+article.getId()); + } + } + return resultModel; + } + + @RequestMapping(value="/edit/{id}",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String edit(@PathVariable("id") int id, Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + String judgeLoginJump = MemberUtil.judgeLoginJump(request, RedirectUrlUtil.ARTICLE_EDIT+"/"+id); + if(StringUtils.isNotEmpty(judgeLoginJump)){ + return judgeLoginJump; + } + Article article = articleService.findById(id,loginMember); + if(article.getMemberId().intValue() != loginMember.getId().intValue()){ + throw new NotFountException(Messages.ARTICLE_NOT_EXISTS); + } + model.addAttribute("article",article); + List cateList = articleCateService.list(); + model.addAttribute("cateList",cateList); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/cms/edit"; + } + + @RequestMapping(value="/update",method = RequestMethod.POST) + @ResponseBody + public ResultModel update(@Valid Article article,BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + new ResultModel(-1,getErrorMessages(bindingResult)); + } + if(article.getId() == null){ + return new ResultModel(-2); + } + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(articleService.update(loginMember,article)); + if(resultModel.getCode() == 0){ + resultModel.setCode(2); + resultModel.setUrl(request.getContextPath() + "/article/detail/"+article.getId()); + } + return resultModel; + } + + /** + * 评论文章 + * @param articleId + * @param content + * @return + */ + @RequestMapping(value="/comment/{articleId}",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel comment(@PathVariable("articleId") Integer articleId, String content){ + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(articleCommentService.save(loginMember,content,articleId)); + } + + + @RequestMapping(value="/commentList/{articleId}.json",method = RequestMethod.GET) + @ResponseBody + public ResultModel commentList(@PathVariable("articleId") Integer articleId){ + Page page = new Page(request); + if(articleId == null){ + articleId = 0; + } + List list = articleCommentService.listByPage(page,articleId, null); + ResultModel resultModel = new ResultModel(0,page); + resultModel.setData(list); + return resultModel; + } + + + @RequestMapping(value="/delete/{id}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel delete(@PathVariable("id") int id){ + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember.getIsAdmin() == 0){ + return new ResultModel(-1,"权限不足"); + } + ResultModel resultModel = new ResultModel(articleService.delete(loginMember,id)); + if(resultModel.getCode() > 0){ + resultModel.setCode(2); + resultModel.setUrl(request.getContextPath() + "/article/list"); + } + return resultModel; + } + + + /** + * 文章、喜欢 + * @param id + * @return + */ + @RequestMapping(value="/favor/{id}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel favor(@PathVariable("id") Integer id){ + Member loginMember = MemberUtil.getLoginMember(request); + if(id == null) { + throw new ParamException(); + } + ResultModel resultModel = articleService.favor(loginMember,id); + return resultModel; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/CheckinController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/CheckinController.java" new file mode 100755 index 0000000..7f6a21b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/CheckinController.java" @@ -0,0 +1,51 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.model.member.Checkin; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.ICheckinService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 签到 + * Created by zchuanzhao on 2018/8/20. + */ +@Controller +@RequestMapping("/checkin/") +public class CheckinController extends BaseController { + @Resource + private ICheckinService checkinService; + @Resource + private JeesnsConfig jeesnsConfig; + + @RequestMapping({"","index"}) + public String index(Model model){ + Page page = new Page(request); + List list = checkinService.todayList(page); + ResultModel resultModel = new ResultModel(0, page); + resultModel.setData(list); + model.addAttribute("model",resultModel); + model.addAttribute("todayContinueList",checkinService.todayContinueList()); + return jeesnsConfig.getFrontTemplate() + "/checkin/index"; + } + + @RequestMapping("save") + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel save(){ + Member member = MemberUtil.getLoginMember(request); + return new ResultModel<>(checkinService.save(member.getId())); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/GroupController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/GroupController.java" new file mode 100755 index 0000000..751d132 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/GroupController.java" @@ -0,0 +1,590 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.model.group.*; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.service.group.*; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/26. + */ +@Controller("frontGroupController") +@RequestMapping("/${groupPath}") +public class GroupController extends BaseController { + @Resource + private JeesnsConfig jeesnsConfig; + @Resource + private IGroupService groupService; + @Resource + private IGroupTopicService groupTopicService; + @Resource + private IGroupFansService groupFansService; + @Resource + private IGroupTopicCommentService groupTopicCommentService; + @Resource + private IGroupTopicTypeService groupTopicTypeService; + @Resource + private IArchiveService archiveService; + @Resource + private IMemberService memberService; + @Resource + private IGroupTypeService groupTypeService; + + @RequestMapping(value = {"/","/index"}, method = RequestMethod.GET) + public String index(String key, Model model) { + List list = groupService.list(1, key); + model.addAttribute("list", list); + model.addAttribute("key", key); + return jeesnsConfig.getFrontTemplate() + "/group/index"; + } + + @RequestMapping(value = "/apply", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String apply(Model model) { + String judgeLoginJump = MemberUtil.judgeLoginJump(request, Const.GROUP_PATH + RedirectUrlUtil.GROUP_APPLY); + if (StringUtils.isNotEmpty(judgeLoginJump)) { + return judgeLoginJump; + } + List groupTypeList = groupTypeService.list(); + model.addAttribute("groupTypeList",groupTypeList); + return jeesnsConfig.getFrontTemplate() + "/group/apply"; + } + + /** + * 群组详情页面 + * + * @param groupId + * @param model + * @return + */ + @RequestMapping(value = "/detail/{groupId}", method = RequestMethod.GET) + public String detail(@PathVariable("groupId") Integer groupId, @RequestParam(value = "typeId", defaultValue = "0") Integer typeId, Model model) { + Page page = new Page(request); + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + Member loginMember = MemberUtil.getLoginMember(request); + int memberId = 0; + if (loginMember != null) { + memberId = loginMember.getId(); + } + //判断是否已关注该群组 + GroupFans groupFans = groupFansService.findByMemberAndGroup(groupId, memberId); + if (groupFans == null) { + model.addAttribute("isfollow", false); + } else { + model.addAttribute("isfollow", true); + } + //获取群组帖子列表 + ResultModel resultModel = groupTopicService.listByPage(page, null, groupId, 1, 0, typeId); + model.addAttribute("model", resultModel); + String managerIds = group.getManagers(); + List managerList = new ArrayList<>(); + if (StringUtils.isNotEmpty(managerIds)) { + String[] idArr = managerIds.split(","); + for (String id : idArr) { + Member member = memberService.findById(Integer.parseInt(id)); + if (member != null) { + managerList.add(member); + } + } + } + model.addAttribute("managerList", managerList); + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + if (loginMember == null) { + model.addAttribute("isManager", 0); + } else { + boolean isManager = false; + for (String manager : groupManagerArr) { + if (loginMember.getId() == Integer.parseInt(manager)) { + isManager = true; + } + } + if (isManager || loginMember.getId().intValue() == group.getCreator().intValue()) { + model.addAttribute("isManager", 1); + } + } + //获取群组粉丝列表,第一页,20条数据 + Page groupFansPage = new Page(1, 20); + List groupFansList = (List) groupFansService.listByPage(groupFansPage, groupId).getData(); + List groupTopicTypeList = groupTopicTypeService.list(groupId); + model.addAttribute("groupFansList", groupFansList); + model.addAttribute("groupTopicTypeList", groupTopicTypeList); + model.addAttribute("loginUser", loginMember); + model.addAttribute("typeId", typeId); + return jeesnsConfig.getFrontTemplate() + "/group/detail"; + } + + @RequestMapping(value = "/apply", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel apply(Group group) { + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupService.save(loginMember, group)); + } + + + @RequestMapping(value = "/edit/{groupId}", method = RequestMethod.GET) + public String edit(@PathVariable("groupId") Integer groupId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + String judgeLoginJump = MemberUtil.judgeLoginJump(request, Const.GROUP_PATH + RedirectUrlUtil.GROUP_EDIT + "/" + groupId); + if (StringUtils.isNotEmpty(judgeLoginJump)) { + return judgeLoginJump; + } + + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + if (group.getCreator().intValue() != loginMember.getId().intValue()) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1001, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + String managerIds = group.getManagers(); + String newManagerNames = ""; + if (StringUtils.isNotEmpty(managerIds)) { + String[] idArr = managerIds.split(","); + for (String id : idArr) { + Member member = memberService.findById(Integer.parseInt(id)); + if (member != null) { + newManagerNames += member.getName() + ","; + } + } + if (newManagerNames.length() > 0) { + newManagerNames = newManagerNames.substring(0, newManagerNames.length() - 1); + } + } + List groupTypeList = groupTypeService.list(); + model.addAttribute("groupTypeList",groupTypeList); + model.addAttribute("managerNames", newManagerNames); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/group/edit"; + } + + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel update(Group group) { + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupService.update(loginMember, group)); + } + + @RequestMapping(value = "/topic/{topicId}", method = RequestMethod.GET) + public String topic(@PathVariable("topicId") Integer topicId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + GroupTopic groupTopic = groupTopicService.findById(topicId, loginMember); + if (groupTopic == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1004, Const.INDEX_ERROR_FTL_PATH); + } + archiveService.updateViewCount(groupTopic.getArchiveId()); + model.addAttribute("groupTopic", groupTopic); + + Group group = groupService.findById(groupTopic.getGroup().getId()); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1000, Const.INDEX_ERROR_FTL_PATH); + } + String groupManagers = group.getManagers(); + String[] groupManagerArr = groupManagers.split(","); + boolean isfollow = false; + if (loginMember == null) { + model.addAttribute("isPermission", 0); + } else { + boolean isManager = false; + for (String manager : groupManagerArr) { + if (loginMember.getId() == Integer.parseInt(manager)) { + isManager = true; + } + } + if (loginMember.getId().intValue() == groupTopic.getMember().getId().intValue() || loginMember.getIsAdmin() > 0 || + isManager || loginMember.getId().intValue() == group.getCreator().intValue()) { + model.addAttribute("isPermission", 1); + } + //判断是否已关注该群组 + GroupFans groupFans = groupFansService.findByMemberAndGroup(groupTopic.getGroup().getId(), loginMember.getId()); + if (groupFans != null) { + isfollow = true; + } + } + model.addAttribute("isfollow", isfollow); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/group/topic"; + } + + @RequestMapping(value = "/post/{groupId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String post(@PathVariable("groupId") Integer groupId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + String judgeLoginJump = MemberUtil.judgeLoginJump(request, Const.GROUP_PATH + RedirectUrlUtil.GROUP_POST + "/" + groupId); + if (StringUtils.isNotEmpty(judgeLoginJump)) { + return judgeLoginJump; + } + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + GroupFans groupFans = groupFansService.findByMemberAndGroup(groupId, loginMember.getId()); + if (groupFans == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1003, Const.INDEX_ERROR_FTL_PATH); + } + if (group.getCanPost() == 0) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1006, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + List groupTopicTypeList = groupTopicTypeService.list(groupId); + model.addAttribute("groupTopicTypeList", groupTopicTypeList); + return jeesnsConfig.getFrontTemplate() + "/group/post"; + } + + @RequestMapping(value = "/post", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel post(GroupTopic groupTopic) { + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(groupTopicService.save(loginMember, groupTopic)); + resultModel.setData(groupTopic.getId()); + return resultModel; + } + + @RequestMapping(value = "/topicEdit/{topicId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String topicEdit(@PathVariable("topicId") Integer topicId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + String judgeLoginJump = MemberUtil.judgeLoginJump(request, Const.GROUP_PATH + RedirectUrlUtil.GROUP_TOPIC_EDIT + "/" + topicId); + if (StringUtils.isNotEmpty(judgeLoginJump)) { + return judgeLoginJump; + } + GroupTopic groupTopic = groupTopicService.findById(topicId, loginMember); + if (groupTopic == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1004, Const.INDEX_ERROR_FTL_PATH); + } + if (loginMember.getId().intValue() != groupTopic.getMember().getId().intValue()) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1001, Const.INDEX_ERROR_FTL_PATH); + } + List groupTopicTypeList = groupTopicTypeService.list(groupTopic.getGroup().getId()); + model.addAttribute("groupTopicTypeList", groupTopicTypeList); + model.addAttribute("groupTopic", groupTopic); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/group/topicEdit"; + } + + @RequestMapping(value = "/topicUpdate", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel topicUpdate(GroupTopic groupTopic) { + Member loginMember = MemberUtil.getLoginMember(request); + boolean result = groupTopicService.update(loginMember, groupTopic); + ResultModel resultModel = new ResultModel(result); + if (result) { + resultModel.setCode(2); + resultModel.setUrl(Const.GROUP_PATH + "/topic/" + groupTopic.getId()); + } + return resultModel; + } + + /** + * 关注群组 + * + * @param groupId + * @return + */ + @RequestMapping(value = "/follow/{groupId}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel follow(@PathVariable("groupId") Integer groupId) { + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupService.follow(loginMember, groupId, 0)); + } + + /** + * 取消关注群组 + * + * @param groupId + * @return + */ + @RequestMapping(value = "/nofollow/{groupId}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel nofollow(@PathVariable("groupId") Integer groupId) { + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupService.follow(loginMember, groupId, 1)); + } + + /** + * 帖子评论 + * + * @param groupTopicId + * @param content + * @return + */ + @RequestMapping(value = "/comment/{groupTopicId}", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel comment(@PathVariable("groupTopicId") Integer groupTopicId, String content, Integer groupTopicCommentId) { + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupTopicCommentService.save(loginMember, content, groupTopicId, groupTopicCommentId)); + } + + + @RequestMapping(value = "/commentList/{groupTopicId}.json", method = RequestMethod.GET) + @ResponseBody + public ResultModel commentList(@PathVariable("groupTopicId") Integer groupTopicId) { + Page page = new Page(request); + if (groupTopicId == null) { + groupTopicId = 0; + } + return groupTopicCommentService.listByGroupTopic(page, groupTopicId); + } + + @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel delete(@PathVariable("id") int id) { + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(groupTopicService.indexDelete(request, loginMember, id)); + return resultModel; + } + + /** + * 未审核帖子列表 + */ + @RequestMapping(value = "/auditList/{groupId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String auditList(@PathVariable("groupId") Integer groupId, Model model) { + Page page = new Page(request); + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + Member loginMember = MemberUtil.getLoginMember(request); + int memberId = 0; + if (loginMember != null) { + memberId = loginMember.getId(); + } + //判断是否已关注该群组 + GroupFans groupFans = groupFansService.findByMemberAndGroup(groupId, memberId); + if (groupFans == null) { + model.addAttribute("isfollow", false); + } else { + model.addAttribute("isfollow", true); + } + //获取群组帖子列表 + ResultModel resultModel = groupTopicService.listByPage(page, null, groupId, 0, 0, 0); + model.addAttribute("model", resultModel); + String managerIds = group.getManagers(); + List managerList = new ArrayList<>(); + if (StringUtils.isNotEmpty(managerIds)) { + String[] idArr = managerIds.split(","); + for (String id : idArr) { + Member member = memberService.findById(Integer.parseInt(id)); + if (member != null) { + managerList.add(member); + } + } + } + model.addAttribute("managerList", managerList); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/group/auditList"; + } + + + @RequestMapping(value = "/audit/{id}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel audit(@PathVariable("id") Integer id) { + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(groupTopicService.audit(loginMember, id)); + return resultModel; + } + + @RequestMapping(value = "/fans/{groupId}", method = RequestMethod.GET) + public String fans(@PathVariable("groupId") Integer groupId, Model model) { + Page page = new Page(request); + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + //获取群组粉丝列表,第一页,20条数据 + ResultModel resultModel = groupFansService.listByPage(page, groupId); + model.addAttribute("model", resultModel); + return jeesnsConfig.getFrontTemplate() + "/group/fans"; + } + + /** + * 置顶、取消置顶 + * + * @param id + * @param top + * @return + */ + @RequestMapping(value = "/topic/top/{id}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel top(@PathVariable("id") Integer id, @RequestParam("top") Integer top) { + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(groupTopicService.top(loginMember, id, top)); + return resultModel; + } + + /** + * 加精、取消加精 + * + * @param id + * @param essence + * @return + */ + @RequestMapping(value = "/topic/essence/{id}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel essence(@PathVariable("id") Integer id, @RequestParam("essence") Integer essence) { + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = new ResultModel(groupTopicService.essence(loginMember, id, essence)); + return resultModel; + } + + + /** + * 帖子、喜欢 + * + * @param id + * @return + */ + @RequestMapping(value = "/topic/favor/{id}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel favor(@PathVariable("id") Integer id) { + Member loginMember = MemberUtil.getLoginMember(request); + if (id == null) { + return new ResultModel(-1, "非法操作"); + } + ResultModel resultModel = groupTopicService.favor(loginMember, id); + return resultModel; + } + + @RequestMapping(value = "/topicTypeList/{groupId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String topicTypeList(@PathVariable("groupId") Integer groupId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1001, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + List list = groupTopicTypeService.list(groupId); + model.addAttribute("list", list); + return jeesnsConfig.getFrontTemplate() + "/group/topicTypeList"; + } + + @RequestMapping(value = "/topicTypeAdd/{groupId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String topicTypeAdd(@PathVariable("groupId") Integer groupId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + Group group = groupService.findById(groupId); + if (group == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1002, Const.INDEX_ERROR_FTL_PATH); + } + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1001, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("group", group); + return jeesnsConfig.getFrontTemplate() + "/group/topicTypeAdd"; + } + + @RequestMapping(value = "/topicTypeSave", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel topicTypeSave(GroupTopicType groupTopicType) { + Member loginMember = MemberUtil.getLoginMember(request); + Group group = groupService.findById(groupTopicType.getGroupId()); + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + throw new ParamException(); + } + ResultModel resultModel = new ResultModel(groupTopicTypeService.save(loginMember, groupTopicType)); + if (resultModel.getCode() == 0) { + resultModel.setCode(3); + } + return resultModel; + } + + @RequestMapping(value = "/topicTypeEdit/{typeId}", method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String topicTypeEdit(@PathVariable("typeId") Integer typeId, Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + GroupTopicType groupTopicType = groupTopicTypeService.findById(typeId); + if (groupTopicType == null) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1013, Const.INDEX_ERROR_FTL_PATH); + } + Group group = groupService.findById(groupTopicType.getGroupId()); + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1001, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("groupTopicType", groupTopicType); + return jeesnsConfig.getFrontTemplate() + "/group/topicTypeEdit"; + } + + @RequestMapping(value = "/topicTypeUpdate", method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel topicTypeUpdate(GroupTopicType groupTopicType) { + Member loginMember = MemberUtil.getLoginMember(request); + Group group = groupService.findById(groupTopicType.getGroupId()); + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + throw new ParamException(); + } + ResultModel resultModel = new ResultModel(groupTopicTypeService.update(loginMember, groupTopicType)); + if (resultModel.getCode() == 0) { + resultModel.setCode(3); + } + return resultModel; + } + + @RequestMapping(value = "/topicTypeDelete/{typeId}", method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public Object topicTypeDelete(@PathVariable("typeId") Integer typeId) { + Member loginMember = MemberUtil.getLoginMember(request); + GroupTopicType groupTopicType = groupTopicTypeService.findById(typeId); + if (groupTopicType == null) { + return new ResultModel(-1, "帖子分类不存在"); + } + Group group = groupService.findById(groupTopicType.getGroupId()); + String managerIds = group.getManagers(); + if (("," + managerIds + ",").indexOf("," + loginMember.getId() + ",") == -1) { + throw new ParamException(); + } + ResultModel resultModel = new ResultModel(groupTopicTypeService.delete(loginMember, typeId)); + if (resultModel.getCode() == 0) { + resultModel.setCode(3); + } + return resultModel; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/IndexController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/IndexController.java" new file mode 100755 index 0000000..1b2ab3f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/IndexController.java" @@ -0,0 +1,174 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.service.common.IArchiveService; +import com.lxinet.jeesns.common.utils.EmojiUtil; +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.ErrorUtil; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.service.common.ILinkService; +import com.lxinet.jeesns.service.group.IGroupFansService; +import com.lxinet.jeesns.service.group.IGroupService; +import com.lxinet.jeesns.service.group.IGroupTopicService; +import com.lxinet.jeesns.service.member.IMemberFansService; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.model.system.ActionLog; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import net.sf.json.JSONObject; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Created by zchuanzhao on 2016/11/25. + */ +@Controller("indexController") +@RequestMapping("/") +public class IndexController extends BaseController{ + @Resource + private IArticleService articleService; + @Resource + private IGroupTopicService groupTopicService; + @Resource + private IGroupService groupService; + @Resource + private IWeiboService weiboService; + @Resource + private IMemberService memberService; + @Resource + private IArchiveService archiveService; + @Resource + private IActionLogService actionLogService; + @Resource + private JeesnsConfig jeesnsConfig; + @Resource + private IGroupFansService groupFansService; + @Resource + private IMemberFansService memberFansService; + @Resource + private ILinkService linkService; + + @RequestMapping(value={"/", "index"},method = RequestMethod.GET) + public String index(@RequestParam(value = "key",required = false,defaultValue = "") String key, Integer cateid,Model model) { + Page page = new Page(request); + if(cateid == null){ + cateid = 0; + } + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + ResultModel linkModel = linkService.recommentList(); + page.setPageSize(50); + model.addAttribute("linkModel",linkModel); + + return jeesnsConfig.getFrontTemplate() + "/index"; + } + + @RequestMapping(value = "u/{id}",method = RequestMethod.GET) + public String u(@PathVariable("id") Integer id, Model model){ + Page page = new Page(request); + Member member = memberService.findById(id); + if(member == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1005, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("member",member); + Member loginMember = MemberUtil.getLoginMember(request); + model.addAttribute("loginMember", loginMember); + ResultModel list = actionLogService.memberActionLog(page,id); + model.addAttribute("actionLogModel",list); + return jeesnsConfig.getFrontTemplate() + "/u"; + } + + @RequestMapping(value = "u/{id}/home/{type}",method = RequestMethod.GET) + public String home(@PathVariable("id") Integer id, @PathVariable("type") String type, Model model){ + Page page = new Page(request); + Member member = memberService.findById(id); + if(member == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1005, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("member",member); + + Member loginMember = MemberUtil.getLoginMember(request); + model.addAttribute("loginMember", loginMember); + int loginMemberId = 0; + if(loginMember != null){ + loginMemberId = loginMember.getId().intValue(); + } + if("article".equals(type)){ + model.addAttribute("model", articleService.listByPage(page,"",0,1, id)); + } else if("groupTopic".equals(type)){ + model.addAttribute("model", groupTopicService.listByPage(page,"",0,1, id,0)); + } else if("group".equals(type)){ + model.addAttribute("model", groupFansService.listByMember(page, id)); + } else if("weibo".equals(type)){ + model.addAttribute("model", weiboService.listByPage(page,id,loginMemberId,"")); + } else if("follows".equals(type)){ + model.addAttribute("model", memberFansService.followsList(page,id)); + } else if("fans".equals(type)){ + model.addAttribute("model", memberFansService.fansList(page,id)); + } + model.addAttribute("type",type); + return jeesnsConfig.getFrontTemplate() + "/home"; + } + + + @RequestMapping(value = "newVersion",method = RequestMethod.GET) + public void newVersion(@RequestParam("callback") String callback){ + response.setCharacterEncoding("utf-8"); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("LAST_SYSTEM_VERSION",Const.LAST_SYSTEM_VERSION); + jsonObject.put("LAST_SYSTEM_UPDATE_TIME", Const.LAST_SYSTEM_UPDATE_TIME); + PrintWriter out = null; + try { + out = response.getWriter(); + } catch (IOException e) { + e.printStackTrace(); + } + out.print(callback + "(" + jsonObject.toString() + ")"); + out.flush(); + out.close(); + } + /** + * 获取Emoji数据 + * @return + */ + @RequestMapping(value="/emoji/emojiJsonData.json",method = RequestMethod.GET) + @ResponseBody + public Object emojiJsonData(){ + return EmojiUtil.emojiJson(); + } + + @RequestMapping(value="/404",method = RequestMethod.GET) + public String jeesns404(){ + return jeesnsConfig.getFrontTemplate() + "/common/404"; + } + + @RequestMapping(value="/error",method = RequestMethod.GET) + public String error(String msg){ + if (StringUtils.isNotBlank(msg)){ + request.setAttribute("msg", msg); + } + return jeesnsConfig.getFrontTemplate() + "/common/error"; + } + + /** + * 友情链接 + * @param model + * @return + */ + @RequestMapping(value={"/link"},method = RequestMethod.GET) + public String link(Model model) { + ResultModel linkModel = linkService.allList(); + model.addAttribute("linkModel",linkModel); + return jeesnsConfig.getFrontTemplate() + "/link"; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/MemberController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/MemberController.java" new file mode 100755 index 0000000..26ae2ef --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/MemberController.java" @@ -0,0 +1,360 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.member.IMessageService; +import com.lxinet.jeesns.model.system.ActionLog; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IConfigService; +//import com.lxinet.jeesns.modules.weibo.service.IWeiboService; +import com.lxinet.jeesns.common.utils.ConfigUtil; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * Created by zchuanzhao on 2016/11/22. + */ +@Controller("memberIndexController") +@RequestMapping("/member") +public class MemberController extends BaseController { + private static final String MEMBER_FTL_PATH = "/member/"; + @Resource + private IMemberService memberService; + @Resource + private IConfigService configService; + @Resource + private IActionLogService actionLogService; + @Resource + private IMessageService messageService; + @Resource + private JeesnsConfig jeesnsConfig; + + @RequestMapping(value = "/login",method = RequestMethod.GET) + public String login(Model model,@RequestParam(value = "redirectUrl",required = false,defaultValue = "") String redirectUrl){ + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember != null){ + return "redirect:/member/"; + } + model.addAttribute("redirectUrl",redirectUrl); + return MEMBER_FTL_PATH + "/login"; + } + + @RequestMapping(value = "/login",method = RequestMethod.POST) + @ResponseBody + public ResultModel login(Member member, @RequestParam(value = "redirectUrl",required = false,defaultValue = "") String redirectUrl){ + ResultModel resultModel = new ResultModel(memberService.login(member,request)); + resultModel.setCode(3); + if (StringUtils.isNotEmpty(redirectUrl) && resultModel.getCode() >= 0){ + resultModel.setUrl(redirectUrl); + }else { + resultModel.setUrl(request.getContextPath() + "/member/"); + } + return resultModel; + } + + @RequestMapping(value = "/register",method = RequestMethod.GET) + public String register(){ + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember != null){ + return "redirect:/member/"; + } + return MEMBER_FTL_PATH + "/register"; + } + + @RequestMapping(value = "/register",method = RequestMethod.POST) + @ResponseBody + public ResultModel register(Member member, String repassword){ + Map config = configService.getConfigToMap(); + if("0".equals(config.get(ConfigUtil.MEMBER_REGISTER_OPEN))){ + return new ResultModel(-1,"注册功能已关闭"); + } + if(member == null){ + throw new ParamException(); + } + if(member.getName().length() < 6){ + return new ResultModel(-1,"用户名长度最少6位"); + } + if(!StringUtils.checkNickname(member.getName())){ + return new ResultModel(-1,"用户名只能由中文、字母、数字、下划线(_)或者短横线(-)组成"); + } + if(!StringUtils.isEmail(member.getEmail())){ + return new ResultModel(-1,"邮箱格式错误"); + } + if(member.getPassword().length() < 6){ + return new ResultModel(-1,"密码长度最少6位"); + } + if(!member.getPassword().equals(repassword)){ + return new ResultModel(-1,"两次密码输入不一致"); + } + return memberService.register(member,request); + } + + @RequestMapping(value = "/active",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String active(){ + return MEMBER_FTL_PATH + "/active"; + } + + @RequestMapping(value = "/active",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel active(String randomCode){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.active(loginMember,randomCode,request); + } + + @RequestMapping(value = "/sendEmailActiveValidCode",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel sendEmailActiveValidCode(){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.sendEmailActiveValidCode(loginMember, request); + } + + @RequestMapping(value = "/forgetpwd",method = RequestMethod.GET) + public String forgetpwd(){ + return MEMBER_FTL_PATH + "/forgetpwd"; + } + + @RequestMapping(value = "/forgetpwd",method = RequestMethod.POST) + @ResponseBody + public ResultModel forgetpwd(String name, String email){ + return memberService.forgetpwd(name, email, request); + } + + @RequestMapping(value = "/resetpwd",method = RequestMethod.GET) + public String resetpwd(String email,String token,Model model){ + model.addAttribute("email",email); + model.addAttribute("token",token); + return MEMBER_FTL_PATH + "/resetpwd"; + } + + @RequestMapping(value = "/resetpwd",method = RequestMethod.POST) + @ResponseBody + public ResultModel resetpwd(String email, String token, String password, String repassword){ + if(StringUtils.isEmpty(password)){ + return new ResultModel(-1,"新密码不能为空"); + } + if(password.length() < 6){ + return new ResultModel(-1,"密码不能少于6个字符"); + } + if(!password.equals(repassword)){ + return new ResultModel(-1,"两次密码输入不一致"); + } + return memberService.resetpwd(email,token,password,request); + } + + + @RequestMapping(value = "/",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String index(Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + Page page = new Page(request); + ResultModel list = actionLogService.memberActionLog(page,loginMemberId); + model.addAttribute("actionLogModel",list); + return MEMBER_FTL_PATH + "index"; + } + + + @RequestMapping(value = "/editInfo",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String editInfo(){ + return MEMBER_FTL_PATH + "editInfo"; + } + + @RequestMapping(value = "/editBaseInfo",method = RequestMethod.POST) + @ResponseBody + public ResultModel editBaseInfo(String name, String sex, String introduce){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.editBaseInfo(loginMember,name,sex,introduce); + } + + @RequestMapping(value = "/editOtherInfo",method = RequestMethod.POST) + @ResponseBody + public ResultModel editOtherInfo(String birthday, String qq, String wechat, String contactPhone, + String contactEmail, String website){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.editOtherInfo(loginMember,birthday,qq,wechat,contactPhone,contactEmail,website); + } + + @RequestMapping(value = "/avatar",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String avatar(){ + return MEMBER_FTL_PATH + "avatar"; + } + + @RequestMapping(value = "/password",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String password(){ + return MEMBER_FTL_PATH + "password"; + } + + @RequestMapping(value = "/password",method = RequestMethod.POST) + @ResponseBody + public ResultModel password(String oldPassword, String newPassword, String renewPassword){ + if(StringUtils.isEmpty(oldPassword)){ + return new ResultModel(-1,"旧密码不能为空"); + } + if(StringUtils.isEmpty(newPassword)){ + return new ResultModel(-1,"新密码不能为空"); + } + if(!newPassword.equals(renewPassword)){ + return new ResultModel(-1,"两次密码输入不一致"); + } + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.changepwd(loginMember,oldPassword,newPassword); + } + + @RequestMapping(value = "/logout",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String logout(){ + MemberUtil.setLoginMember(request,null); + return "redirect:/member/login"; + } + + /** + * 关注、取消关注 + * @param followWhoId + * @return + */ + @RequestMapping(value = "/follows/{followWhoId}",method = RequestMethod.GET) + @ResponseBody + public ResultModel follows(@PathVariable(value = "followWhoId") Integer followWhoId){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.follows(loginMember,followWhoId); + } + + /** + * 查询是否已关注该用户 + * @param followWhoId + * @return + */ + @RequestMapping(value = "/isFollowed/{followWhoId}",method = RequestMethod.GET) + @ResponseBody + public ResultModel isFollowed(@PathVariable(value = "followWhoId") Integer followWhoId){ + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.isFollowed(loginMember,followWhoId); + } + + + /** + * 获取该登录会员的收件信息 + * @param memberId + * @return + */ + @RequestMapping(value = "/message",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String message(@RequestParam(value = "mid",required = false,defaultValue = "-1") Integer memberId,Model model){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + Integer loginMemberId = -1; + if(loginMember != null){ + loginMemberId = loginMember.getId(); + } + //获取联系人 +// ResponseModel contactMembers = messageService.listContactMembers(page, loginMemberId); +// 获取联系人 +// ResponseModel contactMembers = messageService.listContactMembers(page, memberId, loginMemberId); +// model.addAttribute("model", contactMembers); + return MEMBER_FTL_PATH + "message"; + } + + /** + * 获取联系人 + * @return + */ + @RequestMapping(value = "/listContactMembers",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel listContactMembers(){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + //获取联系人 + ResultModel contactMembers = memberService.listContactMembers(page, loginMember.getId()); + return contactMembers; + } + + /** + * 获取聊天记录 + * @param memberId + * @return + */ + @RequestMapping(value = "/messageRecords/{memberId}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel messageRecords(@PathVariable("memberId") Integer memberId){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel messageRecords = messageService.messageRecords(page, memberId, loginMember.getId()); + return messageRecords; + } + + /** + * 发送信息窗口 + * @param memberId + * @param model + * @return + */ + @RequestMapping(value = "/sendMessageBox",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String sendMessageBox(@RequestParam(value = "mid") Integer memberId,Model model){ + if(memberId == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1000, Const.INDEX_ERROR_FTL_PATH); + } + Member findMember= memberService.findById(memberId); + if(findMember == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model, -1005, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("member", findMember); + return MEMBER_FTL_PATH + "sendMessageBox"; + } + + /** + * 发送信息 + * @param content + * @param memberId + * @return + */ + @RequestMapping(value = "/sendMessage",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel sendMessage(String content,Integer memberId){ + Member loginMember = MemberUtil.getLoginMember(request); + if(memberId == null){ + return new ResultModel(-1,"请选择发送对象"); + } + Member findMember= memberService.findById(memberId); + if(findMember == null){ + return new ResultModel(-1,"会员不存在"); + } + return messageService.sentMsg(loginMember.getId(), memberId, content); + } + + /** + * 系统信息 + * @param model + * @return + */ + @RequestMapping(value = "/systemMessage",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String systemMessage(Model model){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel messageModel = messageService.systemMessage(page, loginMember.getId(),request.getContextPath()); + model.addAttribute("messageModel",messageModel); + return MEMBER_FTL_PATH + "systemMessage"; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/PictureController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/PictureController.java" new file mode 100755 index 0000000..a7a8277 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/PictureController.java" @@ -0,0 +1,268 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.*; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.model.picture.PictureAlbum; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.picture.IPictureAlbumService; +import com.lxinet.jeesns.service.picture.IPictureCommentService; +import com.lxinet.jeesns.service.picture.IPictureService; +import com.lxinet.jeesns.web.common.BaseController; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.UUID; + + +/** + * + * @author zchuanzhao + * @date 2016/11/22 + */ +@Controller("frontPictureController") +@RequestMapping("/") +public class PictureController extends BaseController { + private static final String MEMBER_FTL_PATH = "/member/"; + @Resource + private IPictureAlbumService pictureAlbumService; + @Resource + private IPictureService pictureService; + @Resource + private IPictureCommentService pictureCommentService; + @Resource + private IMemberService memberService; + @Resource + private JeesnsConfig jeesnsConfig; + + @RequestMapping(value = "/picture/album/{memberId}",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String album(Model model,@PathVariable("memberId") Integer memberId){ + Member findMember = memberService.findById(memberId); + ResultModel resultModel = pictureAlbumService.listByMember(memberId); + model.addAttribute("model", resultModel); + model.addAttribute("member",findMember); + return jeesnsConfig.getFrontTemplate() + "/picture/album"; + } + + @RequestMapping(value = "/member/picture/album",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String album(Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = pictureAlbumService.listByMember(loginMember.getId()); + model.addAttribute("model", resultModel); + return MEMBER_FTL_PATH + "/picture/album"; + } + + @RequestMapping(value = "/member/picture/addAlbum",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String addAlbum(Model model){ + return MEMBER_FTL_PATH + "/picture/addAlbum"; + } + + @RequestMapping(value = "/member/picture/saveAlbum",method = RequestMethod.POST) + @Before(UserLoginInterceptor.class) + @ResponseBody + public ResultModel saveAlbum(PictureAlbum pictureAlbum){ + if (StringUtils.isEmpty(pictureAlbum.getName())){ + return new ResultModel(-1,"相册名称不能为空"); + } + Member loginMember = MemberUtil.getLoginMember(request); + pictureAlbum.setMemberId(loginMember.getId()); + return new ResultModel(pictureAlbumService.save(pictureAlbum)); + } + + @RequestMapping(value = "/picture/list/{memberId}-{albumId}",method = RequestMethod.GET) + public String indexList(Model model,@PathVariable("memberId") Integer memberId,@PathVariable("albumId") Integer albumId){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + PictureAlbum pictureAlbum = pictureAlbumService.findById(albumId); + if (pictureAlbum == null || memberId.intValue() != pictureAlbum.getMemberId().intValue()){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1010, Const.INDEX_ERROR_FTL_PATH); + } + if (pictureAlbum.getJuri() != 0){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1012, Const.INDEX_ERROR_FTL_PATH); + } + ResultModel resultModel = pictureService.listByAlbum(page,albumId,loginMemberId); + model.addAttribute("model", resultModel); + model.addAttribute("pictureAlbum",pictureAlbum); + return jeesnsConfig.getFrontTemplate() + "/picture/list"; + } + + @RequestMapping(value = "/member/picture/list/{memberId}-{albumId}",method = RequestMethod.GET) + @Before(UserLoginInterceptor.class) + public String list(Model model,@PathVariable("memberId") Integer memberId,@PathVariable("albumId") Integer albumId){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + if (loginMemberId != memberId){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1001, Const.INDEX_ERROR_FTL_PATH); + } + PictureAlbum pictureAlbum = pictureAlbumService.findById(albumId); + if (pictureAlbum == null || memberId.intValue() != pictureAlbum.getMemberId().intValue()){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1010, Const.INDEX_ERROR_FTL_PATH); + } + ResultModel resultModel = pictureService.listByAlbum(page,albumId,loginMemberId); + model.addAttribute("model", resultModel); + model.addAttribute("pictureAlbum",pictureAlbum); + return MEMBER_FTL_PATH + "/picture/list"; + } + + @RequestMapping(value = {"/picture","/picture/"},method = RequestMethod.GET) + public String index(Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + Page page = new Page(request); + ResultModel resultModel = pictureService.listByPage(page,loginMemberId); + model.addAttribute("model", resultModel); + return jeesnsConfig.getFrontTemplate() + "/picture/index"; + } + + @RequestMapping(value = "/picture/indexData",method = RequestMethod.GET) + @ResponseBody + public ResultModel indexData(){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + ResultModel resultModel = pictureService.listByPage(page,loginMemberId); + return resultModel; + } + + @RequestMapping(value = "/picture/detail/{pictureId}",method = RequestMethod.GET) + public String detail(Model model,@PathVariable("pictureId") Integer pictureId) throws NotLoginException { + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + Picture picture = pictureService.findById(pictureId,loginMemberId); + if (picture == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1011, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("picture",picture); + return jeesnsConfig.getFrontTemplate() + "/picture/detail"; + } + + + @RequestMapping(value="/picture/comment/{pictureId}",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel comment(@PathVariable("pictureId") Integer pictureId, String content) throws NotLoginException { + Member loginMember = MemberUtil.getLoginMember(request); + if(StringUtils.isEmpty(content)){ + return new ResultModel(-1,"内容不能为空"); + } + if(content.length() > 500){ + return new ResultModel(-1,"评论内容不能超过500长度"); + } + return new ResultModel(pictureCommentService.save(loginMember,content,pictureId)); + } + + @RequestMapping(value="/picture/commentList/{pictureId}.json",method = RequestMethod.GET) + @ResponseBody + public ResultModel commentList(@PathVariable("pictureId") Integer pictureId){ + Page page = new Page(request); + if(pictureId == null){ + pictureId = 0; + } + return pictureCommentService.listByPicture(page,pictureId); + } + + @RequestMapping(value="/picture/favor/{pictureId}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel favor(@PathVariable("pictureId") Integer pictureId) throws NotLoginException, ParamException { + Member loginMember = MemberUtil.getLoginMember(request); + if(pictureId == null) { + throw new ParamException(); + } + return pictureService.favor(loginMember,pictureId); + } + + @RequestMapping(value="/member/picture/uploadPic") + @Before(UserLoginInterceptor.class) + public String uploadPic(Model model,Integer albumId) { + PictureAlbum pictureAlbum = pictureAlbumService.findById(albumId); + Member loginMember = MemberUtil.getLoginMember(request); + if (pictureAlbum == null){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1010, Const.INDEX_ERROR_FTL_PATH); + } + if (pictureAlbum.getMemberId().intValue() != loginMember.getId().intValue()){ + return jeesnsConfig.getFrontTemplate() + ErrorUtil.error(model,-1001, Const.INDEX_ERROR_FTL_PATH); + } + model.addAttribute("albumId",albumId); + return MEMBER_FTL_PATH + "/picture/uploadPic"; + } + + @RequestMapping(value="/member/picture/uploadPic/{albumId}") + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel uploadPic(@RequestParam(value = "file", required = false) MultipartFile file, @PathVariable("albumId") Integer albumId) { + Member loginMember = MemberUtil.getLoginMember(request); + String fileName = file.getOriginalFilename(); + String suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length()); + if(suffix == null || (!".png".equals(suffix.toLowerCase()) && !".jpg".equals(suffix.toLowerCase()) && !".gif".equals(suffix.toLowerCase()) && !".jpeg".equals(suffix.toLowerCase()) && !".bmp".equals(suffix.toLowerCase()))) { + return new ResultModel(-1,"格式不支持"); + } + String newFileName = UUID.randomUUID() + suffix; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String ymd = sdf.format(new Date()); + String path = Const.UPLOAD_PATH + "/images/"+ymd+"/"; + String savePath = request.getServletContext().getRealPath(path); + File baseFile = new File(savePath); + File targetFile = new File(baseFile, newFileName); + + if (!baseFile.exists()) { + baseFile.mkdirs(); + } + //保存 + try { + file.transferTo(targetFile); + } catch (Exception e) { + e.printStackTrace(); + } + try { + PictureAlbum pictureAlbum = pictureAlbumService.findById(albumId); + if (pictureAlbum == null){ + return new ResultModel(-1,"相册不存在"); + } + + BufferedImage sourceImg = ImageIO.read(new FileInputStream(targetFile)); + Picture picture = new Picture(); + picture.setWidth(sourceImg.getWidth()); + picture.setHeight(sourceImg.getHeight()); + picture.setMd5(DigestUtils.md5Hex(new FileInputStream(targetFile))); + //生成缩略图和小图片 + new ImageUtil().dealImage(targetFile); + picture.setPath(path + newFileName); + picture.setThumbnailPath(path + ImageUtil.THUMB_DEFAULT_PREVFIX + newFileName); + picture.setSmallPath(path + ImageUtil.SMALL_DEFAULT_PREVFIX + newFileName); + picture.setType(0); + picture.setMemberId(loginMember.getId()); + picture.setAlbumId(pictureAlbum.getId()); + pictureService.save(picture); + if (Const.DEFAULT_PICTURE_COVER.equals(pictureAlbum.getCover())){ + pictureAlbum.setCover(picture.getSmallPath()); + pictureAlbumService.update(pictureAlbum); + } + } catch (Exception e) { + e.printStackTrace(); + } + return new ResultModel(0,"上传成功"); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ScoreDetailController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ScoreDetailController.java" new file mode 100755 index 0000000..12cb1bf --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/ScoreDetailController.java" @@ -0,0 +1,38 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.member.ScoreDetail; +import com.lxinet.jeesns.service.member.IScoreDetailService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/4/7. + */ +@Controller("scoreDetailFrontController") +@RequestMapping("/member/scoreDetail") +@Before(UserLoginInterceptor.class) +public class ScoreDetailController extends BaseController { + private static final String INDEX_FTL_PATH = "/member/scoreDetail/"; + @Resource + private IScoreDetailService scoreDetailService; + + @RequestMapping(value = "/list",method = RequestMethod.GET) + public String list(Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + Page page = new Page(request); + ResultModel resultModel = scoreDetailService.list(page,loginMember.getId()); + model.addAttribute("model", resultModel); + return INDEX_FTL_PATH + "list"; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/UploadController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/UploadController.java" new file mode 100755 index 0000000..0dcda17 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/UploadController.java" @@ -0,0 +1,208 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.core.exception.NotLoginException; +import com.lxinet.jeesns.model.picture.Picture; +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.model.picture.PictureAlbum; +import com.lxinet.jeesns.service.picture.IPictureAlbumService; +import com.lxinet.jeesns.service.picture.IPictureService; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.ImageUtil; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import org.apache.commons.codec.digest.DigestUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import javax.annotation.Resource; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.FileInputStream; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 文件上传 + * Created by zchuanzhao on 16/9/29. + */ +@Controller +@RequestMapping("/") +public class UploadController extends BaseController { + @Resource + private IMemberService memberService; + @Resource + private IPictureService pictureService; + @Resource + private IPictureAlbumService pictureAlbumService; + + @RequestMapping("${managePath}/uploadImage") + @ResponseBody + public Object manageUploadImage(@RequestParam(value = "file", required = false) MultipartFile file) { + return uploadImage(file, 0); + } + + + /** + * 微博图片上传 + * @param file + * @return + */ + @RequestMapping("/weiboUploadImage") + @ResponseBody + public Object weiboUploadImage(@RequestParam(value = "file", required = false) MultipartFile file) { + return uploadImage(file, 2); + } + + /** + * 普通图片上传 + * @param file + * @return + */ + @RequestMapping("/uploadImage") + @ResponseBody + public Object indexUploadImage(@RequestParam(value = "file", required = false) MultipartFile file) { + return uploadImage(file, 0); + } + + /** + * 缩略图上传 + * @param file + * @return + */ + @RequestMapping("/thumbnailUploadImage") + @ResponseBody + public Object thumbnailUploadImage(@RequestParam(value = "file", required = false) MultipartFile file) { + return uploadImage(file, 11); + } + + /** + * 保存图片 + * @param file + * @param type 0是普通图片,1是文章图片,2是微博图片,3是群组帖子图片,11是缩略图 + * @return + */ + private Object uploadImage(MultipartFile file, int type) { + Member loginMember = MemberUtil.getLoginMember(request); + if (loginMember == null){ + throw new NotLoginException(); + } + String fileName = file.getOriginalFilename(); + String suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length()); + if(suffix == null || (!".png".equals(suffix.toLowerCase()) && !".jpg".equals(suffix.toLowerCase()) && !".gif".equals(suffix.toLowerCase()) && !".jpeg".equals(suffix.toLowerCase()) && !".bmp".equals(suffix.toLowerCase()))) { + return new ResultModel(-1,"格式不支持"); + } + String newFileName = UUID.randomUUID() + suffix; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + String ymd = sdf.format(new Date()); + String path = Const.UPLOAD_PATH + "/images/"+ymd+"/"; + String savePath = request.getServletContext().getRealPath(path); + File baseFile = new File(savePath); + File targetFile = new File(baseFile, newFileName); + + if (!baseFile.exists()) { + baseFile.mkdirs(); + } + //保存 + try { + file.transferTo(targetFile); + } catch (Exception e) { + e.printStackTrace(); + } + //上传成功的图片URL,如果是文章、群组帖子、微博图片,则返回图片ID + String url = ""; + if(type == 2){ + try { + PictureAlbum pictureAlbum = pictureAlbumService.findWeiboAlbum(loginMember.getId()); + if (pictureAlbum == null){ + pictureAlbum = new PictureAlbum(); + pictureAlbum.setType(2); + pictureAlbum.setName("微博配图"); + pictureAlbum.setMemberId(loginMember.getId()); + pictureAlbum.setJuri(0); + pictureAlbum.setCover(path + ImageUtil.SMALL_DEFAULT_PREVFIX + newFileName); + pictureAlbumService.save(pictureAlbum); + } + BufferedImage sourceImg = ImageIO.read(new FileInputStream(targetFile)); + Picture picture = new Picture(); + picture.setWidth(sourceImg.getWidth()); + picture.setHeight(sourceImg.getHeight()); + picture.setMd5(DigestUtils.md5Hex(new FileInputStream(targetFile))); + //生成缩略图和小图片 + new ImageUtil().dealImage(targetFile); + picture.setPath(path + newFileName); + picture.setThumbnailPath(path + ImageUtil.THUMB_DEFAULT_PREVFIX + newFileName); + picture.setSmallPath(path + ImageUtil.SMALL_DEFAULT_PREVFIX + newFileName); + picture.setType(type); + picture.setMemberId(loginMember.getId()); + picture.setAlbumId(pictureAlbum.getId()); + pictureService.save(picture); + url = String.valueOf(picture.getPictureId()); + if (StringUtils.isEmpty(pictureAlbum.getCover()) || Const.DEFAULT_PICTURE_COVER.equals(pictureAlbum.getCover())){ + pictureAlbum.setCover(picture.getSmallPath()); + pictureAlbumService.update(pictureAlbum); + } + } catch (Exception e) { + e.printStackTrace(); + } + }else if(type == 11){ + //生成缩略图 + String thumbnailName = new ImageUtil().dealImage(targetFile); + //删除原文件 + targetFile.delete(); + url = path + thumbnailName; + }else { + url = path + newFileName; + } + return new ResultModel(0,"上传成功",url); + } + + /** + * 上传头像 + * @param file + * @return + */ + @RequestMapping("member/uploadAvatar") + @ResponseBody + public Object uploadAvatar(@RequestParam(value = "__avatar1", required = false) MultipartFile file){ + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMM"); + String fileName = UUID.randomUUID()+".jpg"; + String ymd = simpleDateFormat.format(new Date()); + String filePath = Const.UPLOAD_PATH + "/avatar/" + ymd + "/"; + String savePath = request.getServletContext().getRealPath(filePath); + File baseFile = new File(savePath); + File targetFile = new File(savePath, fileName); + + if (!baseFile.exists()) { + baseFile.mkdirs(); + } + //保存 + try { + file.transferTo(targetFile); + } catch (Exception e) { + e.printStackTrace(); + } + Member loginMember = MemberUtil.getLoginMember(request); + Member findMember = memberService.findById(loginMember.getId()); + Map result = new HashMap(); + if(findMember != null){ + String oldAvatar = findMember.getAvatar(); + findMember.setAvatar(filePath + fileName); + ResultModel resultModel = memberService.updateAvatar(findMember,oldAvatar,request); + if (resultModel.getCode() == 0){ + MemberUtil.setLoginMember(request, findMember); + } + result.put("success", resultModel.getCode() == 0); + result.put("msg", resultModel.getMessage()); + }else { + result.put("success",true); + result.put("msg","会员不存在!"); + } + return result; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/WeiboController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/WeiboController.java" new file mode 100755 index 0000000..d4a3e22 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/front/WeiboController.java" @@ -0,0 +1,134 @@ +package com.lxinet.jeesns.web.front; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.NotFountException; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.interceptor.UserLoginInterceptor; +import com.lxinet.jeesns.web.common.BaseController; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.model.weibo.Weibo; +import com.lxinet.jeesns.service.weibo.IWeiboCommentService; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.util.List; + +/** + * Created by zchuanzhao on 2016/12/20. + */ +@Controller("frontWeiboController") +@RequestMapping("/${weiboPath}") +public class WeiboController extends BaseController { + @Resource + private IWeiboService weiboService; + @Resource + private IWeiboCommentService weiboCommentService; + @Resource + private JeesnsConfig jeesnsConfig; + + @RequestMapping(value = "/publish",method = RequestMethod.POST) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel publish(String content, String pictures){ + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(weiboService.save(request, loginMember,content, pictures)); + } + + @RequestMapping(value = "/list",method = RequestMethod.GET) + public String list(@RequestParam(value = "key",required = false,defaultValue = "") String key, Model model){ + Page page = new Page(request); + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + ResultModel resultModel = weiboService.listByPage(page,0,loginMemberId,key); + model.addAttribute("model", resultModel); + List hotList = weiboService.hotList(loginMemberId); + model.addAttribute("hotList",hotList); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/weibo/list"; + } + + @RequestMapping(value = "/detail/{weiboId}",method = RequestMethod.GET) + public String detail(@PathVariable("weiboId") Integer weiboId, Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + Weibo weibo = weiboService.findById(weiboId,loginMemberId); + if (weibo == null){ + throw new NotFountException(Messages.WEIBO_NOT_EXISTS); + } + model.addAttribute("weibo",weibo); + model.addAttribute("loginUser", loginMember); + return jeesnsConfig.getFrontTemplate() + "/weibo/detail"; + } + + @RequestMapping(value="/delete/{weiboId}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel delete(@PathVariable("weiboId") Integer weiboId){ + Member loginMember = MemberUtil.getLoginMember(request); + boolean result = weiboService.userDelete(request, loginMember,weiboId); + ResultModel resultModel = new ResultModel(result); + if(resultModel.getCode() >= 0){ + resultModel.setCode(2); + resultModel.setUrl(Const.WEIBO_PATH + "/list"); + } + return resultModel; + } + + + @RequestMapping(value="/comment/{weiboId}",method = RequestMethod.POST) + @ResponseBody + public ResultModel comment(@PathVariable("weiboId") Integer weiboId, String content, Integer weiboCommentId){ + Member loginMember = MemberUtil.getLoginMember(request); + ValidUtill.checkLogin(loginMember); + return new ResultModel(weiboCommentService.save(loginMember,content,weiboId,weiboCommentId)); + } + + @RequestMapping(value="/commentList/{weiboId}.json",method = RequestMethod.GET) + @ResponseBody + public ResultModel commentList(@PathVariable("weiboId") Integer weiboId){ + Page page = new Page(request); + return weiboCommentService.listByWeibo(page,weiboId); + } + + @RequestMapping(value="/favor/{weiboId}",method = RequestMethod.GET) + @ResponseBody + @Before(UserLoginInterceptor.class) + public ResultModel favor(@PathVariable("weiboId") Integer weiboId){ + Member loginMember = MemberUtil.getLoginMember(request); + ResultModel resultModel = weiboService.favor(loginMember,weiboId); + return resultModel; + } + + + @RequestMapping(value = "/topic/{topicName}",method = RequestMethod.GET) + public String listByTopic(@PathVariable(value = "topicName") String topicName, Model model){ + Page page = new Page(request); + try { + topicName = URLDecoder.decode(topicName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + Member loginMember = MemberUtil.getLoginMember(request); + int loginMemberId = loginMember == null ? 0 : loginMember.getId(); + ResultModel resultModel = null; + resultModel = weiboService.listByTopic(page,loginMemberId,topicName); + model.addAttribute("model", resultModel); + List hotList = weiboService.hotList(loginMemberId); + model.addAttribute("hotList",hotList); + model.addAttribute("loginUser", loginMember); + model.addAttribute("topicName", topicName); + return jeesnsConfig.getFrontTemplate() + "/weibo/topic"; + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ActionController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ActionController.java" new file mode 100755 index 0000000..da301a8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ActionController.java" @@ -0,0 +1,82 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; + +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.system.Action; +import com.lxinet.jeesns.model.system.ActionLog; +import com.lxinet.jeesns.service.system.IActionLogService; +import com.lxinet.jeesns.service.system.IActionService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/2/14. + */ +@Controller +@RequestMapping("/${managePath}/system/action/") +@Before(AdminLoginInterceptor.class) +public class ActionController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/system/action/"; + @Resource + private IActionService actionService; + @Resource + private IActionLogService actionLogService; + + @RequestMapping("list") + public String actionList(Model model){ + List list = actionService.list(); + model.addAttribute("list",list); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping("edit/{id}") + public String find(@PathVariable("id") Integer id, Model model){ + Action action = actionService.findById(id); + model.addAttribute("action",action); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping(value = "update",method = RequestMethod.POST) + @ResponseBody + public ResultModel update(Action action){ + return new ResultModel(actionService.update(action)); + } + + @RequestMapping(value = "isenable/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel isenable(@PathVariable("id") Integer id){ + return new ResultModel(actionService.isenable(id)); + } + + @RequestMapping("actionLogList") + public String actionLogList(@RequestParam(value = "memberId",required = false) Integer memberId, Model model){ + Page page = new Page(request); + if(memberId == null){ + memberId = 0; + } + ResultModel list = actionLogService.listByPage(page,memberId); + model.addAttribute("model",list); + return MANAGE_FTL_PATH + "actionLogList"; + } + + @RequestMapping("memberActionLog") + public String memberActionLog(@RequestParam(value = "memberId",required = false) Integer memberId, Model model){ + Page page = new Page(request); + if(memberId == null){ + memberId = 0; + } + ResultModel list = actionLogService.memberActionLog(page,memberId); + model.addAttribute("model",list); + return MANAGE_FTL_PATH + "memberActionLog"; + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/AdsController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/AdsController.java" new file mode 100755 index 0000000..9013674 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/AdsController.java" @@ -0,0 +1,86 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.core.utils.DateFormatUtil; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.common.Ads; +import com.lxinet.jeesns.service.common.IAdsService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/9/07. + */ +@Controller +@RequestMapping("/${managePath}/ads") +@Before(AdminLoginInterceptor.class) +public class AdsController extends BaseController{ + private static final String MANAGE_FTL_PATH = "/manage/ads/"; + @Resource + private IAdsService adsService; + + @RequestMapping("/list") + public String list(Model model){ + Page page = new Page(request); + ResultModel resultModel = adsService.listByPage(page); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping("/add") + public String add(){ + return MANAGE_FTL_PATH + "add"; + } + + @RequestMapping("/save") + @ResponseBody + public ResultModel save(Ads ads){ + String startTimeStr = getParam("startDateTime"); + String endTimeStr = getParam("endDateTime"); + ads.setStartTime(DateFormatUtil.formatDateTime(startTimeStr)); + ads.setEndTime(DateFormatUtil.formatDateTime(endTimeStr)); + ads.setContent(ads.getContent().replace("<","<").replace(">",">").replace("/","/")); + return new ResultModel(adsService.save(ads)); + } + + + @RequestMapping("/edit/{id}") + public String edit(Model model, @PathVariable("id") Integer id){ + Ads ads = adsService.findById(id); + model.addAttribute("ads",ads); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping("/update") + @ResponseBody + public ResultModel update(Ads ads){ + String startTimeStr = getParam("startDateTime"); + String endTimeStr = getParam("endDateTime"); + ads.setStartTime(DateFormatUtil.formatDateTime(startTimeStr)); + ads.setEndTime(DateFormatUtil.formatDateTime(endTimeStr)); + ads.setContent(ads.getContent().replace("<","<").replace(">",">").replace("/","/")); + return new ResultModel(adsService.update(ads)); + } + + @RequestMapping("/delete/{id}") + @ResponseBody + public ResultModel delete(@PathVariable("id") Integer id){ + return new ResultModel(adsService.delete(id)); + } + + @RequestMapping("/enable/{id}") + @ResponseBody + public ResultModel enable(@PathVariable("id") Integer id){ + return new ResultModel(adsService.enable(id)); + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCateController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCateController.java" new file mode 100755 index 0000000..8bc312c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCateController.java" @@ -0,0 +1,80 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.enums.Messages; +import com.lxinet.jeesns.core.exception.ParamException; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.cms.ArticleCate; +import com.lxinet.jeesns.service.cms.IArticleCateService; +import com.lxinet.jeesns.web.common.BaseController; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/29. + */ +@Controller +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class ArticleCateController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/cms/articleCate"; + @Resource + private IArticleCateService articleCateService; + + @RequestMapping("${managePath}/cms/articleCate/list") + public String list(Model model){ + List list = articleCateService.list(); + model.addAttribute("list",list); + return MANAGE_FTL_PATH + "/list"; + } + + @RequestMapping("${managePath}/cms/articleCate/add") + public String add(Model model){ + return MANAGE_FTL_PATH + "/add"; + } + + @RequestMapping("${managePath}/cms/articleCate/save") + @ResponseBody + public ResultModel save(ArticleCate articleCate){ + if(articleCate == null){ + throw new ParamException(); + } + if(StringUtils.isEmpty(articleCate.getName())){ + throw new ParamException(Messages.NAME_NOT_EMPTY); + } + return new ResultModel(articleCateService.save(articleCate)); + } + + @RequestMapping("${managePath}/cms/articleCate/edit/{id}") + public String edit(@PathVariable("id") int id, Model model){ + ArticleCate articleCate = articleCateService.findById(id); + model.addAttribute("articleCate",articleCate); + return MANAGE_FTL_PATH + "/edit"; + } + + @RequestMapping("${managePath}/cms/articleCate/update") + @ResponseBody + public ResultModel update(ArticleCate articleCate){ + if(articleCate == null){ + throw new ParamException(); + } + if(StringUtils.isEmpty(articleCate.getName())){ + throw new ParamException(Messages.NAME_NOT_EMPTY); + } + return new ResultModel(articleCateService.update(articleCate)); + } + + + @RequestMapping("${managePath}/cms/articleCate/delete/{id}") + @ResponseBody + public ResultModel delete(@PathVariable("id") int id){ + return new ResultModel(articleCateService.delete(id)); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCommentController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCommentController.java" new file mode 100755 index 0000000..03601f5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleCommentController.java" @@ -0,0 +1,55 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.model.cms.ArticleCate; +import com.lxinet.jeesns.model.cms.ArticleComment; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.cms.IArticleCateService; +import com.lxinet.jeesns.service.cms.IArticleCommentService; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * Created by zchuanzhao on 18/8/15. + */ +@Controller("manageArticleCommentController") +@RequestMapping("${managePath}/cms/comment") +@Before(AdminLoginInterceptor.class) +public class ArticleCommentController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/cms/comment/"; + @Resource + private IArticleCommentService articleCommentService; + + @RequestMapping("/list") + public String list(String key, @RequestParam(value = "articleId",defaultValue = "0",required = false) Integer articleId, Model model) { + Page page = new Page(request); + List list = articleCommentService.listByPage(page, articleId, key); + ResultModel resultModel = new ResultModel(0, page); + resultModel.setData(list); + model.addAttribute("model", resultModel); + model.addAttribute("key",key); + return MANAGE_FTL_PATH + "list"; + } + + + @RequestMapping(value = "/delete/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("id") Integer id){ + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(articleCommentService.delete(loginMember,id)); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleController.java" new file mode 100755 index 0000000..bcd1582 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ArticleController.java" @@ -0,0 +1,115 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.cms.Article; +import com.lxinet.jeesns.model.cms.ArticleCate; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.cms.IArticleCateService; +import com.lxinet.jeesns.service.cms.IArticleService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; +import java.util.List; + +/** + * Created by zchuanzhao on 16/9/29. + */ +@Controller("manageArticleController") +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class ArticleController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/cms/article/"; + @Resource + private IArticleCateService articleCateService; + @Resource + private IArticleService articleService; + + @RequestMapping("${managePath}/cms/index") + @Before(AdminLoginInterceptor.class) + public String index(String key, @RequestParam(value = "cateid",defaultValue = "0",required = false) Integer cateid, + @RequestParam(value = "status",defaultValue = "2",required = false) Integer status, + @RequestParam(value = "memberId",defaultValue = "0",required = false) Integer memberId, Model model) { + List cateList = articleCateService.list(); + Page page = new Page(request); + ResultModel resultModel = articleService.listByPage(page,key,cateid,status,memberId); + model.addAttribute("model", resultModel); + model.addAttribute("cateList",cateList); + model.addAttribute("key",key); + model.addAttribute("cateid",cateid); + return MANAGE_FTL_PATH + "index"; + } + + @RequestMapping(value="${managePath}/cms/article/add",method = RequestMethod.GET) + public String add(Model model) { + List cateList = articleCateService.list(); + model.addAttribute("cateList",cateList); + return MANAGE_FTL_PATH + "add"; + } + + @RequestMapping(value="${managePath}/cms/article/save",method = RequestMethod.POST) + @ResponseBody + public ResultModel save(@Valid Article article, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + return new ResultModel(-1,getErrorMessages(bindingResult)); + } + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(articleService.save(loginMember,article)); + } + + @RequestMapping(value="${managePath}/cms/article/list",method = RequestMethod.GET) + public String list(String key, @RequestParam(value = "cateid",defaultValue = "0",required = false) Integer cateid, + @RequestParam(value = "status",defaultValue = "2",required = false) Integer status, + @RequestParam(value = "memberId",defaultValue = "0",required = false) Integer memberId, Model model) { + Page page = new Page(request); + ResultModel resultModel = articleService.listByPage(page,key,cateid,status,memberId); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping(value="${managePath}/cms/article/edit/{id}",method = RequestMethod.GET) + public String edit(@PathVariable("id") Integer id, Model model){ + Member loginMember = MemberUtil.getLoginMember(request); + List cateList = articleCateService.list(); + model.addAttribute("cateList",cateList); + Article article = articleService.findById(id,loginMember); + model.addAttribute("article",article); + return MANAGE_FTL_PATH + "/edit"; + } + + @RequestMapping(value="${managePath}/cms/article/update",method = RequestMethod.POST) + @ResponseBody + public ResultModel update(@Valid Article article,BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + new ResultModel(-1,getErrorMessages(bindingResult)); + } + if(article.getId() == null){ + return new ResultModel(-2); + } + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(articleService.update(loginMember,article)); + } + + + @RequestMapping(value = "${managePath}/cms/article/delete/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("id") Integer id){ + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(articleService.delete(loginMember,id)); + } + + @RequestMapping(value = "${managePath}/cms/article/audit/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel audit(@PathVariable("id") Integer id){ + return new ResultModel(articleService.audit(id)); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/CheckinController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/CheckinController.java" new file mode 100755 index 0000000..b74d7f6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/CheckinController.java" @@ -0,0 +1,43 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.member.Checkin; +import com.lxinet.jeesns.model.system.ScoreRule; +import com.lxinet.jeesns.service.member.ICheckinService; +import com.lxinet.jeesns.service.system.IScoreRuleService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 签到 + * Created by zchuanzhao on 2018/8/20. + */ +@Controller("manageCheckinController") +@RequestMapping("/${managePath}/checkin/") +@Before(AdminLoginInterceptor.class) +public class CheckinController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/checkin/"; + @Resource + private ICheckinService checkinService; + + @RequestMapping("list") + public String list(Model model){ + Page page = new Page(request); + List list = checkinService.list(page, 0); + ResultModel resultModel = new ResultModel(0, page); + resultModel.setData(list); + model.addAttribute("model",resultModel); + return MANAGE_FTL_PATH + "list"; + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ConfigController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ConfigController.java" new file mode 100755 index 0000000..ce2c5c6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ConfigController.java" @@ -0,0 +1,118 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.utils.StringUtils; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.system.Config; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.service.system.IConfigService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by zchuanzhao on 2017/1/3. + */ +@Controller +@RequestMapping("/${managePath}/system/config/") +@Before(AdminLoginInterceptor.class) +public class ConfigController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/system/config/"; + @Resource + private IConfigService configService; + @Resource + private IMemberService memberService; + + @RequestMapping("edit") + public String edit(Model model){ + List configList = configService.allList(); + for (Config config:configList) { + model.addAttribute(config.getJkey(),config.getJvalue()); + } + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping(value = "baseUpdate",method = RequestMethod.POST) + @ResponseBody + public ResultModel baseUpdate(String site_name, String site_seo_title, String site_domain, String site_keys, String site_description, + String site_logo, String site_send_email_account, String site_send_email_password, + String site_send_email_smtp, String site_icp, String site_copyright, String site_tongji){ + Map params = new HashMap<>(); + params.put("site_name",site_name); + params.put("site_seo_title",site_seo_title); + params.put("site_domain",site_domain); + params.put("site_keys",site_keys); + params.put("site_description",site_description); + if(StringUtils.isNotEmpty(site_logo)){ + params.put("site_logo",site_logo); + } + params.put("site_send_email_account",site_send_email_account); + params.put("site_send_email_smtp",site_send_email_smtp); + params.put("site_icp",site_icp); + params.put("site_copyright",site_copyright); + site_tongji = site_tongji.replace("<","<").replace(">",">").replace("/","/"); + params.put("site_tongji",site_tongji); + if(StringUtils.isNotEmpty(site_send_email_password)){ + params.put("site_send_email_password",site_send_email_password); + } + return new ResultModel(configService.update(params,request)); + } + + @RequestMapping(value = "memberUpdate",method = RequestMethod.POST) + @ResponseBody + public ResultModel memberUpdate(String member_login_open,String member_register_open,String member_email_valid){ + Map params = new HashMap<>(); + params.put("member_login_open",member_login_open); + params.put("member_register_open",member_register_open); + params.put("member_email_valid",member_email_valid); + return new ResultModel(configService.update(params,request)); + } + + @RequestMapping(value = "cmsUpdate",method = RequestMethod.POST) + @ResponseBody + public ResultModel cmsUpdate(String cms_post,String cms_post_review){ + Map params = new HashMap<>(); + params.put("cms_post",cms_post); + params.put("cms_post_review",cms_post_review); + return new ResultModel(configService.update(params,request)); + } + + @RequestMapping(value = "groupUpdate",method = RequestMethod.POST) + @ResponseBody + public ResultModel groupUpdate(String group_apply,String group_apply_review,String group_alias){ + Map params = new HashMap<>(); + if(StringUtils.isEmpty(group_alias)){ + group_alias = "群组"; + } + params.put("group_alias",group_alias); + params.put("group_apply",group_apply); + params.put("group_apply_review",group_apply_review); + return new ResultModel(configService.update(params,request)); + } + + @RequestMapping(value = "weiboUpdate",method = RequestMethod.POST) + @ResponseBody + public ResultModel weiboUpdate(String weibo_post,String weibo_post_maxcontent,String weibo_alias){ + if(Integer.parseInt(weibo_post_maxcontent) > 500){ + return new ResultModel(-1,"微博最大字数不能超过500"); + } + Map params = new HashMap<>(); + if(StringUtils.isEmpty(weibo_alias)){ + weibo_alias = "微博"; + } + params.put("weibo_alias",weibo_alias); + params.put("weibo_post",weibo_post); + params.put("weibo_post_maxcontent",weibo_post_maxcontent); + return new ResultModel(configService.update(params,request)); + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupController.java" new file mode 100755 index 0000000..d8c12b3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupController.java" @@ -0,0 +1,55 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.group.Group; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.group.IGroupService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 16/12/23. + */ +@Controller("manageGroupController") +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class GroupController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/group/"; + @Resource + private IGroupService groupService; + + @RequestMapping(value = "${managePath}/group/index") + public String index(@RequestParam(value = "status",required = false,defaultValue = "-1") Integer status, + String key, + Model model) { + Page page = new Page(request); + List list = groupService.list(status,key); + model.addAttribute("list",list); + model.addAttribute("key",key); + return MANAGE_FTL_PATH + "index"; + } + + @RequestMapping(value = "${managePath}/group/delete/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("id") int id){ + Member loginMember = MemberUtil.getLoginMember(request); + return new ResultModel(groupService.delete(loginMember,id)); + } + + @RequestMapping(value = "${managePath}/group/changeStatus/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel changeStatus(@PathVariable("id") int id){ + return new ResultModel(groupService.changeStatus(id)); + } + + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupTypeController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupTypeController.java" new file mode 100755 index 0000000..71ff191 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/GroupTypeController.java" @@ -0,0 +1,67 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.group.GroupType; +import com.lxinet.jeesns.service.group.IGroupTypeService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.List; + +/** + * @author: zchuanzhao + * @date: 2018/5/15 下午1:17 + */ +@Controller("manageGroupTypeController") +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class GroupTypeController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/group/type/"; + @Resource + private IGroupTypeService groupTypeService; + + @RequestMapping(value = "${managePath}/group/type/list") + public String index(Model model) { + List list = groupTypeService.list(); + model.addAttribute("list", list); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping(value = "${managePath}/group/type/add", method = RequestMethod.GET) + public Object add() { + return MANAGE_FTL_PATH + "add"; + } + + @RequestMapping(value = "${managePath}/group/type/save", method = RequestMethod.POST) + @ResponseBody + public ResultModel save(GroupType groupType) { + return new ResultModel(groupTypeService.save(groupType)); + } + + + @RequestMapping(value = "${managePath}/group/type/edit/{id}", method = RequestMethod.GET) + public String edit(@PathVariable("id") int id, Model model) { + GroupType groupType = groupTypeService.findById(id); + model.addAttribute("groupType", groupType); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping(value = "${managePath}/group/type/update", method = RequestMethod.POST) + @ResponseBody + public ResultModel update(GroupType groupType) { + return new ResultModel(groupTypeService.update(groupType)); + } + + + @RequestMapping(value = "${managePath}/group/type/delete/{id}", method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("id") int id) { + return new ResultModel(groupTypeService.delete(id)); + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/IndexController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/IndexController.java" new file mode 100755 index 0000000..0fb3377 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/IndexController.java" @@ -0,0 +1,120 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.annotation.Clear; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.utils.Const; +import com.lxinet.jeesns.core.utils.JeesnsConfig; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.common.ICommonService; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.web.common.BaseController; +import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.util.Properties; + +/** + * Created by zchuanzhao on 16/9/26. + */ +@Controller("manageIndexController") +@RequestMapping("/${managePath}") +@Before(AdminLoginInterceptor.class) +public class IndexController extends BaseController { + private static final String FTL_PATH = "/manage"; + @Resource + private IMemberService memberService; + @Resource + private JeesnsConfig jeesnsConfig; + @Resource + private ICommonService commonService; + + @RequestMapping(value = {"/", "/index"}) + public String index(Model model){ + Properties props = System.getProperties(); + //java版本 + String javaVersion = props.getProperty("java.version"); + //操作系统名称 + String osName = props.getProperty("os.name") + props.getProperty("os.version"); + //用户的主目录 + String userHome = props.getProperty("user.home"); + //用户的当前工作目录 + String userDir = props.getProperty("user.dir"); + //服务器IP + String serverIP = request.getLocalAddr(); + //客户端IP + String clientIP = request.getRemoteHost(); + //WEB服务器 + String webVersion = request.getServletContext().getServerInfo(); + //CPU个数 + String cpu = Runtime.getRuntime().availableProcessors() + "核"; + //虚拟机内存总量 + String totalMemory = (Runtime.getRuntime().totalMemory()/1024/1024) + "M"; + //虚拟机空闲内存量 + String freeMemory = (Runtime.getRuntime().freeMemory()/1024/1024) + "M"; + //虚拟机使用的最大内存量 + String maxMemory = (Runtime.getRuntime().maxMemory()/1024/1024) + "M"; + //MYSQL版本 + String mysqlVersion = commonService.getMysqlVsesion(); + //网站根目录 + String webRootPath = request.getSession().getServletContext().getRealPath(""); + model.addAttribute("javaVersion",javaVersion); + model.addAttribute("osName",osName); + model.addAttribute("userHome",userHome); + model.addAttribute("userDir",userDir); + model.addAttribute("clientIP",clientIP); + model.addAttribute("serverIP",serverIP); + model.addAttribute("cpu",cpu); + model.addAttribute("totalMemory",totalMemory); + model.addAttribute("freeMemory",freeMemory); + model.addAttribute("maxMemory",maxMemory); + model.addAttribute("webVersion",webVersion); + model.addAttribute("mysqlVersion",mysqlVersion); + model.addAttribute("webRootPath",webRootPath); + model.addAttribute("systemVersion", Const.SYSTEM_VERSION); + model.addAttribute("systemName",Const.SYSTEM_NAME); + model.addAttribute("systemUpdateTime",Const.SYSTEM_UPDATE_TIME); + return FTL_PATH + "/index"; + } + + /** + * 登录页面 + * @return + */ + @Clear() + @RequestMapping(value = "/login",method = RequestMethod.GET) + public String login(){ + return FTL_PATH + "/login"; + } + + /** + * 提交登录信息 + * @param member + * @return + */ + @Clear() + @RequestMapping(value = "/login",method = RequestMethod.POST) + @ResponseBody + public ResultModel login(Member member){ + if(member == null){ + return new ResultModel(-1,"参数错误"); + } + if(StringUtils.isEmpty(member.getName())){ + return new ResultModel(-1,"用户名不能为空"); + } + if(StringUtils.isEmpty(member.getPassword())){ + return new ResultModel(-1,"密码不能为空"); + } + Member loginMember = memberService.manageLogin(member,request); + if(loginMember != null){ + MemberUtil.setLoginMember(request,loginMember); + return new ResultModel(2,"登录成功","index"); + }else { + return new ResultModel(-1,"用户名或密码错误"); + } + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/LinkController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/LinkController.java" new file mode 100755 index 0000000..db023e2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/LinkController.java" @@ -0,0 +1,75 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.common.Link; +import com.lxinet.jeesns.service.common.ILinkService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/10/13. + */ +@Controller +@RequestMapping("/${managePath}/link") +@Before(AdminLoginInterceptor.class) +public class LinkController extends BaseController{ + private static final String MANAGE_FTL_PATH = "/manage/link/"; + @Resource + private ILinkService linkService; + + @RequestMapping("/list") + public String list(Model model){ + Page page = new Page(request); + ResultModel resultModel = linkService.listByPage(page); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping("/add") + public String add(){ + return MANAGE_FTL_PATH + "add"; + } + + @RequestMapping("/save") + @ResponseBody + public ResultModel save(Link link){ + return new ResultModel(linkService.save(link)); + } + + + @RequestMapping("/edit/{id}") + public String edit(Model model, @PathVariable("id") Integer id){ + Link link = linkService.findById(id); + model.addAttribute("link",link); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping("/update") + @ResponseBody + public ResultModel update(Link link){ + return new ResultModel(linkService.update(link)); + } + + @RequestMapping("/delete/{id}") + @ResponseBody + public ResultModel delete(@PathVariable("id") Integer id){ + return new ResultModel(linkService.delete(id)); + } + + @RequestMapping("/enable/{id}") + @ResponseBody + public ResultModel enable(@PathVariable("id") Integer id){ + return new ResultModel(linkService.enable(id)); + } + + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/MemberController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/MemberController.java" new file mode 100755 index 0000000..a79a389 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/MemberController.java" @@ -0,0 +1,145 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.member.IMemberService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2016/11/22. + */ +@Controller("manageMemberController") +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class MemberController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/member/"; + @Resource + private IMemberService memberService; + + @RequestMapping("${managePath}/member/index") + @Before(AdminLoginInterceptor.class) + public String index(String key,Model model) { + Page page = new Page(request); + ResultModel resultModel = memberService.listByPage(page,key); + model.addAttribute("model", resultModel); + model.addAttribute("key",key); + return MANAGE_FTL_PATH + "index"; + } + + + /** + * 会员启用、禁用操作 + */ + @RequestMapping(value = "${managePath}/member/isenable/{id}", method = RequestMethod.GET) + @ResponseBody + public ResultModel isenable(@PathVariable("id") int id) { + return memberService.isenable(id); + } + + @RequestMapping(value = "${managePath}/member/delete/{id}", method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("id") int id) { + return memberService.delete(id); + } + + @RequestMapping(value = "${managePath}/member/changepwd/{id}", method = RequestMethod.GET) + public String changepwd(@PathVariable("id") int id, Model model) { + Member member = memberService.findById(id); + if (member == null) { + return errorModel(model, "会员不存在"); + } + model.addAttribute("member", member); + return MANAGE_FTL_PATH + "changepwd"; + } + + @RequestMapping(value = "${managePath}/member/changepwd", method = RequestMethod.POST) + @ResponseBody + public ResultModel changepwd(int id, String password) { + Member loginMember = MemberUtil.getLoginMember(request); + return memberService.changepwd(loginMember,id, password); + } + + + + + + + /** + * 管理员列表 + * @param key + * @param model + * @return + */ + @RequestMapping(value = "${managePath}/member/managerList",method = RequestMethod.GET) + public String managerList(String key,Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember.getIsAdmin() == 1){ + return errorModel(model, "没有权限"); + } + Page page = new Page(request); + ResultModel resultModel = memberService.managerList(page,key); + model.addAttribute("model", resultModel); + model.addAttribute("key",key); + return MANAGE_FTL_PATH + "managerList"; + } + + /** + * 授权管理员 + * @param model + * @return + */ + @RequestMapping(value = "${managePath}/member/managerAdd",method = RequestMethod.GET) + public String managerAdd(Model model) { + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember.getIsAdmin() == 1){ + return errorModel(model, "没有权限"); + } + return MANAGE_FTL_PATH + "managerAdd"; + } + + /** + * 授权管理员 + * @param name + * @return + */ + @RequestMapping(value = "${managePath}/member/managerAdd",method = RequestMethod.POST) + @ResponseBody + public ResultModel managerAdd(String name) { + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember.getId() != 1 && loginMember.getIsAdmin() == 1){ + return new ResultModel(-1,"没有权限"); + } + //管理员授权,只能授权普通管理员 + return memberService.managerAdd(loginMember, name); + } + + /** + * 取消管理员 + * @param id + * @return + */ + @RequestMapping(value = "${managePath}/member/managerCancel/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel managerCancel(@PathVariable("id") Integer id) { + if(id == null){ + return new ResultModel(-1,"参数错误"); + } + Member loginMember = MemberUtil.getLoginMember(request); + if(loginMember.getIsAdmin() == 1){ + return new ResultModel(-1,"没有权限"); + } + return memberService.managerCancel(loginMember, id); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/PictureController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/PictureController.java" new file mode 100755 index 0000000..5936c3b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/PictureController.java" @@ -0,0 +1,58 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.consts.AppTag; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.service.picture.IPictureService; +import com.lxinet.jeesns.service.system.ITagService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; + +/** + * + * @author zchuanzhao + * @date 2017/11/01 + */ +@Controller +@RequestMapping("/${managePath}/picture") +@Before(AdminLoginInterceptor.class) +public class PictureController extends BaseController{ + private static final String MANAGE_FTL_PATH = "/manage/picture/"; + @Resource + private IPictureService pictureService; + @Resource + private ITagService tagService; + + @RequestMapping("/tagList") + public String tagList(Model model){ + Page page = new Page(request); + ResultModel resultModel = tagService.listByPage(page, AppTag.PICTURE); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "tagList"; + } + + + @RequestMapping(value = "/list",method = RequestMethod.GET) + public String list(Model model){ + Page page = new Page(request); + ResultModel resultModel = pictureService.listByPage(page,0); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping(value = "/delete/{pictureId}",method = RequestMethod.GET) + @ResponseBody + public ResultModel delete(@PathVariable("pictureId") Integer pictureId){ + return new ResultModel(pictureService.delete(request,pictureId)); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ScoreRuleController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ScoreRuleController.java" new file mode 100755 index 0000000..da40ea0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/ScoreRuleController.java" @@ -0,0 +1,53 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.system.ScoreRule; +import com.lxinet.jeesns.service.system.IScoreRuleService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * Created by zchuanzhao on 2017/3/24. + */ +@Controller +@RequestMapping("/${managePath}/system/scoreRule/") +@Before(AdminLoginInterceptor.class) +public class ScoreRuleController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/system/scoreRule/"; + @Resource + private IScoreRuleService scoreRuleService; + + @RequestMapping("list") + public String actionList(Model model){ + List list = scoreRuleService.list(); + model.addAttribute("list",list); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping("edit/{id}") + public String find(@PathVariable("id") Integer id, Model model){ + ScoreRule scoreRule = scoreRuleService.findById(id); + model.addAttribute("scoreRule",scoreRule); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping(value = "update",method = RequestMethod.POST) + @ResponseBody + public ResultModel update(ScoreRule scoreRule){ + return new ResultModel(scoreRuleService.update(scoreRule)); + } + + @RequestMapping(value = "enabled/{id}",method = RequestMethod.GET) + @ResponseBody + public ResultModel enabled(@PathVariable("id") Integer id){ + return new ResultModel(scoreRuleService.enabled(id)); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/TagController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/TagController.java" new file mode 100755 index 0000000..7b6f87e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/TagController.java" @@ -0,0 +1,72 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.ValidUtill; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.system.Tag; +import com.lxinet.jeesns.service.system.ITagService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2017/10/13. + */ +@Controller +@RequestMapping("/${managePath}/tag") +@Before(AdminLoginInterceptor.class) +public class TagController extends BaseController{ + private static final String MANAGE_FTL_PATH = "/manage/tag/"; + @Resource + private ITagService tagService; + + @RequestMapping("/list/{funcType}") + public String list(Model model,@PathVariable("funcType") Integer funcType){ + Page page = new Page(request); + ResultModel resultModel = tagService.listByPage(page,funcType); + model.addAttribute("funcType",funcType); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "list"; + } + + @RequestMapping("/add/{funcType}") + public String add(Model model,@PathVariable("funcType") Integer funcType){ + model.addAttribute("funcType",funcType); + return MANAGE_FTL_PATH + "add"; + } + + @RequestMapping("/save") + @ResponseBody + public ResultModel save(Tag tag){ + return new ResultModel(tagService.save(tag)); + } + + + @RequestMapping("/edit/{id}") + public String edit(Model model, @PathVariable("id") Integer id){ + Tag tag = tagService.findById(id); + model.addAttribute("tag",tag); + return MANAGE_FTL_PATH + "edit"; + } + + @RequestMapping("/update") + @ResponseBody + public ResultModel update(Tag tag){ + ValidUtill.checkIsNull(tag); + return new ResultModel(tagService.update(tag)); + } + + @RequestMapping("/delete/{id}") + @ResponseBody + public ResultModel delete(@PathVariable("id") Integer id){ + return new ResultModel(tagService.delete(id)); + } + +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/WeiboController.java" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/WeiboController.java" new file mode 100755 index 0000000..6512f1b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/java/com/lxinet/jeesns/web/manage/WeiboController.java" @@ -0,0 +1,43 @@ +package com.lxinet.jeesns.web.manage; + +import com.lxinet.jeesns.common.utils.MemberUtil; +import com.lxinet.jeesns.core.annotation.Before; +import com.lxinet.jeesns.core.dto.ResultModel; +import com.lxinet.jeesns.core.model.Page; +import com.lxinet.jeesns.interceptor.AdminLoginInterceptor; +import com.lxinet.jeesns.model.member.Member; +import com.lxinet.jeesns.service.weibo.IWeiboService; +import com.lxinet.jeesns.web.common.BaseController; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * Created by zchuanzhao on 2016/11/22. + */ +@Controller("mamageWeiboController") +@RequestMapping("/") +@Before(AdminLoginInterceptor.class) +public class WeiboController extends BaseController { + private static final String MANAGE_FTL_PATH = "/manage/weibo/"; + @Resource + private IWeiboService weiboService; + + @RequestMapping("${managePath}/weibo/index") + @Before(AdminLoginInterceptor.class) + public String index(@RequestParam(value = "key",required = false,defaultValue = "") String key, Model model) { + Page page = new Page(request); + ResultModel resultModel = weiboService.listByPage(page,0,0,key); + model.addAttribute("model", resultModel); + return MANAGE_FTL_PATH + "index"; + } + + @RequestMapping(value = "${managePath}/weibo/delete/{id}", method = RequestMethod.GET) + @ResponseBody + public Object delete(@PathVariable("id") int id) { + Member loginMember = MemberUtil.getLoginMember(request); + return weiboService.delete(request, loginMember,id); + } +} diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/freemarker.properties" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/freemarker.properties" new file mode 100755 index 0000000..4d8b3e0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/freemarker.properties" @@ -0,0 +1,11 @@ +classic_compatible=true +whitespace_stripping=true +tag_syntax=auto_detect +template_update_delay=0 +default_encoding=UTF-8 +output_encoding=UTF-8 +locale=zh_CN +date_format=yyyy-MM-dd +time_format=HH:mm:ss +datetime_format=yyyy-MM-dd HH\:mm\:ss +number_format=\#.## \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/i18n/messages.properties" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/i18n/messages.properties" new file mode 100755 index 0000000..b188f28 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/i18n/messages.properties" @@ -0,0 +1,42 @@ +username=用户名 +email=邮箱 +name=名称 +password=密码 +login_name=loginName +token=token +article=文章 +group=群组 +topic=帖子 +comment=评论 +weibo=微博 +picture=图片 +admin=管理员 +user=会员 +picture_album=相册 +operate_error=操作失败 +operate_success=操作成功 +param_error=参数错误 +not_empty={0}不能为空 +login_info_wrong=用户名或者密码错误 +un_login=未登录 +login_closed=登录功能已关闭 +contribution_closed=投稿功能已关闭 +account_is_disabled=账号已被禁用 +exists={0}已存在 +username_length_only_be=用户名长度只能在{0}-{1}位 +not_exists={0}不存在 +content=内容 +cate=栏目 +friiend_link=友情链接 + + +exists_lower_category=存在下级栏目无法删除 +parent_connot_be_self=上级栏目不能是自己 +parent_cate_not_exists=上级栏目不存在 +cate_not_exists=栏目不存在 +category_must_be_select=分类必须选择 +ad_not_exists=广告不存在 +only_top_cate_can_add=只有顶级栏目才可以添加下级栏目 +delete_sub_cate_first=请先删除子栏目 + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/jeesns.properties" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/jeesns.properties" new file mode 100755 index 0000000..9d7d58e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/jeesns.properties" @@ -0,0 +1,12 @@ +jdbc.driver=com.mysql.cj.jdbc.Driver +jdbc.url=jdbc:mysql://localhost:3306/jeesns?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true +jdbc.user=root +jdbc.password=admin888 + +managePath=manage +groupPath=group +weiboPath=weibo +frontTemplate=front +memberTemplate=member +manageTemplate=manage +mobileTemplate=mobile \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/log4j.properties" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/log4j.properties" new file mode 100755 index 0000000..162e794 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/log4j.properties" @@ -0,0 +1,14 @@ +log4j.rootLogger=ERROR, Console + +#Console +log4j.appender.Console=org.apache.log4j.ConsoleAppender +log4j.appender.Console.layout=org.apache.log4j.PatternLayout +log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n + +log4j.logger.java.sql.ResultSet=ERROR +log4j.logger.org.apache=ERROR +log4j.logger.java.sql.Connection=ERROR +log4j.logger.java.sql.Statement=ERROR +log4j.logger.java.sql.PreparedStatement=ERROR +org.springframework=ERROR +org.mybatis=ERROR \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/mybatis-config.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/mybatis-config.xml" new file mode 100755 index 0000000..d487a46 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/mybatis-config.xml" @@ -0,0 +1,14 @@ + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mvc.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mvc.xml" new file mode 100755 index 0000000..50590f4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mvc.xml" @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/html;charset=UTF-8 + application/json;charset=UTF-8 + + + + + + + + classpath:jeesns.properties + + + + + + + + + + + + + /WEB-INF/templates/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mybatis.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mybatis.xml" new file mode 100755 index 0000000..0281bfe --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/resources/spring-mybatis.xml" @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/LICENSE.txt" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/LICENSE.txt" new file mode 100755 index 0000000..bbe4c0e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/LICENSE.txt" @@ -0,0 +1,19 @@ + 用户许可协议 + 版权所有 (c)2017-2018,jeesns.cn 保留所有权利 + 感谢您使用JEESNS,JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。数据库使用MYSQL,全部源代码开放,官方网址:www.jeesns.cn。 +无论您处于什么目的使用本软件,均请先仔细阅读本许可协议,如果您安装、使用、修改或分发本软件,则表示您已经完全接受本许可协议的所有条款。 +一、许可 + 1.1 如果您是个人用户,可将本软件用于非商业用途,而不必支付软件授权许可费,商业网站则需购买JEESNS商业授权。 + 1.2 您可以在本协议的许可范围内,修改JEESNS源代码和界面风格以适应您的网站要求。 + 1.3 您拥有使用本软件构建的网站中全部会员资料、文章及相关信息的所有权,并独立承担内容的相关法律义务。 + 1.4 在获得商业授权之后,您可以将本软件用于商业用途,获得更多的软件功能,并且得到技术支持和服务。 + 1.5 商业授权用户享有反映和提出意见的权力,并被优先考虑。 +二、约束和限制 + 2.1 在未获得商业授权之前,任何单位或个人不得将本软件用于商业用途和任何非个人所有的项目中。 + 2.2 在未获得商业授权之前,无论如何,即无论用途如何、是否经过修改或美化、修改程度如何,只要使用JEESNS的整体或任何部分,未经书面许可,页面标题和页脚处的Powered by JEESNS名称、链接(http://www.jeesns.cn/)都必须保留,而不能清除、修改或隐藏。 + 2.3 未经官方许可,禁止修改本软件的整体或任何部分用于重新发布第三方版本。 + 2.4 未经官方许可,不得对本软件或与之关联的商业授权进行出租、出售、抵押或发放子许可证。 + 2.5 如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担相应法律责任。 +三、免责声明 + 3.1 本软件及所附带的文件是作为不提供任何明确的或隐含的赔偿或担保的形式提供的。 + 3.2 用户出于自愿而使用本软件,您必须了解使用本软件的风险,在尚未购买产品技术服务之前,我们不承诺提供任何形式的技术支持、使用担保,也不承担任何因使用本软件而产生问题的相关责任。 \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/action/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/action/list.ftl" new file mode 100755 index 0000000..7662f90 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/action/list.ftl" @@ -0,0 +1,82 @@ + + + + + + 动态 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ <#list model.data as actionLog> +
+ + + +
+
+
+ + ${actionLog.member.name} 于${actionLog.createTime?string('yyyy-MM-dd HH:mm')}${actionLog.action.log}:
+ +
+
+ <#if actionLog.type==1> + ${actionLog.remark} + <#elseif actionLog.type==2> +

${actionLog.remark}

+ 查看 + <#elseif actionLog.type==4> + ${actionLog.remark} + +
+
+
+ +
+
    +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/checkin/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/checkin/index.ftl" new file mode 100755 index 0000000..5a792c2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/checkin/index.ftl" @@ -0,0 +1,109 @@ + + + + + + 签到 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ 今日签到 +
+
+
+ <#list model.data as checkin> +
+ + + +
+
${checkin.createTime?string('MM-dd HH:mm')}
+
+ + ${checkin.member.name} + +

${checkin.member.memberLevel.name}

+
+
+
+ +
+
+
    +
+
+
+ 签到 +
+
+ 连续签到排行 +
+
+
+ <#list todayContinueList as checkin> +
+ + + +
+ +
连续签到 ${checkin.continueDay} 天
+
+
+ +
+
+
+
+
+
+
+ +<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/add.ftl" new file mode 100755 index 0000000..7c58afa --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/add.ftl" @@ -0,0 +1,99 @@ + + + + + + + 发布文章 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + 取消 +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/detail.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/detail.ftl" new file mode 100755 index 0000000..7782d6b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/detail.ftl" @@ -0,0 +1,202 @@ + + + + + + + ${article.title} - ${article.articleCate.name} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+ + <@ads id=2> + <#include "/tp/ad.ftl"/> + +
+
文章评论
+
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ + image +
+ +
+

+ ${article.member.follows} + 关注 / + ${article.member.fans} + 粉丝 +

+

+ ${article.member.introduce} +

+
+
+
+
+
+ 文章栏目 +
+
+ 全部 + <#list articleCateList as articleCate> + ${articleCate.name} + +
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+ 最新文章 +
+
+
    + <@cms_article_list cid=0 sort='id' num=10; article> + <#list articleList as article> +
  • ${article.title}
  • + + +
+
+
+
+
+ 热门文章 +
+
+
    + <@cms_article_list cid=0 sort='view-count' num=10 day=30; article> + <#list articleList as article> +
  • ${article.title}
  • + + +
+
+
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/edit.ftl" new file mode 100755 index 0000000..e582db0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/edit.ftl" @@ -0,0 +1,108 @@ + + + + + + + 修改文章 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+ <#if article.thumbnail?? && article.thumbnail!=''> + + +
+
+

+

+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + 取消 +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/list.ftl" new file mode 100755 index 0000000..c8ae397 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/cms/list.ftl" @@ -0,0 +1,117 @@ + + + + + + + <#if articleCate??>${articleCate.name}<#else>文章列表</#if> - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ <#list model.data as article> +
+
+
+ <#if article.thumbnail??> + + ${article.title} + + +
+ +
+ ${article.description} +
+ +
+
+ +
    +
+
+
+
+
+
+ + + + +
+
+
+
+ 文章栏目 + + 发布文章 + +
+
+ 全部 + <#list articleCateList as articleCate> + ${articleCate.name} + +
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+ 热门文章 +
+
+
    + <@cms_article_list cid=0 sort='view_count' num=10 day=30; article> + <#list articleList as article> +
  • ${article.title}
  • + + +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/404.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/404.ftl" new file mode 100755 index 0000000..210c9ed --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/404.ftl" @@ -0,0 +1,182 @@ + + + + + + 页面找不到 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + +
+ + + + + +
+
+
+

+ 抱歉,您访问的页面找不到 +

+

自动返回首页等待20秒

+

返回上一页面

+ +
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/error.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/error.ftl" new file mode 100755 index 0000000..624c858 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/error.ftl" @@ -0,0 +1,186 @@ + + + + + + 出现错误 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + +
+ + + + + +
+
+
+

+ <#if msg??> + ${msg} + <#else> + 抱歉,系统出现异常 + +

+

自动返回上一页面等待10秒

+

返回首页

+ +
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/footer.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/footer.ftl" new file mode 100755 index 0000000..4db4610 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/footer.ftl" @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/header.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/header.ftl" new file mode 100755 index 0000000..34a8abf --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/common/header.ftl" @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/apply.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/apply.ftl" new file mode 100755 index 0000000..61ac983 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/apply.ftl" @@ -0,0 +1,110 @@ + + + + + + + 申请${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ 每个标签用空格结束 + +
+
+ +
+
+ +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/auditList.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/auditList.ftl" new file mode 100755 index 0000000..e40a176 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/auditList.ftl" @@ -0,0 +1,95 @@ + + + + + + + 审核帖子 - ${group.name} - ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ 审核帖子 +
+
+
+ <#list model.data as topic> +
+
+
+ + ${topic.member.name} + +
+
+

+

${topic.title}

+

+

+ ${topic.viewCount}   + ${topic.createTime?string('yyyy-MM-dd HH:mm')} + + 审核 + + + 删除 + +

+
+
+
+ +
+
+ +
+
+
+
+ +
+

+ + ${group.name} + +

+

${group.creatorMember.name} + 创建于${group.createTime?string("yyyy-MM-dd")}

+
+
+ ${group.introduce!''} +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/detail.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/detail.ftl" new file mode 100755 index 0000000..2d19519 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/detail.ftl" @@ -0,0 +1,157 @@ + + + + + + + ${group.name} - ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+

+ + ${group.name} + + + <#if isfollow == true> + 取消关注 + <#else> + 关注 + + <#if loginUser?? && loginUser.id == group.creator> + . 编辑 + + <#if isManager == 1> + . 审核帖子 + + <#if isManager == 1> + . 分类管理 + + +

+

${model.page.totalCount}帖子 · ${groupFansList?size}关注

+

${group.creatorMember.name} + 创建于${group.createTime?string("yyyy-MM-dd")}

+
+
+ ${group.introduce!''} +
+
+ <@ads id=2> + <#include "/tp/ad.ftl"/> + +
+
+ 全部<#if typeId == 0>    + <#list groupTopicTypeList as groupTopicType> + ${groupTopicType.name}<#if typeId == groupTopicType.id>    + + + 发帖 + +
+
+
+ <#list model.data as topic> +
+
+
+ ${topic.member.name} +
+
+

+

+ ${topic.title} + <#if topic.isTop==1> + 置顶 + <#elseif topic.isTop==2> + 超级置顶 + + <#if topic.isEssence==1> + 精华 + +

+

+

+ ${topic.viewCount}   + ${topic.createTime?string('yyyy-MM-dd HH:mm')} +

+
+
+
+ +
+
+
    +
+
+
+
+
+
+ 粉丝(${groupFansList?size}) +
+
+ <#list groupFansList as groupFans> + + +
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/edit.ftl" new file mode 100755 index 0000000..05e1b08 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/edit.ftl" @@ -0,0 +1,150 @@ + + + + + + + 修改${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ + +
+
+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ 输入会员昵称,每个管理员用空格结束,昵称不存在管理员不会添加 + +
+
+
+ +
+ 每个标签用空格结束 + +
+
+
+ +
+
+ checked> + +
+
+ checked> + +
+
+
+
+ +
+
+ checked> + +
+
+ checked> + +
+
+
+
+
+ + 返回 +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/fans.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/fans.ftl" new file mode 100755 index 0000000..19215c8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/fans.ftl" @@ -0,0 +1,98 @@ + + + + + + 粉丝 - ${group.name} - ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+
+
+
粉丝(${model.data?size})
+
+
+ <#list model.data as groupFans> + + + +
+
+
+
+
+
+
+
+ 简介 +
+
+ +
+

${group.name}

+

${model.data?size}关注

+

${group.creatorMember.name} 创建于${group.createTime?string("yyyy-MM-dd")}

+
+
+ ${group.introduce!''} +
+
+
+
+
+
+
+ +<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/index.ftl" new file mode 100755 index 0000000..c822b3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/index.ftl" @@ -0,0 +1,132 @@ + + + + + + + ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> + +
+
+
+
+
+ 最新帖子 + + 申请 + +
+
+
+
+
+ +
+
+
+
+ <@group_topic_list gid=0 num=6 thumbnail=1; groupTopic> + <#list groupTopicList as groupTopic> +
+
+ + +
+
+ + +
+
+
+
+
+
+ <@group_type_list> + <#list groupTypeList as groupType> +
+
+ ${groupType.name} +
+ <#list list as group> + <#if group.typeId == groupType.id> +
+
+ +
+

${group.name}

+

+ <#if group.introduce?length > 50> + ${group.introduce?substring(0,50)}... + <#else> + ${group.introduce} + +

+ ${group.topicCount}篇文章 · ${group.fansCount}人关注 +
+
+
+ + +
+ + +
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/list.ftl" new file mode 100755 index 0000000..c822b3e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/list.ftl" @@ -0,0 +1,132 @@ + + + + + + + ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> + +
+
+
+
+
+ 最新帖子 + + 申请 + +
+
+
+
+
+ +
+
+
+
+ <@group_topic_list gid=0 num=6 thumbnail=1; groupTopic> + <#list groupTopicList as groupTopic> +
+
+ + +
+
+ + +
+
+
+
+
+
+ <@group_type_list> + <#list groupTypeList as groupType> +
+
+ ${groupType.name} +
+ <#list list as group> + <#if group.typeId == groupType.id> +
+
+ +
+

${group.name}

+

+ <#if group.introduce?length > 50> + ${group.introduce?substring(0,50)}... + <#else> + ${group.introduce} + +

+ ${group.topicCount}篇文章 · ${group.fansCount}人关注 +
+
+
+ + +
+ + +
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/post.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/post.ftl" new file mode 100755 index 0000000..3c79e91 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/post.ftl" @@ -0,0 +1,100 @@ + + + + + + + 发帖 - ${group.name} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + 取消 +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topic.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topic.ftl" new file mode 100755 index 0000000..6e5c7f1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topic.ftl" @@ -0,0 +1,255 @@ + + + + + + + ${groupTopic.title} - ${groupTopic.group.name} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

+ ${groupTopic.title} + <#if groupTopic.isTop==1> + 置顶 + <#elseif groupTopic.isTop==2> + 超级置顶 + + <#if groupTopic.isEssence==1> + 精华 + +

+
+
+
${groupTopic.createTime?string('yyyy-MM-dd HH:mm')}
+ ${groupTopic.viewCount} +
+
+ <#if loginUser?? && (loginUser.id == groupTopic.memberId || loginUser.isAdmin > 0)> + + +
+
+
+ <@ads id=2> + <#include "/tp/ad.ftl"/> + +
+ ${groupTopic.content} +
+
+ <#if groupTopic.isFavor == 0> + + 喜欢 | ${groupTopic.favor} + + <#else> + + 喜欢 | ${groupTopic.favor} + + +
+
+ <@ads id=2> + <#include "/tp/ad.ftl"/> + +
+
帖子评论
+
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+ +
+
+
+ 发帖 +
+ +
+

+ + + + ${groupTopic.group.name} + + + + + <#if isfollow == true> + 取消关注 + <#else> + 关注 + + <#if loginUser?? && loginUser.id == groupTopic.group.creator> + . 编辑 + + <#if isManager == 1> + . 审核帖子 + + +

+
+
+ ${groupTopic.group.introduce!''} +
+
+
+
+
+
+
+ + image +
+
+ ${groupTopic.member.name} +

${groupTopic.member.memberLevel.name}

+
+
+

+ ${groupTopic.member.follows} + 关注 / + ${groupTopic.member.fans} + 粉丝 +

+

+ ${groupTopic.member.introduce} +

+
+
+
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+
+ 最新文章 +
+
+
    + <@cms_article_list cid=0 sort='id' num=10; article> + <#list articleList as article> +
  • ${article.title}
  • + + +
+
+
+
+
+ 热门文章 +
+
+
    + <@cms_article_list cid=0 sort='view-count' num=10 day=30; article> + <#list articleList as article> +
  • ${article.title}
  • + + +
+
+
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicEdit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicEdit.ftl" new file mode 100755 index 0000000..353dc10 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicEdit.ftl" @@ -0,0 +1,99 @@ + + + + + + + 修改帖子 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+ <#if groupTopic.thumbnail??> + + +
+
+

+

+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+
+ + 返回 +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeAdd.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeAdd.ftl" new file mode 100755 index 0000000..589a7b2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeAdd.ftl" @@ -0,0 +1,57 @@ + + + + + + + 添加帖子分类 - ${group.name} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + +
+
+
+
+ +
+ + +
+
+ + + +
+
+
+ + 取消 +
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeEdit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeEdit.ftl" new file mode 100755 index 0000000..6f8918f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeEdit.ftl" @@ -0,0 +1,59 @@ + + + + + + + 修改帖子分类 - ${groupTopicType.name} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + +
+
+
+
+ + +
+ + +
+
+ + + +
+
+
+ + 取消 +
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeList.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeList.ftl" new file mode 100755 index 0000000..38404f3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/group/topicTypeList.ftl" @@ -0,0 +1,88 @@ + + + + + + + 帖子分类管理 - ${group.name} - ${GROUP_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ 帖子分类管理 + 添加 +
+
+
+ + + + + + + + + + <#list list as topicType> + + + + + + +
分类名称操作
${topicType.name} + 编辑 + 删除 +
+
+
+ +
+
+
+
+ +
+

+ + ${group.name} + +

+

${group.creatorMember.name} + 创建于${group.createTime?string("yyyy-MM-dd")}

+
+
+ ${group.introduce!''} +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/home.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/home.ftl" new file mode 100755 index 0000000..c40aa9c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/home.ftl" @@ -0,0 +1,289 @@ + + + + + + + ${member.name}主页 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+
+ +
+
+
+ ${member.name} + <#if member.sex=='女'> + + <#elseif member.sex=='男'> + + <#else> + + + ${member.memberLevel.name} +
+

${member.website}

+

${member.introduce}

+

+ + 关注 + +

+
+
+
+
+ 关注 + ${member.follows} +
+
+ 粉丝 + ${member.fans} +
+
+ 积分 + ${member.score} +
+ +
+
+
+
+
+
+ +
+
+
+

+ <#if type=="article"> + 文章 + <#elseif type=="groupTopic"> + 群贴 + <#elseif type=="weibo"> + 微博 + <#elseif type=="groupTopic"> + 群贴 + <#elseif type=="fans"> + 粉丝 + <#elseif type=="follows"> + 关注 + <#elseif type=="group"> + 关注群组 + +

+
+
+ <#if type=="article"> + <#list model.data as article> +
+
+
${article.createTime?string('yyyy-MM-dd HH:mm')} +
+

+ + ${article.title} + +

+
+
+ +
    +
+ <#elseif type=="groupTopic"> + <#list model.data as groupTopic> +
+
+
${groupTopic.createTime?string('yyyy-MM-dd HH:mm')} +
+

+ + ${groupTopic.title} + +

+
+
+ +
    +
+ <#elseif type=="weibo"> + <#list model.data as weibo> +
+ +
+
+

${weibo.content}

+
+ <#list weibo.pictures as picture> + + + + +
+
+
+ ${weibo.createTime?string('yyyy-MM-dd HH:mm:ss')} (评论:${weibo.commentCount}) +
+
+
+ +
    +
+ <#elseif type=="group"> + <#list model.data as groupFans> + +
+ +
+
+

${groupFans.group.introduce}

+ ${groupFans.group.topicCount}篇文章 + · ${groupFans.group.fansCount}人关注 + +
+
+
+ +
    +
+ <#elseif type=="follows"> + <#list model.data as memberFans> +
+ +
+
+

${memberFans.followWhoMember.introduce}

+ ${memberFans.followWhoMember.follows}关注 + · ${memberFans.followWhoMember.fans}粉丝 + +
+
+
+ +
    +
+ <#elseif type=="fans"> + <#list model.data as memberFans> +
+ +
+
+

${memberFans.whoFollowMember.introduce}

+ ${memberFans.whoFollowMember.follows}关注 + · ${memberFans.whoFollowMember.fans}粉丝 + +
+
+
+ +
    +
+ + +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl" new file mode 100755 index 0000000..b27c1ab --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/index.ftl" @@ -0,0 +1,209 @@ + + + + + + + ${SITE_NAME} - ${SITE_SEO_TITLE} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ 推荐阅读 +
+
+
+ <@cms_article_list cid=0 num=20 thumbnail=1; article> + <#list articleList as article> +
+
+
+ <#if article.thumbnail??> + + ${article.title} + + +
+ +
+ ${article.description} +
+ +
+
+ + +
+
+
+
+
+
+
+ 微博 +
+
+ +
+
+
+
+ 最新帖子 +
+
+
+
+
+ +
+
+
+
+
+
+ + +
+
+
+ 推荐群组 + + 查看更多 + +
+
+
+
+ <@group_list status=1 num=8; group> + <#list groupList as group> +
+
+ +
+

${group.name}

+

+ <#if group.introduce?length > 50> + ${group.introduce?substring(0,50)}... + <#else> + ${group.introduce} + +

+ ${group.topicCount}篇文章 · ${group.fansCount}人关注 +
+
+
+ + +
+
+
+
+
+
+
+
+ 友情链接 + + 查看更多 + +
+ +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/link.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/link.ftl" new file mode 100755 index 0000000..0beb6d9 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/link.ftl" @@ -0,0 +1,49 @@ + + + + + + + 友情链接 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ 友情链接 +
+ +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/album.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/album.ftl" new file mode 100755 index 0000000..3c71e4a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/album.ftl" @@ -0,0 +1,117 @@ + + + + + + + ${member.name}的相册 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+ +
+
+
+ ${member.name} + <#if member.sex=='女'> + + <#elseif member.sex=='男'> + + <#else> + + +
+

${member.website}

+

${member.introduce}

+

+ + 关注 + +

+
+
+
+
+ 关注 + ${member.follows} +
+
+ 粉丝 + ${member.fans} +
+
+ 积分 + ${member.score} +
+ +
+
+
+
+
+
+
+
+
+ ${member.name}的相册列表 +
+
+
+ <#list model.data as pictureAlbum> +
+ +
+ +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/detail.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/detail.ftl" new file mode 100755 index 0000000..4b3a7ee --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/detail.ftl" @@ -0,0 +1,78 @@ + + + + + + ${picture.member.name}的图片 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+
+ + image + +
+
+ ${picture.member.name} +

上传于${picture.createTime?string("yyyy年MM月dd HH:mm")}

+
+
+
${picture.description}
+ +
+ +
+ + + +
+
+
+
+
+
+ + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/index.ftl" new file mode 100755 index 0000000..a4da98c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/index.ftl" @@ -0,0 +1,66 @@ + + + + + + + 图库 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ <#list model.data as picture> +
+
+
+ + + +
+
+
${picture.favorCount} 人喜欢
+
+
+
+ +
+
    +
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/list.ftl" new file mode 100755 index 0000000..ee122a5 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/picture/list.ftl" @@ -0,0 +1,96 @@ + + + + + + + 图片 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ ${pictureAlbum.member.name}的相册 > ${pictureAlbum.name} +
+
+ <#list model.data as picture> +
+
+
+ + + +
+
+
${picture.favorCount} 人喜欢
+
+
+
+ +
+
    +
+
+
+
+
+
+ + image +
+ +
+

+ ${pictureAlbum.member.follows} + 关注 / + ${pictureAlbum.member.fans} + 粉丝 +

+

+ ${pictureAlbum.member.introduce} +

+

${pictureAlbum.name}(${model.page.totalCount})

+
+
+
+
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/u.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/u.ftl" new file mode 100755 index 0000000..f55fb3f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/u.ftl" @@ -0,0 +1,155 @@ + + + + + + + ${member.name}主页 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+
+ +
+
+
+ ${member.name} + <#if member.sex=='女'> + + <#elseif member.sex=='男'> + + <#else> + + + ${member.memberLevel.name} +
+ +

${member.website}

+

${member.introduce}

+

+ + 关注 + + + 私信 + +

+
+
+
+
+ 关注 + ${member.follows} +
+
+ 粉丝 + ${member.fans} +
+
+ 积分 + ${member.score} +
+ +
+
+
+
+
+
+ +
+
+
+

动态

+
+
+ <#list actionLogModel.data as actionLog> +
+
+
${actionLog.createTime?string('yyyy-MM-dd HH:mm:ss')} +
+

${actionLog.member.name} ${actionLog.action.log}:

+
+
+
+ <#if actionLog.type==1> + ${actionLog.remark} + <#elseif actionLog.type==2> +

${actionLog.remark}

+ 查看 + <#elseif actionLog.type==4> + ${actionLog.remark} + +
+
+
+ +
    +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/detail.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/detail.ftl" new file mode 100755 index 0000000..1dc2b7c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/detail.ftl" @@ -0,0 +1,155 @@ + + + + + + + ${weibo.member.name}${WEIBO_ALIAS} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+
+ image +
+
+ ${weibo.member.name} + ${weibo.member.memberLevel.name} +
+
${weibo.content}
+
+ <#list weibo.pictures as picture> + + + +
+
+
+
+
+
+ <#if weibo.isFavor==0> + ${weibo.favor} + <#else> + ${weibo.favor} + + <#if loginUser?? && (loginUser.id == weibo.member.id || loginUser.isAdmin > 0)> + 删除 + +
+
+
+ <@ads id=2> + <#include "/tp/ad.ftl"/> + +
+
评论(${weibo.commentCount})
+
+
+
+
+ +
+
+ 0/${WEIBO_POST_MAXCONTENT} + +
+
+
+
+
+ +
+ +
+
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+
+ image +
+
+ ${weibo.member.name} +
+
+

+ ${weibo.member.follows} 关注 / + ${weibo.member.fans} 粉丝 +

+

+ ${weibo.member.introduce} +

+
+
+
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/list.ftl" new file mode 100755 index 0000000..77b6dc7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/list.ftl" @@ -0,0 +1,228 @@ + + + + + + + ${WEIBO_ALIAS}中心 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

+ + +

+
+ + + 0/${WEIBO_POST_MAXCONTENT} + + + +
+
+ +
+
+
+ <#list model.data as weibo> +
+ + + +
+
+ +
+
${weibo.content}
+
+ <#list weibo.pictures as picture> + + + +
+
+
+ <#if weibo.isFavor==0> + + ${weibo.favor} + <#else> + + ${weibo.favor} + + ${weibo.commentCount} + 查看详情 +
+
+
+ +
+
    +
+
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+ 热门微博 +
+
+ +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/topic.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/topic.ftl" new file mode 100755 index 0000000..2a2ba88 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/front/weibo/topic.ftl" @@ -0,0 +1,229 @@ + + + + + + + ${WEIBO_ALIAS}中心 - ${topicName} - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+

#${topicName}#

+
+

+ + +

+
+ + + 0/${WEIBO_POST_MAXCONTENT} + + + +
+
+ +
+
+
+ <#list model.data as weibo> +
+ + + +
+
+ +
+
${weibo.content}
+
+ <#list weibo.pictures as picture> + + + +
+
+
+ <#if weibo.isFavor==0> + + ${weibo.favor} + <#else> + + ${weibo.favor} + + ${weibo.commentCount} + 查看详情 +
+
+
+ +
+
    +
+
+
+ <@ads id=1> + <#include "/tp/ad.ftl"/> + +
+
+ 热门微博 +
+
+ +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/add.ftl" new file mode 100755 index 0000000..3ca5ba3 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/add.ftl" @@ -0,0 +1,116 @@ + + + + + + 添加广告 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/edit.ftl" new file mode 100755 index 0000000..daa9986 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/edit.ftl" @@ -0,0 +1,119 @@ + + + + + + 修改广告 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+ + + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/list.ftl" new file mode 100755 index 0000000..b893f34 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/ads/list.ftl" @@ -0,0 +1,121 @@ + + + + + + 广告管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

广告管理

+ +
+
+
+
+
+
+

+ + 添加 + +

+
+
+ + + + + + + + + + + + + + + <#list model.data as ads> + + + + + + + + + + + + +
#类型名称添加时间开始时间结束时间状态操作
${ads.id}${ads.typeName}${ads.name}${ads.createTime?string("yyyy-MM-dd HH:mm:ss")}${ads.startTime?string("yyyy-MM-dd HH:mm:ss")}${ads.endTime?string("yyyy-MM-dd HH:mm:ss")} + <#if ads.status=0> + + 禁用 + + <#else> + + 启用 + + + + + 修改 + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/checkin/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/checkin/list.ftl" new file mode 100755 index 0000000..1c85778 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/checkin/list.ftl" @@ -0,0 +1,86 @@ + + + + + + 签到 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

签到

+ +
+
+
+
+
+
+ + + + + + + + + + + <#list model.data as checkin> + + + + + + + + +
#会员签到时间连续签到(天)
${checkin.id}${checkin.member.name}${checkin.createTime?string("yyyy-MM-dd HH:mm:ss")}${checkin.continueDay}
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/add.ftl" new file mode 100755 index 0000000..641c358 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/add.ftl" @@ -0,0 +1,116 @@ + + + + + + 发布文章 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+
+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/edit.ftl" new file mode 100755 index 0000000..2555231 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/edit.ftl" @@ -0,0 +1,123 @@ + + + + + + 编辑文章 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+ + +
+ <#if article.thumbnail?? && article.thumbnail!=''> + + +
+
+

+

+
+
选择文件
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/index.ftl" new file mode 100755 index 0000000..05c42e0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/article/index.ftl" @@ -0,0 +1,162 @@ + + + + + + 文章管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

文章(${model.page.totalCount})

+ +
+
+
+
+
+
+

栏目

+
+ +
+
+
+ +
+
+
+
+
+
+

+ + 发布 + +

+ +
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + <#list model.data as article> + + + + + + + + + + +
#标题所在栏目创建时间状态操作
${article.id}${article.title}${article.articleCate.name}${article.createTime?string("yyyy-MM-dd HH:mm:ss")} + <#if article.status==0> + + 未审核 + + <#else> + + 已审核 + + + + + + + + + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/add.ftl" new file mode 100755 index 0000000..d382ee8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/add.ftl" @@ -0,0 +1,53 @@ + + + + + + 添加栏目 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + +
+
+ + 越大越靠前 +
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/edit.ftl" new file mode 100755 index 0000000..351f453 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/edit.ftl" @@ -0,0 +1,54 @@ + + + + + + 修改栏目 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ + +
+
+ + 越大越靠前 +
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/list.ftl" new file mode 100755 index 0000000..bb046d2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/articleCate/list.ftl" @@ -0,0 +1,84 @@ + + + + + + 文章栏目管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

+ + + +

+ +
+
+
+
+
+
+ + + + + + + + + + <#list list as mainMenu> + + + + + + + +
栏目名称序号操作
${mainMenu.name}${mainMenu.sort} + + + + + + +
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/comment/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/comment/list.ftl" new file mode 100755 index 0000000..3829d0d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/cms/comment/list.ftl" @@ -0,0 +1,118 @@ + + + + + + 文章评论管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

文章评论(${model.page.totalCount})

+ +
+
+
+
+
+
+

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + <#list model.data as articleComment> + + + + + + + + + + +
#会员评论内容文章创建时间操作
${articleComment.id} + + ${articleComment.member.name} + + ${articleComment.content} + + 《${articleComment.article.title}》 + + ${articleComment.createTime?string("yyyy-MM-dd HH:mm:ss")} + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/error.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/error.ftl" new file mode 100755 index 0000000..2981065 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/error.ftl" @@ -0,0 +1,40 @@ + + + + + + 错误 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+
+
+
+ ${msg} +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/footer.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/footer.ftl" new file mode 100755 index 0000000..d0a10ea --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/footer.ftl" @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/header.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/header.ftl" new file mode 100755 index 0000000..d9681ac --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/common/header.ftl" @@ -0,0 +1,154 @@ +
+ + +
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/index.ftl" new file mode 100755 index 0000000..c4b677a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/index.ftl" @@ -0,0 +1,116 @@ + + + + + + 群组管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

群组管理(${list?size})

+ +
+
+
+
+
+
+

+

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + + <#list list as group> + + + + + + + + + + + +
#群组名字创建人标签创建时间状态操作
${group.id}${group.name}${group.creatorMember.name}${group.tags}${group.createTime?string("yyyy-MM-dd HH:mm:ss")} + <#if group.status==0> + + 未审核 + + <#elseif group.status==1> + + 已审核 + + + + + + +
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/add.ftl" new file mode 100755 index 0000000..2e8c1b0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/add.ftl" @@ -0,0 +1,51 @@ + + + + + + 添加群组分类 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/edit.ftl" new file mode 100755 index 0000000..5242cda --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/edit.ftl" @@ -0,0 +1,51 @@ + + + + + + 修改群组分类 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/list.ftl" new file mode 100755 index 0000000..509448f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/group/type/list.ftl" @@ -0,0 +1,99 @@ + + + + + + 群组分类管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

群组分类管理(${list?size})

+ +
+ +
+
+
+
+
+

+ + 添加 + +

+
+
+ + + + + + + + + + + <#list list as groupType> + + + + + + + + +
#分类名称创建时间操作
${groupType.id}${groupType.name}${groupType.createTime?string("yyyy-MM-dd HH:mm:ss")} + + 修改 + + + + +
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/index.ftl" new file mode 100755 index 0000000..b8c0832 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/index.ftl" @@ -0,0 +1,457 @@ + + + + + + JEESNS后台管理首页 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+
+
+
+ 感谢您使用JEESNS,JEESNS正在不断完善中,可以向我们提出宝贵的建议或意见,JEESNS的成长需要大家的支持。 +
+
+
+
+
+
+
+

+ 感谢您使用JEESNS,JEESNS是一款基于JAVA企业级平台研发的社交管理系统, + 依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。 + 数据库使用MYSQL,全部源代码开放,官方网址: + www.jeesns.cn。 +

+

+ + 联系我 + + + 访问官网 + +

+
+
+
+
+
+
+

+ 技术支持:凌夕网络(www.lxinet.com)
+ 产品交流:JEESNS社区(www.jeesns.cn)
+ 服务器赞助:919数据中心(www.919dns.com)
+ QQ交流群:280062708
+ 商业授权QQ:582866070 +

+
+
+
+
+
+
+
+
+
+

JAVA版本:${javaVersion}

+

MYSQL版本:${mysqlVersion}

+

WEB服务器:${webVersion}

+

CPU个数:${cpu}

+

虚拟机内存总量:${totalMemory}

+

虚拟机空闲内存量:${freeMemory}

+

虚拟机使用的最大内存量:${maxMemory}

+
+
+

客户端IP:${clientIP}

+

服务器IP:${serverIP}

+

操作系统:${osName}

+

用户主目录:${userHome}

+

工作目录:${userDir}

+

系统目录:${webRootPath}

+
+
+
+
+
+
+
+

系统支持:${systemName}

+

当前版本:${systemVersion}

+

当前版本更新时间:${systemUpdateTime}

+

最新版本:    + 官网查看

+

最新版本更新时间:

+

 

+

 

+
+
+
+
+
+
+
+
+
二次开发
+
+
+

我们提供基于JEESNS的二次开发、模板定制服务,具体费用请联系我们。

+

同时,我们也提供以下服务:

+
    +
  1. 网站定制开发
  2. +
  3. 仿站服务
  4. +
  5. APP开发
  6. +
  7. 微信开发等
  8. +
  9. ......
  10. +
+
+
+
+
+
+
+
商业授权说明
+
+
+

商业授权后我可以获得什么?

+
    +
  1. 可以用于商业网站
  2. +
  3. 可以去除Powered by JEESNS
  4. +
  5. 获得更多功能;
  6. +
  7. 意见或建议优先考虑;
  8. +
  9. 提供技术服务支持;
  10. +
  11. ……
  12. +
+
+
+
+
+
+
+
更新日志
+
+
+
+
+
+
+
+ v1.32018.08.03 +
+
+
+
+
+
    +
  • 修复:发送私信和获取私信列表异常问题
  • +
  • 修复:修复在小分辨率的屏幕下,图库页面打开图片详情,关闭按钮无法找到问题
  • +
  • 修复:修复前台右上角鼠标放在用户名上自动显示下拉菜单,鼠标去选择菜单时,会自动消失情况
  • +
  • 修复:修复项目如果不是部署在根目录下进行访问,@用户名 的时候,进入用户详情页面的链接错误
  • +
  • 修复:修复项目如果不是部署在根目录下进行访问,群组帖子进行置顶、设置精华等操作链接无效问题
  • +
  • 修复:修复群组页面和首页中群组帖子数量统计问题
  • +
  • 修复:修复XSS脚本注入漏洞
  • +
  • 修复:修复群组默认分类删除提示请求失败的问题
  • +
  • 修复:修复修改帖子报错问题
  • +
  • 修复:修复异常拦截问题
  • +
  • 优化:底层代码、异常信息、提示信息代码进行重构
  • +
  • 优化:优化前后台用户操作体验
  • +
  • 增加:增加微博、群组可以自定义访问路径功能
  • +
  • 增加:增加群组分类功能
  • +
  • 增加:增加群组帖子分类功能
  • +
  • 增加:会员关注实体增加ID
  • +
+
+
+
+
+
+
+
+ v1.2.12017.12.04 +
+
+
+
+
+
    +
  • 修复:如果项目部署部署在根目录,首页群组链接出错问题
  • +
  • 修复:修复后台查看版本更新日志折叠问题
  • +
  • 优化:取消访问不存在的页数时显示最后一页的数据
  • +
  • 优化:优化文章查询字段
  • +
  • 优化:上传图片生成缩略图算法
  • +
  • 优化:统一脚本和文档的路径
  • +
  • 优化:优化后台操作提示
  • +
  • 增加:图库模块
  • +
+
+
+
+
+
+
+
+ v1.2.0-正式版2017.10.31 +
+
+
+
+
+
    +
  • 修复:发布微博提示undefined
  • +
  • 修复:微博不显示图片的问题
  • +
  • 修复:在windows系统下微博emoji不能显示问题
  • +
  • 修复:如果应用部署在子目录下,如/jeesns,使用富文本编辑器上传图片时,图片无法显示问题,临时修复方法
  • +
  • 修复:微博列表右边热门微博显示跟最新微博内容一样的问题
  • +
  • 修复:文章列表右边热门文章显示跟最新文章一样的问题
  • +
  • 增加:微博点赞、微博回复、文章回复、文章喜欢、群组帖子回复、群组帖子喜欢发送系统消息通知
  • +
  • 增加:微博发表、微博评论、文章发布、文章评论、群组发帖、群组帖子回复@用户发送系统通知功能
  • +
+
+
+
+
+
+
+
+ v1.2.0-RC32017.10.16 +
+
+
+
+
+
    +
  • 修复:后台审核文章时提示非法操作
  • +
  • 修复:后台修改系统信息时不会马上生效,需要重启Tomcat的问题
  • +
  • 修复:在前台文章列表,如果选择栏目,下一页之后,栏目会失效
  • +
  • 修复:富文本编辑器图片上传功能
  • +
  • 修复:新注册会员激活功能无法使用问题
  • +
  • 修复:邮件发送失败问题
  • +
  • 修复:重置密码问题
  • +
  • 修复:后台会员列表搜索和下一页异常
  • +
  • 修复:发帖跳转错误页面失败问题
  • +
  • 修复:修改头像不能马上生效问题
  • +
  • 修复:后台广告列表开始时间和添加时间显示错误
  • +
  • 优化:前台LOGO位置
  • +
  • 优化:首页和会员中心头部界面
  • +
  • 优化:审核帖子页面增加返回群组链接
  • +
  • 优化:删除微博列表下用管理员身份访问时的删除链接,需要删除微博直接进入到详情删除
  • +
  • 优化:删除富文本编辑器上传图片界面预览窗口的英文说明
  • +
  • 优化:文章列表页面
  • +
  • 优化:上传图片功能
  • +
  • 优化:管理后台登录页面修改
  • +
  • 增加:文章详情页面增加作者基本信息
  • +
  • 增加:新私信提醒功能
  • +
  • 增加:文章搜索功能
  • +
  • 增加:帖子加精、置顶功能
  • +
  • 增加:广告模块
  • +
  • 增加:友情链接模块
  • +
  • 增加:友情链接模块
  • +
  • 增加:友情链接模块
  • +
  • 增加:增加微博评论引用回复功能
  • +
  • 增加:增加群组帖子评论引用回复功能
  • +
+
+
+
+
+
+
+
+ v1.2.0-RC22017.8.2 +
+
+
+
+
+
    +
  • 修复帖子页面头像不显示问题
  • +
  • 修复管理员在前台登录后,点击右上角的`管理`出现404问题
  • +
  • 在帖子详情页面不能显示群组logo
  • +
  • 点击首页帖子链接进入到文章详情问题
  • +
  • 出现异常时,跳转到异常页面,报错找不到error.ftl文件
  • +
  • 未登录情况下进入帖子页面出现异常
  • +
  • 修改配置静态资源文件所在目录
  • +
  • 刚申请的群组发帖出现异常
  • +
  • 在帖子页面,点击右边发帖,会进入发布文章页面
  • +
  • 优化文章投稿功能,如果文章需要审核,投稿成功后自动跳转到文章列表页面,避免投稿成功跳转到异常页面
  • +
  • 优化帖子发布,如果帖子需要审核,自动跳转到群组详情页面,如果不需要审核,自动跳转到帖子页面
  • +
  • 在微博列表、详情页面,管理员或者作者本人点击删除链接时,增加确认删除提示
  • +
  • 在帖子详情页面删除帖子后,自动跳到群组详情页面
  • +
  • 微博列表,热门微博删除的时候,没有先弹出提示
  • +
  • 在帖子详情页面群组名字增加链接
  • +
  • 在帖子详情页面增加判断是否已关注群组
  • +
  • 在帖子列表、帖子详情页面,增加置顶、精华标识
  • +
  • 统一系统配置
  • +
  • 去掉打印查询语句功能
  • +
  • 文章列表页面优化
  • +
  • 在群组审核帖子页面,增加审核、删除帖子功能
  • +
+
+
+
+
+
+
+
+ v1.0.22017.4.17 +
+
+
+
+
+
    +
  • 优化微博、文章、帖子图片裁剪功能
  • +
  • 优化配置文件
  • +
  • XSS攻击处理优化
  • +
  • 系统设置增加统计代码、版权说明、备案号
  • +
  • 修复群组发帖缩略图上传失败问题
  • +
  • 修复多次运行积分规则SQL导致ID不一致问题
  • +
  • 修复Emoji偶尔抽风不能用问题
  • +
+
+
+
+
+
+
+
+ v1.0.12017.4.10 +
+
+
+
+
+
    +
  • 增加会员积分功能
  • +
  • XSS攻击处理
  • +
  • 增加判断,访问未审核的文章详情页面时,提示文章不存在
  • +
  • 修复在文章、帖子、微博评论中点击评论人的头像或者姓名不会调整到会员主页
  • +
  • 修复管理员admin账号在后台无法登录情况
  • +
  • 提交表单成功后,增加等待跳转时加载的图标
  • +
+
+
+
+
+
+
+
+ v1.02017.3.14 +
+
+
+
+
+
    +
  • 增加后台管理员授权与取消功能
  • +
  • 增加私信模块
  • +
  • 解决在微博页面,左侧微博点赞过后,左侧展示列表小手会变黑,但是右侧热门出小手依然是白色
  • +
  • 修复后台添加栏目、文章成功后,提示页面找不到问题
  • +
  • 增加后台登录页面
  • +
  • 优化选择图片速度慢的问题
  • +
  • 增加动态功能
  • +
  • 优化微博图片展示、优化文章、帖子上传缩略图功能
  • +
  • 微博增加发布图片功能
  • +
  • 修复编辑文章和帖子失败问题
  • +
  • 增加会员登录后自动跳转到前操作页面
  • +
  • 修复项目如果部署到子目录下,退出或跳到登录页面出现404问题
  • +
  • 解决微博内容换行后加入emoji表情无效问题
  • +
  • 界面优化、修复手机访问无法点击问题
  • +
  • 修复后台修改会员密码页面样式问题
  • +
  • 修复偶尔用户权限判断错误问题
  • +
  • 优化会员主页、增加查看粉丝、关注、文章、群贴、微博、关注的群组功能
  • +
  • 优化分页查询功能,解决部分分页出现异常情况
  • +
  • 增加404、500异常页面处理
  • +
+
+
+
+
+
+
+
+ v0.82017.2.17 +
+
+
+
+
+
    +
  • 后台界面全新升级
  • +
  • 后台增加微博搜索功能
  • +
  • 增加了会员操作日志、会员动态
  • +
  • 微博、微博评论增加@会员功能
  • +
  • 群组帖子增加置顶、精华功能
  • +
  • 限制微博输入内如字数、输入内容时字数统计
  • +
  • 微博增加Emoji表情
  • +
  • 增加微博、文章、群组帖子喜欢、点赞功能,
  • +
  • 修复会员修改头像时会把系统默认头像文件删除了
  • +
  • 删除文章、帖子、微博时删除相应的评论
  • +
  • 解决查看会员信息时会员信息显示错误
  • +
+
+
+
+
+
+
+
+ v0.52017.2.7 +
+
+
+
+
此版本是一个预览版本,让我们共同期待1.0版的到来
+
+
+
+
+
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/add.ftl" new file mode 100755 index 0000000..7b7bf4a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/add.ftl" @@ -0,0 +1,83 @@ + + + + + + 添加友情链接 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/edit.ftl" new file mode 100755 index 0000000..ca47a41 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/edit.ftl" @@ -0,0 +1,84 @@ + + + + + + 添加友情链接 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/list.ftl" new file mode 100755 index 0000000..b736bd2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/link/list.ftl" @@ -0,0 +1,127 @@ + + + + + + 友情链接管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

友情链接管理

+ +
+
+
+
+
+
+

+ + 添加 + +

+
+
+ + + + + + + + + + + + + + + <#list model.data as link> + + + + + + + + + + + + +
#网站名称网址序号推荐状态添加时间操作
${link.id}${link.name}${link.url}${link.sort} + <#if link.recomment=0> + 不推荐 + <#else> + 推荐 + + + <#if link.status=0> + + 禁用 + + <#else> + + 启用 + + + ${link.createTime?string("yyyy-MM-dd HH:mm:ss")} + + 修改 + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/login.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/login.ftl" new file mode 100755 index 0000000..8a16692 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/login.ftl" @@ -0,0 +1,194 @@ + + + + + + + + + + JEESNS后台管理系统登录 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+

认证中...

+
+
+ + + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/changepwd.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/changepwd.ftl" new file mode 100755 index 0000000..83c0980 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/changepwd.ftl" @@ -0,0 +1,56 @@ + + + + + + 修改密码 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ ${member.name} +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/index.ftl" new file mode 100755 index 0000000..ebd519a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/index.ftl" @@ -0,0 +1,129 @@ + + + + + + 会员管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

会员管理(${model.page.totalCount})

+ +
+
+
+
+
+
+

+

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + + + <#list model.data as member> + + + + + + + + + + + + +
#用户名邮箱手机号码登录次数注册时间状态操作
${member.id}${(member.name || member.email)?string(member.name,member.email)}${member.email}${member.phone}${member.loginCount}${member.createTime?string("yyyy-MM-dd HH:mm:ss")} + <#if member.status=-1> + + 禁用 + + <#else> + + 启用 + + + + + 修改密码 + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerAdd.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerAdd.ftl" new file mode 100755 index 0000000..8dbfd14 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerAdd.ftl" @@ -0,0 +1,49 @@ + + + + + + 授权管理员 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerList.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerList.ftl" new file mode 100755 index 0000000..c374186 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/member/managerList.ftl" @@ -0,0 +1,115 @@ + + + + + + 管理员 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

管理员(${model.page.totalCount}) + 授权 +

+ +
+
+
+
+
+
+

+

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + + <#list model.data as member> + + + + + + + + + + + +
#用户名邮箱手机号码登录次数注册时间操作
${member.id}${(member.name || member.email)?string(member.name,member.email)}${member.email}${member.phone}${member.loginCount}${member.createTime?string("yyyy-MM-dd HH:mm:ss")} + + 取消管理员 + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/picture/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/picture/list.ftl" new file mode 100755 index 0000000..c483783 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/picture/list.ftl" @@ -0,0 +1,94 @@ + + + + + + 图片管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

图片管理

+ +
+
+
+
+
+
+ +
+
+ +
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/actionLogList.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/actionLogList.ftl" new file mode 100755 index 0000000..328468c --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/actionLogList.ftl" @@ -0,0 +1,89 @@ + + + + + + 会员日志 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

会员日志(${model.page.totalCount})

+ +
+
+
+
+
+
+ + + + + + + + + + + <#list model.data as actionLog> + + + + + + + + +
#会员描述时间
${actionLog.id} + <#if actionLog.member??> + ${actionLog.member.name} + + ${actionLog.action.log}。${actionLog.remark}${actionLog.createTime?string("yyyy-MM-dd HH:mm:ss")}
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/edit.ftl" new file mode 100755 index 0000000..0f224ea --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/edit.ftl" @@ -0,0 +1,58 @@ + + + + + + 修改动态类型 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/list.ftl" new file mode 100755 index 0000000..af6dbeb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/list.ftl" @@ -0,0 +1,96 @@ + + + + + + 会员动态类型 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

+ 会员动态类型 +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + <#list list as action> + + + + + + + + + + + +
#名称描述添加时间更新时间状态操作
${action.id}${action.name}${action.log}${action.createTime?string("yyyy-MM-dd HH:mm:ss")}${action.updateTime?string("yyyy-MM-dd HH:mm:ss")} + <#if action.status=1> + + 禁用 + + <#else> + + 启用 + + + + + + +
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/memberActionLog.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/memberActionLog.ftl" new file mode 100755 index 0000000..0550a5a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/action/memberActionLog.ftl" @@ -0,0 +1,95 @@ + + + + + + 会员动态 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

会员动态(${model.page.totalCount})

+ +
+
+
+
+
+
+ + + + + + + + + + + <#list model.data as actionLog> + + + + + + + + +
#会员描述时间
${actionLog.id}${actionLog.member.name}${actionLog.action.log}: +
+ <#if actionLog.type==1> + ${actionLog.remark} + <#elseif actionLog.type==2> + ${actionLog.remark} + <#elseif actionLog.type==4> + ${actionLog.remark} + +
${actionLog.createTime?string("yyyy-MM-dd HH:mm:ss")}
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/config/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/config/edit.ftl" new file mode 100755 index 0000000..d22e41b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/config/edit.ftl" @@ -0,0 +1,294 @@ + + + + + + 系统设置 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

+ 系统设置 +

+ +
+
+ +
+
+<#include "/manage/common/footer.ftl"/> +
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/edit.ftl" new file mode 100755 index 0000000..a938c1e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/edit.ftl" @@ -0,0 +1,70 @@ + + + + + + 修改积分规则 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/list.ftl" new file mode 100755 index 0000000..46c129b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/system/scoreRule/list.ftl" @@ -0,0 +1,114 @@ + + + + + + 积分规则 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

+ 积分规则 +

+ +
+
+ +
+
+
+
+ + + + + + + + + + + + + + + + <#list list as scoreRule> + + + + + + + + + + + + + +
#名称描述变动积分周期添加时间更新时间状态操作
${scoreRule.id}${scoreRule.name}${scoreRule.remark}${scoreRule.score} + <#if scoreRule.type=="day"> + 一天一次 + <#elseif scoreRule.type=="week"> + 一周一次 + <#elseif scoreRule.type=="month"> + 一月一次 + <#elseif scoreRule.type=="year"> + 一年一次 + <#elseif scoreRule.type=="one"> + 一次 + <#elseif scoreRule.type=="unlimite"> + 不限 + + ${scoreRule.createTime?string("yyyy-MM-dd HH:mm:ss")}${scoreRule.updateTime?string("yyyy-MM-dd HH:mm:ss")} + <#if scoreRule.status=0> + + 禁用 + + <#else> + + 启用 + + + + + + +
+
+
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/add.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/add.ftl" new file mode 100755 index 0000000..d5bf018 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/add.ftl" @@ -0,0 +1,51 @@ + + + + + + 添加标签 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ +
+ + +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/edit.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/edit.ftl" new file mode 100755 index 0000000..c5219f1 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/edit.ftl" @@ -0,0 +1,51 @@ + + + + + + 修改标签 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/list.ftl" new file mode 100755 index 0000000..1eb1c68 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/tag/list.ftl" @@ -0,0 +1,101 @@ + + + + + + 标签管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

标签管理

+ +
+
+
+
+
+
+

+ + 添加 + +

+
+
+ + + + + + + + + + <#list model.data as tag> + + + + + + + +
#名称操作
${tag.id}${tag.name} + + 修改 + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/weibo/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/weibo/index.ftl" new file mode 100755 index 0000000..d8f3ba6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/manage/weibo/index.ftl" @@ -0,0 +1,115 @@ + + + + + + 微博管理 - ${SITE_NAME} - JEESNS后台管理系统 - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+<#include "/manage/common/header.ftl"/> +
+
+

微博管理(${model.page.totalCount})

+ +
+
+
+
+
+
+

+

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + + + + + + + + <#list model.data as weibo> + + + + + + + + + + +
#会员内容点赞数发布时间操作
${weibo.id}${weibo.member.name}${weibo.content}${weibo.favor}${weibo.createTime?string("yyyy-MM-dd HH:mm:ss")} + + 详情 + + + + +
+
+ +
+
+
+
+
+<#include "/manage/common/footer.ftl"/> +
+ + + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/active.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/active.ftl" new file mode 100755 index 0000000..5bfeee6 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/active.ftl" @@ -0,0 +1,111 @@ + + + + + + + 激活账号 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

激活账号

+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/avatar.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/avatar.ftl" new file mode 100755 index 0000000..d73d3dd --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/avatar.ftl" @@ -0,0 +1,103 @@ + + + + + + + 修改头像 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+ +
+
+
+

修改头像

+
+
+
+

+ 本组件需要安装Flash Player后才可使用,请从这里下载安装。 +

+
+ +
+ +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/error.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/error.ftl" new file mode 100755 index 0000000..6f56b86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/error.ftl" @@ -0,0 +1,36 @@ + + + + + + 错误 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + + + +
+
+
+ ${msg} + +
+
+
\ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/topInfo.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/topInfo.ftl" new file mode 100755 index 0000000..8ad175b --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/common/topInfo.ftl" @@ -0,0 +1,50 @@ +
+
+
+
+
+
+ +
+
+
+ ${loginUser.name} + <#if loginUser.sex=='女'> + + <#elseif loginUser.sex=='男'> + + <#else> + + +
+

${loginUser.website}

+

${loginUser.introduce}

+

+ + 个人中心 + +

+
+
+
+
+ 关注 + ${loginUser.follows} +
+
+ 粉丝 + ${loginUser.fans} +
+
+ 积分 + ${loginUser.score} +
+ +
+
+
+
\ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/editInfo.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/editInfo.ftl" new file mode 100755 index 0000000..178b6cb --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/editInfo.ftl" @@ -0,0 +1,161 @@ + + + + + + + 修改资料 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+ +
+
+
+

修改资料

+
+ +
+
+
+
+ +
+ ${loginUser.email} +
+
+
+ +
+ +
+
+
+ +
+ + + +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/forgetpwd.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/forgetpwd.ftl" new file mode 100755 index 0000000..2598a86 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/forgetpwd.ftl" @@ -0,0 +1,111 @@ + + + + + + + 忘记密码 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

忘记密码

+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/index.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/index.ftl" new file mode 100755 index 0000000..f63c16f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/index.ftl" @@ -0,0 +1,142 @@ + + + + + + + 个人中心 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+
+ +
+
+
+ ${loginUser.name} + <#if loginUser.sex=='女'> + + <#elseif loginUser.sex=='男'> + + <#else> + + + ${loginUser.memberLevel.name} +
+

${loginUser.website}

+

${loginUser.introduce}

+

+ + 编辑个人资料 + +

+
+
+
+
+ 关注 + ${loginUser.follows} +
+
+ 粉丝 + ${loginUser.fans} +
+
+ 积分 + ${loginUser.score} +
+ +
+
+
+
+
+
+ +
+
+
+

动态

+
+
+ <#list actionLogModel.data as actionLog> + +
+
+
${actionLog.createTime?string('yyyy-MM-dd HH:mm:ss')}
+

${actionLog.member.name} ${actionLog.action.log}:

+
+
+
+ <#if actionLog.type==1> + ${actionLog.remark} + <#elseif actionLog.type==2> +

${actionLog.remark}

+ 查看 + <#elseif actionLog.type==4> + ${actionLog.remark} + +
+
+
+ +
    +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/login.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/login.ftl" new file mode 100755 index 0000000..10a8a7e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/login.ftl" @@ -0,0 +1,77 @@ + + + + + + + 会员登录 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

登录

+
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/message.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/message.ftl" new file mode 100755 index 0000000..93dff18 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/message.ftl" @@ -0,0 +1,71 @@ + + + + + + 我的私信 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+
+

私信

+
+
+
+
+ +
+ +
+
+
+
+ +
+ +
+
暂无聊天记录
+
+
+ + +
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/password.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/password.ftl" new file mode 100755 index 0000000..7c98a7f --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/password.ftl" @@ -0,0 +1,78 @@ + + + + + + + 修改密码 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+ +
+
+
+

修改密码

+
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/addAlbum.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/addAlbum.ftl" new file mode 100755 index 0000000..fce2538 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/addAlbum.ftl" @@ -0,0 +1,65 @@ + + + + + + + 新建相册 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ 谁可以看到这个相册? +
+
+ + + +
+
+
+
+
+ +
+
+
+
+ + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/album.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/album.ftl" new file mode 100755 index 0000000..92c8f33 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/album.ftl" @@ -0,0 +1,72 @@ + + + + + + + 相册 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +<#include "/member/common/topInfo.ftl"/> +
+
+
+
+
+ 相册列表 + + 新建相册 + +
+
+
+ <#list model.data as pictureAlbum> +
+
+ + <#if pictureAlbum.description??> +
${pictureAlbum.description}
+ +
${pictureAlbum.name}
+
+
${pictureAlbum.favorCount} 人喜欢
+
+
+
+ +
+
+
+
+
+
+<#include "/${frontTemplate}/common/footer.ftl"/> + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/list.ftl" new file mode 100755 index 0000000..d20df9d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/list.ftl" @@ -0,0 +1,99 @@ + + + + + + + 图片 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
+
+
+
+
+ ${pictureAlbum.member.name}相册 > ${pictureAlbum.name} + + 上传图片 + +
+
+ <#list model.data as picture> +
+
+
+ + + +
+
+
${picture.favorCount} 人喜欢
+
+
+
+ +
+
    +
+
+
+
+
+
+ + image +
+ +
+

+ ${pictureAlbum.member.follows} + 关注 / + ${pictureAlbum.member.fans} + 粉丝 +

+

+ ${pictureAlbum.member.introduce} +

+

${pictureAlbum.name}(${model.page.totalCount})

+
+
+
+
+
+
+
+ +
+<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/uploadPic.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/uploadPic.ftl" new file mode 100755 index 0000000..c8a1f76 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/picture/uploadPic.ftl" @@ -0,0 +1,71 @@ + + + + + + + 上传图片 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + + +
+
+
+
+
+
选择图片
+
+ + +
+
+

或将照片拖到这里,最多可选30张

+
+
    +
    + +
    +
    + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/register.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/register.ftl" new file mode 100755 index 0000000..5e7c1e8 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/register.ftl" @@ -0,0 +1,86 @@ + + + + + + + 会员注册 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
    +
    +
    +
    +
    +
    +

    欢迎加入${SITE_NAME}

    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +<#include "/${frontTemplate}/common/footer.ftl"/> + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/resetpwd.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/resetpwd.ftl" new file mode 100755 index 0000000..3a866e7 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/resetpwd.ftl" @@ -0,0 +1,69 @@ + + + + + + + 重置密码 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
    +
    +
    +
    +
    +
    +

    重置密码

    +
    +
    + + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +<#include "/${frontTemplate}/common/footer.ftl"/> + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/scoreDetail/list.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/scoreDetail/list.ftl" new file mode 100755 index 0000000..aadd0ac --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/scoreDetail/list.ftl" @@ -0,0 +1,74 @@ + + + + + + + 积分明细 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
    +
    +
    +
    +
    +
    +

    积分明细

    +
    +
    + + + + + + + + + + + <#list model.data as scoreDetail> + + + + + + + + +
    #变动积分备注时间
    ${scoreDetail.id}${scoreDetail.score}${scoreDetail.remark}${scoreDetail.createTime?string("yyyy-MM-dd HH:mm:ss")}
    +
      +
    +
    +
    +
    +
    +
    +
    +<#include "/${frontTemplate}/common/footer.ftl"/> + + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/sendMessageBox.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/sendMessageBox.ftl" new file mode 100755 index 0000000..b84798a --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/sendMessageBox.ftl" @@ -0,0 +1,91 @@ + + + + + + 发送私信 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    + 发送私信给:${member.name} + 聊天记录 +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/systemMessage.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/systemMessage.ftl" new file mode 100755 index 0000000..732277e --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/member/systemMessage.ftl" @@ -0,0 +1,131 @@ + + + + + + + 系统消息 - ${SITE_NAME} - Powered By JEESNS + + + + + + + + + + + + + + + +<#include "/${frontTemplate}/common/header.ftl"/> +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + ${loginUser.name} + <#if loginUser.sex=='女'> + + <#elseif loginUser.sex=='男'> + + <#else> + + +
    +

    ${loginUser.website}

    +

    ${loginUser.introduce}

    +

    + + 编辑个人资料 + +

    +
    +
    +
    +
    + 关注 + ${loginUser.follows} +
    +
    + 粉丝 + ${loginUser.fans} +
    +
    + 积分 + ${loginUser.score} +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +

    系统消息

    +
    +
    + <#list messageModel.data as message> + +
    +
    +
    ${message.createTime?string('yyyy-MM-dd HH:mm:ss')}
    +

    @${message.member.name} :${message.content}

    +
    +
    +
    + ${message.description} +
    +
    +
    + +
      +
    +
    +
    +
    +
    +
    +
    +<#include "/${frontTemplate}/common/footer.ftl"/> + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/tp/ad.ftl" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/tp/ad.ftl" new file mode 100755 index 0000000..f3b098d --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/templates/tp/ad.ftl" @@ -0,0 +1,15 @@ +<#if ad??> + <#if ad.status == 0> + 广告已被禁用 + <#elseif ad.startTime?datetime gt .now?datetime || ad.endTime?datetime lt .now?datetime> + 广告已过期 + <#else> + <#if ad.type == 1> + + <#elseif ad.type == 2> + ${ad.content} + <#elseif ad.type == 3> + ${ad.content} + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/web.xml" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/web.xml" new file mode 100755 index 0000000..0e2dfe0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/WEB-INF/web.xml" @@ -0,0 +1,87 @@ + + + + jeesns + + contextConfigLocation + classpath*:spring-*.xml + + + defaultHtmlEscape + true + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + true + + encoding + UTF-8 + + + + encodingFilter + /* + + + XssSqlFilter + com.lxinet.jeesns.core.filter.XssFilter + + + XssSqlFilter + /* + REQUEST + + + org.springframework.web.context.ContextLoaderListener + + + org.springframework.web.util.IntrospectorCleanupListener + + + com.lxinet.jeesns.listener.InitListener + + + + springmvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:spring-mvc.xml + + 1 + + + springmvc + / + + + springmvc + /index + + + 14400 + + + + 404 + /404.html + + + 400 + /error.html + + + 500 + /error.html + + + + index + index.html + + diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/favicon.ico" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/favicon.ico" new file mode 100755 index 0000000..9099dc9 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/favicon.ico" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/readme.txt" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/readme.txt" new file mode 100755 index 0000000..b069cd2 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/readme.txt" @@ -0,0 +1,73 @@ +JEESNS +开发语言:JAVA +数据库:MYSQL +JAVA开发框架:Spring MVC+Spring+Mybatis +前台前端开发框架:ZUI+JQuery+Bootstrap +前台模板引擎:Freemarker + +简介 + JEESNS是一款基于JAVA企业级平台研发的社交管理系统,依托企业级JAVA的高效、安全、稳定等优势,开创国内JAVA版开源SNS先河。数据库使用MYSQL,全部源代码开放。 + 交流社区:http://www.jeesns.cn + 官方网址:http://www.lxinet.com + github(源代码下载):https://github.com/zchuanzhao/jeesns + + + +应用场景 + JEESNS是一个企业级的开源社区系统,是一个可以用来搭建门户、群组、论坛和微博的社区系统。 + JEESNS是将SNS社会化网络元素,人和群组结合在一起的新型的社交系统。 + JEESNS以人为中心,通过用户的需求和行为将最有价值的信息得以不断整合。 + JEESNS是一个稳定、安全、可扩展的社区系统,可以帮您搭建与众不同的交流社区。 + 如果您要需要搭建一个论坛,那么您可以用JEESNS + 如果您需要一个群组,那么您可以用JEESNS + 如果您需要因为某个话题来汇聚人群,那么您可以用JEESNS + +私信功能 + 界面模仿PC版微信 + 可以查看私聊过的联系人 + 聊天界面自动刷新 +个人主页 + 关注会员 + 私信会员 + 查看动态 + 查看粉丝、关注、微博、文章、帖子、群组 +微博模块 + 支持图片类型的微博 + 多图画廊展示 + 支持添加Emoji标签 + 点赞功能 +群组模块 + 可以关注群组 + 支持上传群组logo + 支持发帖审核开关 + 授权管理员 + 帖子喜欢功能 + 帖子加精、置顶 +文章模块 + 文章喜欢功能 + 文章投稿功能开关 + 文章审核功能开关 + 文章评论 +动态模块 + 洞悉一切 + +环境要求 + JDK7或更高版本 + Tomcat7.0或更高版本 + MySQL5.1或更高版本 + +搭建步骤 + 1、将重新上传到支持JAVA的空间或者服务器上; + 2、导入数据库,将/database/jeesns.sql导入到mysql数据库中; + 3、修改数据库信息,修改文件:WEB-INF\classes\jeesns.properties + jdbc.driver=com.mysql.jdbc.Driver + jdbc.url=jdbc:mysql://数据库服务器IP(本地直接用localhost):端口号(默认3306)/数据库名?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull + jdbc.user=数据库用户名 + jdbc.password=数据库密码 + #后台管理目录 + managePath=manage + + 4、重启Tomcat。 + 后台登录地址:http://域名/manage/ + 后台用户名:admin + 密码:jeesns \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/animate.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/animate.min.css" new file mode 100755 index 0000000..f647558 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/animate.min.css" @@ -0,0 +1,12 @@ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license + +Copyright (c) 2013 Daniel Eden + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;z-index:100}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);transform:translateY(-15px)}}@keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}40%{-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}60%{-webkit-transform:translateY(-15px);-ms-transform:translateY(-15px);transform:translateY(-15px)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes pulse{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes rubberBand{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}30%{-webkit-transform:scaleX(1.25) scaleY(0.75);-ms-transform:scaleX(1.25) scaleY(0.75);transform:scaleX(1.25) scaleY(0.75)}40%{-webkit-transform:scaleX(0.75) scaleY(1.25);-ms-transform:scaleX(0.75) scaleY(1.25);transform:scaleX(0.75) scaleY(1.25)}60%{-webkit-transform:scaleX(1.15) scaleY(0.85);-ms-transform:scaleX(1.15) scaleY(0.85);transform:scaleX(1.15) scaleY(0.85)}100%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);-ms-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);-ms-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);-ms-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);-ms-transform:rotate(-5deg);transform:rotate(-5deg)}100%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}@keyframes tada{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}10%,20%{-webkit-transform:scale(0.9) rotate(-3deg);-ms-transform:scale(0.9) rotate(-3deg);transform:scale(0.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale(1.1) rotate(3deg);-ms-transform:scale(1.1) rotate(3deg);transform:scale(1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale(1.1) rotate(-3deg);-ms-transform:scale(1.1) rotate(-3deg);transform:scale(1.1) rotate(-3deg)}100%{-webkit-transform:scale(1) rotate(0);-ms-transform:scale(1) rotate(0);transform:scale(1) rotate(0)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);transform:translateX(0%)}}@keyframes wobble{0%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}15%{-webkit-transform:translateX(-25%) rotate(-5deg);-ms-transform:translateX(-25%) rotate(-5deg);transform:translateX(-25%) rotate(-5deg)}30%{-webkit-transform:translateX(20%) rotate(3deg);-ms-transform:translateX(20%) rotate(3deg);transform:translateX(20%) rotate(3deg)}45%{-webkit-transform:translateX(-15%) rotate(-3deg);-ms-transform:translateX(-15%) rotate(-3deg);transform:translateX(-15%) rotate(-3deg)}60%{-webkit-transform:translateX(10%) rotate(2deg);-ms-transform:translateX(10%) rotate(2deg);transform:translateX(10%) rotate(2deg)}75%{-webkit-transform:translateX(-5%) rotate(-1deg);-ms-transform:translateX(-5%) rotate(-1deg);transform:translateX(-5%) rotate(-1deg)}100%{-webkit-transform:translateX(0%);-ms-transform:translateX(0%);transform:translateX(0%)}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(.9);transform:scale(.9)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes bounceIn{0%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}50%{opacity:1;-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}70%{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}60%{opacity:1;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px)}80%{-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}60%{opacity:1;-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}80%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes bounceInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}60%{opacity:1;-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes bounceInUp{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}60%{opacity:1;-webkit-transform:translateY(-30px);-ms-transform:translateY(-30px);transform:translateY(-30px)}80%{-webkit-transform:translateY(10px);-ms-transform:translateY(10px);transform:translateY(10px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{0%{-webkit-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.95);transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3);transform:scale(.3)}}@keyframes bounceOut{0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}25%{-webkit-transform:scale(.95);-ms-transform:scale(.95);transform:scale(.95)}50%{opacity:1;-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}100%{opacity:0;-webkit-transform:scale(.3);-ms-transform:scale(.3);transform:scale(.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes bounceOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes bounceOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes bounceOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}20%{opacity:1;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes bounceOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}20%{opacity:1;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translateX(40px);-ms-transform:translateX(40px);transform:translateX(40px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}}@keyframes fadeOutDown{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes fadeOutDownBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}}@keyframes fadeOutLeft{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-20px);-ms-transform:translateX(-20px);transform:translateX(-20px)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes fadeOutLeftBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}}@keyframes fadeOutRight{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(20px);-ms-transform:translateX(20px);transform:translateX(20px)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes fadeOutRightBig{0%{opacity:1;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}}@keyframes fadeOutUp{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-20px);-ms-transform:translateY(-20px);transform:translateY(-20px)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes fadeOutUpBig{0%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(0) scale(1);transform:perspective(400px) translateZ(0) rotateY(0) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(170deg) scale(1);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-ms-transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);transform:perspective(400px) translateZ(150px) rotateY(190deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-ms-transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);transform:perspective(400px) translateZ(0) rotateY(360deg) scale(1);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;-ms-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-10deg);-ms-transform:perspective(400px) rotateX(-10deg);transform:perspective(400px) rotateX(-10deg)}70%{-webkit-transform:perspective(400px) rotateX(10deg);-ms-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg)}100%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}}.flipInX{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-10deg);-ms-transform:perspective(400px) rotateY(-10deg);transform:perspective(400px) rotateY(-10deg)}70%{-webkit-transform:perspective(400px) rotateY(10deg);-ms-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg)}100%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}}.flipInY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px) rotateX(0deg);-ms-transform:perspective(400px) rotateX(0deg);transform:perspective(400px) rotateX(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateX(90deg);-ms-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px) rotateY(0deg);-ms-transform:perspective(400px) rotateY(0deg);transform:perspective(400px) rotateY(0deg);opacity:1}100%{-webkit-transform:perspective(400px) rotateY(90deg);-ms-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;-ms-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}60%{-webkit-transform:translateX(-20%) skewX(30deg);-ms-transform:translateX(-20%) skewX(30deg);transform:translateX(-20%) skewX(30deg);opacity:1}80%{-webkit-transform:translateX(0%) skewX(-15deg);-ms-transform:translateX(0%) skewX(-15deg);transform:translateX(0%) skewX(-15deg);opacity:1}100%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}@keyframes lightSpeedOut{0%{-webkit-transform:translateX(0%) skewX(0deg);-ms-transform:translateX(0%) skewX(0deg);transform:translateX(0%) skewX(0deg);opacity:1}100%{-webkit-transform:translateX(100%) skewX(-30deg);-ms-transform:translateX(100%) skewX(-30deg);transform:translateX(100%) skewX(-30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(-200deg);-ms-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;-webkit-transform:rotate(200deg);-ms-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:left bottom;-ms-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);opacity:1}100%{-webkit-transform-origin:right bottom;-ms-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}100%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);transform:translateX(-2000px)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(-2000px);-ms-transform:translateX(-2000px);transform:translateX(-2000px)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);transform:translateX(2000px)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}100%{opacity:0;-webkit-transform:translateX(2000px);-ms-transform:translateX(2000px);transform:translateX(2000px)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);transform:translateY(-2000px)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(-2000px);-ms-transform:translateY(-2000px);transform:translateY(-2000px)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}100%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes hinge{0%{-webkit-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);transform:translateY(700px);opacity:0}}@keyframes hinge{0%{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);-ms-transform:rotate(80deg);transform:rotate(80deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%{-webkit-transform:rotate(60deg);-ms-transform:rotate(60deg);transform:rotate(60deg);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}80%{-webkit-transform:rotate(60deg) translateY(0);-ms-transform:rotate(60deg) translateY(0);transform:rotate(60deg) translateY(0);-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translateY(700px);-ms-transform:translateY(700px);transform:translateY(700px);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}@keyframes rollOut{0%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}100%{opacity:0;-webkit-transform:translateX(100%) rotate(120deg);-ms-transform:translateX(100%) rotate(120deg);transform:translateX(100%) rotate(120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.css" new file mode 100755 index 0000000..b82bd72 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.css" @@ -0,0 +1,457 @@ +/*! + * Bootstrap v3.3.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +.btn-default, +.btn-primary, +.btn-success, +.btn-info, +.btn-warning, +.btn-danger { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075); +} +.btn-default:active, +.btn-primary:active, +.btn-success:active, +.btn-info:active, +.btn-warning:active, +.btn-danger:active, +.btn-default.active, +.btn-primary.active, +.btn-success.active, +.btn-info.active, +.btn-warning.active, +.btn-danger.active { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-default .badge, +.btn-primary .badge, +.btn-success .badge, +.btn-info .badge, +.btn-warning .badge, +.btn-danger .badge { + text-shadow: none; +} +.btn:active, +.btn.active { + background-image: none; +} +.btn-default { + text-shadow: 0 1px 0 #fff; + background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0)); + background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #dbdbdb; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus { + background-color: #e0e0e0; + background-position: 0 -15px; +} +.btn-default:active, +.btn-default.active { + background-color: #e0e0e0; + border-color: #dbdbdb; +} +.btn-default:disabled, +.btn-default[disabled] { + background-color: #e0e0e0; + background-image: none; +} +.btn-primary { + background-image: -webkit-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: -o-linear-gradient(top, #428bca 0%, #2d6ca2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#2d6ca2)); + background-image: linear-gradient(to bottom, #428bca 0%, #2d6ca2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #2b669a; +} +.btn-primary:hover, +.btn-primary:focus { + background-color: #2d6ca2; + background-position: 0 -15px; +} +.btn-primary:active, +.btn-primary.active { + background-color: #2d6ca2; + border-color: #2b669a; +} +.btn-primary:disabled, +.btn-primary[disabled] { + background-color: #2d6ca2; + background-image: none; +} +.btn-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #3e8f3e; +} +.btn-success:hover, +.btn-success:focus { + background-color: #419641; + background-position: 0 -15px; +} +.btn-success:active, +.btn-success.active { + background-color: #419641; + border-color: #3e8f3e; +} +.btn-success:disabled, +.btn-success[disabled] { + background-color: #419641; + background-image: none; +} +.btn-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #28a4c9; +} +.btn-info:hover, +.btn-info:focus { + background-color: #2aabd2; + background-position: 0 -15px; +} +.btn-info:active, +.btn-info.active { + background-color: #2aabd2; + border-color: #28a4c9; +} +.btn-info:disabled, +.btn-info[disabled] { + background-color: #2aabd2; + background-image: none; +} +.btn-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #e38d13; +} +.btn-warning:hover, +.btn-warning:focus { + background-color: #eb9316; + background-position: 0 -15px; +} +.btn-warning:active, +.btn-warning.active { + background-color: #eb9316; + border-color: #e38d13; +} +.btn-warning:disabled, +.btn-warning[disabled] { + background-color: #eb9316; + background-image: none; +} +.btn-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-color: #b92c28; +} +.btn-danger:hover, +.btn-danger:focus { + background-color: #c12e2a; + background-position: 0 -15px; +} +.btn-danger:active, +.btn-danger.active { + background-color: #c12e2a; + border-color: #b92c28; +} +.btn-danger:disabled, +.btn-danger[disabled] { + background-color: #c12e2a; + background-image: none; +} +.thumbnail, +.img-thumbnail { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + background-color: #357ebd; + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd)); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.navbar-default { + background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8)); + background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075); +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2)); + background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075); +} +.navbar-brand, +.navbar-nav > li > a { + text-shadow: 0 1px 0 rgba(255, 255, 255, .25); +} +.navbar-inverse { + background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222)); + background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + background-repeat: repeat-x; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .active > a { + background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f)); + background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); + box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25); +} +.navbar-inverse .navbar-brand, +.navbar-inverse .navbar-nav > li > a { + text-shadow: 0 -1px 0 rgba(0, 0, 0, .25); +} +.navbar-static-top, +.navbar-fixed-top, +.navbar-fixed-bottom { + border-radius: 0; +} +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f5e79e; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3)); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} +.progress { + background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar { + background-image: -webkit-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: -o-linear-gradient(top, #428bca 0%, #3071a9 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3071a9)); + background-image: linear-gradient(to bottom, #428bca 0%, #3071a9 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-success { + background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44)); + background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-info { + background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5)); + background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-warning { + background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f)); + background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-danger { + background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c)); + background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0); + background-repeat: repeat-x; +} +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.list-group { + border-radius: 4px; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075); + box-shadow: 0 1px 2px rgba(0, 0, 0, .075); +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + text-shadow: 0 -1px 0 #3071a9; + background-image: -webkit-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: -o-linear-gradient(top, #428bca 0%, #3278b3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#3278b3)); + background-image: linear-gradient(to bottom, #428bca 0%, #3278b3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0); + background-repeat: repeat-x; + border-color: #3278b3; +} +.list-group-item.active .badge, +.list-group-item.active:hover .badge, +.list-group-item.active:focus .badge { + text-shadow: none; +} +.panel { + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: 0 1px 2px rgba(0, 0, 0, .05); +} +.panel-default > .panel-heading { + background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8)); + background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0); + background-repeat: repeat-x; +} +.panel-primary > .panel-heading { + background-image: -webkit-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -o-linear-gradient(top, #428bca 0%, #357ebd 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#428bca), to(#357ebd)); + background-image: linear-gradient(to bottom, #428bca 0%, #357ebd 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0); + background-repeat: repeat-x; +} +.panel-success > .panel-heading { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6)); + background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0); + background-repeat: repeat-x; +} +.panel-info > .panel-heading { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3)); + background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0); + background-repeat: repeat-x; +} +.panel-warning > .panel-heading { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc)); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0); + background-repeat: repeat-x; +} +.panel-danger > .panel-heading { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc)); + background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0); + background-repeat: repeat-x; +} +.well { + background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%); + background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5)); + background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0); + background-repeat: repeat-x; + border-color: #dcdcdc; + -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1); +} +/*# sourceMappingURL=bootstrap-theme.css.map */ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.min.css" new file mode 100755 index 0000000..3bbb050 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap-theme.min.css" @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:-o-linear-gradient(top,#428bca 0,#2d6ca2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#2d6ca2));background-image:linear-gradient(to bottom,#428bca 0,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff2d6ca2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-primary:disabled,.btn-primary[disabled]{background-color:#2d6ca2;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-o-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#357ebd));background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:-o-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#3071a9));background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:-o-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#3278b3));background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0);background-repeat:repeat-x;border-color:#3278b3}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-o-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#428bca),to(#357ebd));background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.css" new file mode 100755 index 0000000..4165d41 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.css" @@ -0,0 +1,6358 @@ +/*! + * Bootstrap v3.3.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + select { + background: #fff !important; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\2a"; +} +.glyphicon-plus:before { + content: "\2b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #428bca; + text-decoration: none; +} +a:hover, +a:focus { + color: #2a6496; + text-decoration: underline; +} +a:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #428bca; +} +a.text-primary:hover { + color: #3071a9; +} +.text-success { + color: #3c763d; +} +a.text-success:hover { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #428bca; +} +a.bg-primary:hover { + background-color: #3071a9; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-child(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + cursor: not-allowed; + background-color: #eee; + opacity: 1; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +input[type="date"], +input[type="time"], +input[type="datetime-local"], +input[type="month"] { + line-height: 34px; + line-height: 1.42857143 \0; +} +input[type="date"].input-sm, +input[type="time"].input-sm, +input[type="datetime-local"].input-sm, +input[type="month"].input-sm { + line-height: 30px; + line-height: 1.5 \0; +} +input[type="date"].input-lg, +input[type="time"].input-lg, +input[type="datetime-local"].input-lg, +input[type="month"].input-lg { + line-height: 46px; + line-height: 1.33 \0; +} +_:-ms-fullscreen, +:root input[type="date"], +_:-ms-fullscreen, +:root input[type="time"], +_:-ms-fullscreen, +:root input[type="datetime-local"], +_:-ms-fullscreen, +:root input[type="month"] { + line-height: 1.42857143; +} +_:-ms-fullscreen.input-sm, +:root input[type="date"].input-sm, +_:-ms-fullscreen.input-sm, +:root input[type="time"].input-sm, +_:-ms-fullscreen.input-sm, +:root input[type="datetime-local"].input-sm, +_:-ms-fullscreen.input-sm, +:root input[type="month"].input-sm { + line-height: 1.5; +} +_:-ms-fullscreen.input-lg, +:root input[type="date"].input-lg, +_:-ms-fullscreen.input-lg, +:root input[type="time"].input-lg, +_:-ms-fullscreen.input-lg, +:root input[type="datetime-local"].input-lg, +_:-ms-fullscreen.input-lg, +:root input[type="month"].input-lg { + line-height: 1.33; +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm, +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm, +select.form-group-sm .form-control { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +textarea.form-group-sm .form-control, +select[multiple].input-sm, +select[multiple].form-group-sm .form-control { + height: auto; +} +.input-lg, +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-lg, +select.form-group-lg .form-control { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +textarea.form-group-lg .form-control, +select[multiple].input-lg, +select[multiple].form-group-lg .form-control { + height: auto; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 14.3px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:hover, +.btn-default:focus, +.btn-default.focus, +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled, +.btn-default[disabled], +fieldset[disabled] .btn-default, +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus, +.btn-default.disabled:active, +.btn-default[disabled]:active, +fieldset[disabled] .btn-default:active, +.btn-default.disabled.active, +.btn-default[disabled].active, +fieldset[disabled] .btn-default.active { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus, +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #3071a9; + border-color: #285e8e; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled, +.btn-primary[disabled], +fieldset[disabled] .btn-primary, +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus, +.btn-primary.disabled:active, +.btn-primary[disabled]:active, +fieldset[disabled] .btn-primary:active, +.btn-primary.disabled.active, +.btn-primary[disabled].active, +fieldset[disabled] .btn-primary.active { + background-color: #428bca; + border-color: #357ebd; +} +.btn-primary .badge { + color: #428bca; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:hover, +.btn-success:focus, +.btn-success.focus, +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled, +.btn-success[disabled], +fieldset[disabled] .btn-success, +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus, +.btn-success.disabled:active, +.btn-success[disabled]:active, +fieldset[disabled] .btn-success:active, +.btn-success.disabled.active, +.btn-success[disabled].active, +fieldset[disabled] .btn-success.active { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:hover, +.btn-info:focus, +.btn-info.focus, +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled, +.btn-info[disabled], +fieldset[disabled] .btn-info, +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus, +.btn-info.disabled:active, +.btn-info[disabled]:active, +fieldset[disabled] .btn-info:active, +.btn-info.disabled.active, +.btn-info[disabled].active, +fieldset[disabled] .btn-info.active { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus, +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled, +.btn-warning[disabled], +fieldset[disabled] .btn-warning, +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus, +.btn-warning.disabled:active, +.btn-warning[disabled]:active, +fieldset[disabled] .btn-warning:active, +.btn-warning.disabled.active, +.btn-warning[disabled].active, +fieldset[disabled] .btn-warning.active { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus, +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled, +.btn-danger[disabled], +fieldset[disabled] .btn-danger, +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus, +.btn-danger.disabled:active, +.btn-danger[disabled]:active, +fieldset[disabled] .btn-danger:active, +.btn-danger.disabled.active, +.btn-danger[disabled].active, +fieldset[disabled] .btn-danger.active { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #428bca; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #2a6496; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; + visibility: hidden; +} +.collapse.in { + display: block; + visibility: visible; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px solid; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #428bca; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px solid; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus { + outline: 0; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child > .btn:last-child, +.btn-group > .btn-group:first-child > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.33; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #428bca; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #428bca; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; + visibility: hidden; +} +.tab-content > .active { + display: block; + visibility: visible; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + visibility: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #428bca; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + color: #2a6496; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 2; + color: #fff; + cursor: default; + background-color: #428bca; + border-color: #428bca; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #428bca; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #3071a9; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +a.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #428bca; + background-color: #fff; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding: 30px 15px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding: 48px 0; + } + .container .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #428bca; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #428bca; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +a.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +a.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #e1edf7; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +a.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +a.list-group-item-success.active:hover, +a.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +a.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +a.list-group-item-info.active:hover, +a.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +a.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +a.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #428bca; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #428bca; + border-color: #428bca; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #428bca; +} +.panel-primary > .panel-heading .badge { + color: #428bca; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #428bca; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + min-height: 16.42857143px; + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-size: 12px; + line-height: 1.4; + visibility: visible; + filter: alpha(opacity=0); + opacity: 0; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + text-decoration: none; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + left: 5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + right: 5px; + bottom: 0; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + left: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + right: 5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000; + perspective: 1000; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + margin-top: -10px; + font-family: serif; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -15px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -15px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -15px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; + visibility: hidden !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.min.css" new file mode 100755 index 0000000..4af8905 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/bootstrap.min.css" @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px;line-height:1.42857143 \0}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px;line-height:1.5 \0}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px;line-height:1.33 \0}_:-ms-fullscreen,:root input[type=date],_:-ms-fullscreen,:root input[type=time],_:-ms-fullscreen,:root input[type=datetime-local],_:-ms-fullscreen,:root input[type=month]{line-height:1.42857143}_:-ms-fullscreen.input-sm,:root input[type=date].input-sm,_:-ms-fullscreen.input-sm,:root input[type=time].input-sm,_:-ms-fullscreen.input-sm,:root input[type=datetime-local].input-sm,_:-ms-fullscreen.input-sm,:root input[type=month].input-sm{line-height:1.5}_:-ms-fullscreen.input-lg,:root input[type=date].input-lg,_:-ms-fullscreen.input-lg,:root input[type=time].input-lg,_:-ms-fullscreen.input-lg,:root input[type=datetime-local].input-lg,_:-ms-fullscreen.input-lg,:root input[type=month].input-lg{line-height:1.33}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;perspective:1000}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/font-awesome.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/font-awesome.min.css" new file mode 100755 index 0000000..f65b7db --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/font-awesome.min.css" @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfonte0a5.eot?v=4.3.0');src:url('../fonts/fontawesome-webfontd41d.eot?#iefix&v=4.3.0') format('embedded-opentype'),url('../fonts/fontawesome-webfonte0a5.woff2?v=4.3.0') format('woff2'),url('../fonts/fontawesome-webfonte0a5.woff?v=4.3.0') format('woff'),url('../fonts/fontawesome-webfonte0a5.ttf?v=4.3.0') format('truetype'),url('../fonts/fontawesome-webfonte0a5.svg?v=4.3.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.75714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-genderless:before,.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui-theme.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui-theme.min.css" new file mode 100755 index 0000000..fc2e2d0 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui-theme.min.css" @@ -0,0 +1,6 @@ +/*! + * ZUI: Theme - v1.6.0 - 2017-03-16 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2017 cnezsoft.com; Licensed MIT + */a{color:#3949ab}a:focus,a:hover{color:#263172}.btn{color:#353535;background-color:#fff;border-color:#ccc;border-radius:0}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#b3b3b3;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#ebebeb;border-color:#adadad;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#ccc}.btn-primary{color:#fff;background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b387c;background-image:none;border-color:#313e8b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#344397;border-color:#2e3b84;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3f51b5;border-color:#3e4fb1}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#df8a13;background-image:none;border-color:#ec951a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#e89014;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#f0ab49}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#b52b27;background-image:none;border-color:#c52f2b;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#bd2d29;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d84f4b}.btn-success{color:#fff;background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#357a38;background-image:none;border-color:#3b883e;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#409343;border-color:#38813b;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#4caf50;border-color:#4aab4e}.btn-info{color:#fff;background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#026899;background-image:none;border-color:#0276ae;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0280bd;border-color:#026fa4;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#039be5;border-color:#0398e0}.btn-link{color:#3949ab;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#263172}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd}.popover,.tooltip-inner{border-radius:0}.label{border-radius:0}.label-badge{border-radius:12px}.label-dot{border-radius:5px}.label-primary{background-color:#3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#32408f}.label-primary.label-circle{color:#3f51b5;background:0 0;border:1px solid #3f51b5}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#32408f}.label-success{background-color:#4caf50}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#3d8b40}.label-success.label-circle{color:#4caf50;background:0 0;border:1px solid #4caf50}.label-success[href]:focus,.label-success[href]:hover{background-color:#3d8b40}.label-info{background-color:#039be5}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#0279b3}.label-info.label-circle{color:#039be5;background:0 0;border:1px solid #039be5}.label-info[href]:focus,.label-info[href]:hover{background-color:#0279b3}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ec971f}.label-warning.label-circle{color:#f0ad4e;background:0 0;border:1px solid #f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#c9302c}.label-danger.label-circle{color:#d9534f;background:0 0;border:1px solid #d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#8591d5}.text-primary{color:#3f51b5}.text-primary:hover{color:#32408f}.text-warning{color:#f0ad4e}.text-warning:hover{color:#ec971f}.text-danger{color:#d9534f}.text-danger:hover{color:#c9302c}.text-success{color:#4caf50}.text-success:hover{color:#3d8b40}.text-info{color:#039be5}.text-info:hover{color:#0279b3}.text-important{color:#bd7b46}.text-important:hover{color:#996337}.text-special{color:#8666b8}.text-special:hover{color:#6c4aa1}.text-muted a:active,.text-muted a:hover{color:#3949ab}.text-link:active,.text-link:hover{color:#3949ab}.bg-primary{background-color:#3f51b5}a.bg-primary:hover{background-color:#32408f}.hl-primary{background-color:#eceff1}a.hl-primary:hover{background-color:#cfd6db}.form-control{border-radius:0}.form-control:focus{border-color:#3949ab;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-control:focus{border-color:#3949ab;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#f1f1f1}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:0}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#eceff1}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#333}.navbar-toggle{border-radius:0}@media (min-width:768px){.navbar{border-radius:0}}.navbar-inverse{background-color:#3949ab;border-color:#2c3985}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#334198}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#5262c5}.navbar-inverse .navbar-toggle{border-color:#5262c5}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#334198}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#303e90}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#5262c5}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#2c3985}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#4254c0}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#5262c5}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #5262c5;-webkit-box-shadow:inset 0 -1px 0 #2c3985;box-shadow:inset 0 -1px 0 #2c3985}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#eaeaea;background-color:#2f3c8c}.nav>li>a:focus,.nav>li>a:hover{color:#263172}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#3949ab}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#3f51b5}.nav-primary>li:first-child>a{border-top-left-radius:0;border-bottom-left-radius:0}.nav-primary>li:last-child>a{border-top-right-radius:0;border-bottom-right-radius:0}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3f51b5;border-bottom-color:#3f51b5}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3f51b5;box-shadow:inset 2px 0 0 #3f51b5}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-tabs>li>a{border-radius:0}.pager{border-radius:0}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:0;border-bottom-left-radius:0}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:0;border-bottom-right-radius:0}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;background-color:#fff;border-color:#ddd}.panel{border-radius:0;-webkit-box-shadow:none;box-shadow:none}.panel>.panel-heading{background-image:none;border-top-left-radius:0;border-top-right-radius:0}.panel-group .panel{border-radius:0}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#3f51b5}.panel-primary>.panel-heading{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3f51b5}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3f51b5}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eceff1}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#3949ab!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#3949ab!important}.chosen-container-single .chosen-single{border-radius:0!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.chosen-container .chosen-results li.highlighted{background-color:#3f51b5!important}.chosen-container-active .chosen-single{border-color:#3949ab!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#cbcbcb!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#3949ab!important}.chosen-container-multi .chosen-choices{border-radius:0!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3949ab!important;border-bottom-left-radius:#3949ab!important}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #ddd}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#353535;background-color:#fff;border-color:#ddd}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#353535}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.dropdown-menu{border-radius:0}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#3f51b5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#3f51b5}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#3f51b5}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#f0ad4e!important;border-color:#f0ad4e!important}.datetimepicker td.day.active{background-color:#3f51b5!important;border-color:#32408f!important}.datetimepicker td.day.active:hover{background-color:#32408f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ec971f!important}.ke-container{border-radius:0!important}.ke-container.focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.ke-menu-item-on{background-color:#3f51b5!important}.ke-colorpicker-cell-on{background-color:#3f51b5!important}.ke-input-text:focus{border-color:#3949ab!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(57,73,171,.6)!important}.messager{border-radius:0}.messager-primary{background-color:#3f51b5}.messager-success{background-color:#4caf50}.messager-info{background-color:#039be5}.messager-warning{background-color:#f0ad4e}.messager-danger{background-color:#d9534f}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.comment:hover>.content>.actions>a{color:#3949ab}.alert:not(.alert-block){border-radius:0}.alert-primary{color:#282828;background-color:#eceff1}.alert-primary hr{border-top-color:#eceff1}.alert-primary .alert-link{color:#161616}.alert-success{color:#449d48;background-color:#ddf4df}.alert-success hr{border-top-color:#ddf4df}.alert-success .alert-link{color:#39843c}.alert-info{color:#038acc;background-color:#ddf3f5}.alert-info hr{border-top-color:#ddf3f5}.alert-info .alert-link{color:#0272a9}.alert-warning{color:#eea236;background-color:#fff0d5}.alert-warning hr{border-top-color:#fff0d5}.alert-warning .alert-link{color:#eb9316}.alert-danger{color:#d43f3a;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffe5e0}.alert-danger .alert-link{color:#c12e2a}.alert-primary-inverse{color:#fff;background-color:#3f51b5;border-color:#3f51b5}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:1px}.card{border-radius:0;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:0} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui.min.css" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui.min.css" new file mode 100755 index 0000000..7cdf687 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/css/zui.min.css" @@ -0,0 +1,6 @@ +/*! + * ZUI: Standard edition - v1.6.0 - 2017-03-16 + * http://zui.sexy + * GitHub: https://github.com/easysoft/zui.git + * Copyright (c) 2017 cnezsoft.com; Licensed MIT + *//*! Some code copy from Bootstrap v3.0.0 by @fat and @mdo. (Copyright 2013 Twitter, Inc. Licensed under http://www.apache.org/licenses/)*//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group-vertical:before,.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.cards:after,.cards:before,.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.pager-loose:after,.pager-loose:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group-vertical:after,.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.cards:after,.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.pager-loose:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-size:13px;line-height:1.53846154;color:#353535;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#0499e2;text-decoration:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}a:focus,a:hover{color:#0d3d88;text-decoration:underline}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,svg,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:740px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1160px}}.container-fixed{width:1160px}.container-fixed-md{width:960px}.container-fixed-sm{width:740px}.container-fixed-xs{width:440px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-muted{color:grey}.text-muted a{color:#737373}.text-muted a:active,.text-muted a:hover{color:#0499e2}.text-primary{color:#00aaee}.text-primary:hover{color:#0462f7}.text-warning{color:#f1a325}.text-warning:hover{color:#d5890e}.text-danger{color:#ea644a}.text-danger:hover{color:#e53d1c}.text-success{color:#38b03f}.text-success:hover{color:#2c8931}.text-info{color:#03b8cf}.text-info:hover{color:#028b9d}.text-important{color:#bd7b46}.text-important:hover{color:#996337}.text-special{color:#8666b8}.text-special:hover{color:#6c4aa1}.text-link{color:#353535}.text-link:active,.text-link:hover{color:#0499e2}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.53846154}dt{font-weight:700}dd{margin-left:0}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline:after,.dl-inline:before{display:table;content:" "}.dl-inline:after{clear:both}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #e5e5e5}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.53846154;color:grey}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e5e5e5;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.bg-default{color:#fff;background-color:#353535}a.bg-default:hover{background-color:#1c1c1c}.bg-primary{color:#fff;background-color:#00aaee}a.bg-primary:hover{background-color:#0462f7}.bg-success{color:#fff;background-color:#38b03f}a.bg-success:hover{background-color:#2c8931}.bg-info{color:#fff;background-color:#03b8cf}a.bg-info:hover{background-color:#028b9d}.bg-warning{color:#fff;background-color:#f1a325}a.bg-warning:hover{background-color:#d5890e}.bg-danger{color:#fff;background-color:#ea644a}a.bg-danger:hover{background-color:#e53d1c}.bg-important{color:#fff;background-color:#bd7b46}a.bg-important:hover{background-color:#996337}.bg-special{color:#fff;background-color:#8666b8}a.bg-special:hover{background-color:#6c4aa1}.hl-default{background-color:#f1f1f1}a.hl-default:hover{background-color:#d7d7d7}.hl-primary{background-color:#ebf2f9}a.hl-primary:hover{background-color:#c4d8ed}.hl-success{background-color:#ddf4df}a.hl-success:hover{background-color:#b6e8bb}.hl-info{background-color:#ddf3f5}a.hl-info:hover{background-color:#b6e5e9}.hl-warning{background-color:#fff0d5}a.hl-warning:hover{background-color:#ffdea2}.hl-danger{background-color:#ffe5e0}a.hl-danger:hover{background-color:#ffbaad}.hl-important{background-color:#f7ebe1}a.hl-important:hover{background-color:#ecd0b9}.hl-special{background-color:#f5eeff}a.hl-special:hover{background-color:#d7bbff}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e5e5e5}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'Microsoft Yahei','PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:grey}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}.btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.53846154;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#353535;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn{color:#353535;text-shadow:0 1px 0 #fff;background-color:#f2f2f2;border-color:#bfbfbf}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#353535;background-color:#dedede;border-color:#a1a1a1;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#ccc;background-image:none;border-color:#a6a6a6;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#f2f2f2;border-color:#bfbfbf}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#00aaee;border-color:#00aaee}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#00aaee;border-color:#00aaee;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0358de;background-image:none;border-color:#0358de;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#00aaee;border-color:#00aaee}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#f1a325;border-color:#ed980f}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#df8f0e;border-color:#b4730c;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#bd7a0c;background-image:none;border-color:#bd7a0c;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f1a325;border-color:#ed980f}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#ea644a;border-color:#e75033}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#e64525;border-color:#c63317;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#cf3618;background-image:none;border-color:#cf3618;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#ea644a;border-color:#e75033}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#38b03f;border-color:#329d38}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#2e9134;border-color:#236e27;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#26762a;background-image:none;border-color:#26762a;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#38b03f;border-color:#329d38}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#03b8cf;border-color:#03a2b6}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#0294a7;border-color:#026c7a;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#027584;background-image:none;border-color:#027584;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#03b8cf;border-color:#03a2b6}.btn-link{font-weight:400;color:#0499e2;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d3d88}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#ddd;text-decoration:none}.btn-lg{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-mini,.btn-sm,.btn-xs{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-mini,.btn-xs{padding:1px 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group-vertical,.btn-group-vertical .btn-group-vertical+.btn,.btn-group-vertical .btn-group-vertical+.btn-group-vertical{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .btn-group-vertical,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.btn-group-vertical,.btn-toolbar>.input-group{margin-left:5px}.btn-group-vertical>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle),.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group-vertical>.btn:first-child,.btn-group>.btn:first-child{margin-left:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle),.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child),.btn-group-vertical>.dropdown-toggle:not(:first-child),.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical,.btn-group>.btn-group{float:left}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child>.dropdown-toggle,.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group-vertical>.btn-group-vertical:last-child>.btn:first-child,.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group-vertical .dropdown-toggle:active,.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:2px 8px;padding:1px 5px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-sm>.btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.btn-group-lg>.btn{padding:10px 16px;font-size:17px;line-height:1.25;border-radius:4px}.btn-group-vertical>.btn+.dropdown-toggle,.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group-vertical>.btn-lg+.dropdown-toggle,.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group-vertical.open .dropdown-toggle,.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group-vertical.open .dropdown-toggle.btn-link,.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group,.btn-group-justified>.btn-group-vertical{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn,.btn-group-justified>.btn-group-vertical .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu,.btn-group-justified>.btn-group-vertical .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group-vertical>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group-vertical,.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group-vertical>.btn,.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn+.btn-group-vertical,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group,.btn-group-vertical>.btn-group-vertical+.btn,.btn-group-vertical>.btn-group-vertical+.btn-group-vertical{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group-vertical:not(:first-child):not(:last-child)>.btn,.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group-vertical:first-child:not(:last-child)>.dropdown-toggle,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group-vertical:last-child:not(:first-child)>.btn:first-child,.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#e5e5e5;border-radius:4px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#00aaee;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#38b03f}.progress-bar-info{background-color:#03b8cf}.progress-bar-warning{background-color:#f1a325}.progress-bar-danger{background-color:#ea644a}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.53846154;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e5e5e5}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:75%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:grey;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#666}.label.label-circle{color:grey;background:0 0;border:1px solid grey}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:10px;height:10px;padding:0;line-height:13px;text-indent:-9999em;border-radius:5px}.label-dot:empty{display:inline-block}.label-primary{background-color:#00aaee}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0462f7}.label-primary.label-circle{color:#00aaee;background:0 0;border:1px solid #00aaee}.label-success{background-color:#38b03f}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#2c8931}.label-success.label-circle{color:#38b03f;background:0 0;border:1px solid #38b03f}.label-info{background-color:#03b8cf}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#028b9d}.label-info.label-circle{color:#03b8cf;background:0 0;border:1px solid #03b8cf}.label-warning{background-color:#f1a325}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#d5890e}.label-warning.label-circle{color:#f1a325;background:0 0;border:1px solid #f1a325}.label-danger{background-color:#ea644a}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#e53d1c}.label-danger.label-circle{color:#ea644a;background:0 0;border:1px solid #ea644a}.btn .label,.nav-primary>li>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#0499e2;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:grey}@font-face{font-family:ZenIcon;font-style:normal;font-weight:400;src:url(../fonts/zenicon.eot?v=2.2.0);src:url(../fonts/zenicon.eot?#iefix&v=2.2.0) format('embedded-opentype'),url(../fonts/zenicon.woff?v=2.2.0) format('woff'),url(../fonts/zenicon.ttf?v=2.2.0) format('truetype'),url(../fonts/zenicon.svg#regular?v=2.2.0) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZenIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90:before{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180:before{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270:before{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal:before{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical:before{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon-flip-horizontal:before,.icon-flip-vertical:before,.icon-rotate-180:before,.icon-rotate-270:before,.icon-rotate-90:before{display:inline-block}.icon-resize:before{content:'\e667'}.icon-expand-full:before{content:'\e6a3'}.icon-arrows-alt:before{content:'\e6a3'}.icon-fullscreen:before{content:'\e6a3'}.icon-collapse-full:before{content:'\e682'}.icon-yinyang:before{content:'\e687'}.icon-taiji:before{content:'\e687'}.icon-window:before{content:'\e68e'}.icon-window-alt:before{content:'\e68f'}.icon-carousel:before{content:'\e6b0'}.icon-spinner-snake:before{content:'\e97b'}.icon-spinner-indicator:before{content:'\e97c'}.icon-check-board:before{content:'\e9b8'}.icon-bar-chart:before{content:'\f080'}.icon-bar-chart-o:before{content:'\f080'}.icon-github:before{content:'\f09b'}.icon-dot-circle:before{content:'\f192'}.icon-dot-circle-o:before{content:'\f192'}.icon-cube-alt:before{content:'\f1b2'}.icon-cubes:before{content:'\f1b3'}.icon-file-pdf:before{content:'\f1c1'}.icon-file-word:before{content:'\f1c2'}.icon-file-excel:before{content:'\f1c3'}.icon-file-powerpoint:before{content:'\f1c4'}.icon-file-image:before{content:'\f1c5'}.icon-file-photo:before{content:'\f1c5'}.icon-file-picture:before{content:'\f1c5'}.icon-file-archive:before{content:'\f1c6'}.icon-file-zip:before{content:'\f1c6'}.icon-file-audio:before{content:'\f1c7'}.icon-file-sound:before{content:'\f1c7'}.icon-file-movie:before{content:'\f1c8'}.icon-file-video:before{content:'\f1c8'}.icon-file-code:before{content:'\f1c9'}.icon-circle-o-notch:before{content:'\f1ce'}.icon-qq:before{content:'\f600'}.icon-wechat:before{content:'\f1d7'}.icon-weixin:before{content:'\f1d7'}.icon-history:before{content:'\f1da'}.icon-circle-thin:before{content:'\f1db'}.icon-sliders:before{content:'\f1de'}.icon-newspaper-o:before{content:'\f1ea'}.icon-calculator:before{content:'\f1ec'}.icon-paint-brush:before{content:'\f1fc'}.icon-area-chart:before{content:'\f1fe'}.icon-pie-chart:before{content:'\f200'}.icon-line-chart:before{content:'\f201'}.icon-toggle-off:before{content:'\f204'}.icon-toggle-on:before{content:'\f205'}.icon-diamond:before{content:'\f219'}.icon-venus:before{content:'\f221'}.icon-mars:before{content:'\f222'}.icon-server:before{content:'\f233'}.icon-music:before{content:'\e602'}.icon-search:before{content:'\e603'}.icon-envelope:before{content:'\e604'}.icon-heart:before{content:'\e605'}.icon-star:before{content:'\e606'}.icon-star-empty:before{content:'\e607'}.icon-user:before{content:'\e608'}.icon-film:before{content:'\e609'}.icon-th-large:before{content:'\e60a'}.icon-th:before{content:'\e60b'}.icon-th-list:before{content:'\e60c'}.icon-ok:before{content:'\e60d'}.icon-check:before{content:'\e60d'}.icon-remove:before{content:'\d7'}.icon-times:before{content:'\d7'}.icon-zoom-in:before{content:'\e60f'}.icon-zoom-out:before{content:'\e610'}.icon-off:before{content:'\e611'}.icon-cog:before{content:'\e613'}.icon-trash:before{content:'\e614'}.icon-home:before{content:'\e615'}.icon-file-o:before{content:'\e616'}.icon-file-alt:before{content:'\e616'}.icon-time:before{content:'\e617'}.icon-download-alt:before{content:'\e618'}.icon-download:before{content:'\e619'}.icon-upload:before{content:'\e61a'}.icon-inbox:before{content:'\e61b'}.icon-play-circle:before{content:'\e61c'}.icon-repeat:before{content:'\e61d'}.icon-refresh:before{content:'\e61e'}.icon-list-alt:before{content:'\e61f'}.icon-lock:before{content:'\e620'}.icon-flag:before{content:'\e621'}.icon-headphones:before{content:'\e622'}.icon-volume-off:before{content:'\e623'}.icon-volume-up:before{content:'\e625'}.icon-qrcode:before{content:'\e626'}.icon-barcode:before{content:'\e627'}.icon-tag:before{content:'\e628'}.icon-tags:before{content:'\e629'}.icon-book:before{content:'\e62a'}.icon-bookmark:before{content:'\e62b'}.icon-print:before{content:'\e62c'}.icon-camera:before{content:'\e62d'}.icon-font:before{content:'\e62e'}.icon-bold:before{content:'\e62f'}.icon-italic:before{content:'\f033'}.icon-header:before{content:'\f1dc'}.icon-underline:before{content:'\f0cd'}.icon-strikethrough:before{content:'\f0cc'}.icon-eraser:before{content:'\f12d'}.icon-align-justify:before{content:'\e636'}.icon-list:before{content:'\e637'}.icon-picture:before{content:'\e63b'}.icon-pencil:before{content:'\e63c'}.icon-map-marker:before{content:'\e63d'}.icon-adjust:before{content:'\e63e'}.icon-tint:before{content:'\e63f'}.icon-edit:before{content:'\e640'}.icon-share:before{content:'\e641'}.icon-checked:before{content:'\e642'}.icon-move:before{content:'\e643'}.icon-arrows:before{content:'\e643'}.icon-step-backward:before{content:'\e644'}.icon-fast-backward:before{content:'\e645'}.icon-backward:before{content:'\e646'}.icon-play:before{content:'\e647'}.icon-pause:before{content:'\e648'}.icon-stop:before{content:'\e649'}.icon-forward:before{content:'\e64a'}.icon-fast-forward:before{content:'\e64b'}.icon-step-forward:before{content:'\e64c'}.icon-eject:before{content:'\e64d'}.icon-chevron-left:before{content:'\e64e'}.icon-chevron-right:before{content:'\e64f'}.icon-plus-sign:before{content:'\e650'}.icon-minus-sign:before{content:'\e651'}.icon-remove-sign:before{content:'\e652'}.icon-ok-sign:before{content:'\e653'}.icon-check-circle:before{content:'\e653'}.icon-question-sign:before{content:'\e654'}.icon-info-sign:before{content:'\e655'}.icon-remove-circle:before{content:'\e657'}.icon-ok-circle:before{content:'\e658'}.icon-check-circle-o:before{content:'\e658'}.icon-ban-circle:before{content:'\e659'}.icon-arrow-left:before{content:'\e65a'}.icon-arrow-right:before{content:'\e65b'}.icon-arrow-up:before{content:'\e65c'}.icon-arrow-down:before{content:'\e65d'}.icon-share-alt:before{content:'\e65e'}.icon-resize-full:before{content:'\e65f'}.icon-resize-small:before{content:'\e660'}.icon-plus:before{content:'\e661'}.icon-minus:before{content:'\e662'}.icon-asterisk:before{content:'\e663'}.icon-exclamation-sign:before{content:'\e664'}.icon-gift:before{content:'\e665'}.icon-leaf:before{content:'\e666'}.icon-eye-open:before{content:'\e668'}.icon-eye-close:before{content:'\e669'}.icon-warning-sign:before{content:'\e66a'}.icon-plane:before{content:'\e66b'}.icon-calendar:before{content:'\e66c'}.icon-random:before{content:'\e66d'}.icon-comment:before{content:'\e66e'}.icon-chevron-up:before{content:'\e670'}.icon-chevron-down:before{content:'\e671'}.icon-shopping-cart:before{content:'\e673'}.icon-folder-close:before{content:'\e674'}.icon-folder-open:before{content:'\e675'}.icon-resize-v:before{content:'\e676'}.icon-resize-h:before{content:'\e677'}.icon-bar-chart-alt:before{content:'\e678'}.icon-camera-retro:before{content:'\e679'}.icon-key:before{content:'\e67a'}.icon-cogs:before{content:'\e67b'}.icon-comments:before{content:'\e67c'}.icon-thumbs-o-up:before{content:'\e67d'}.icon-thumbs-o-down:before{content:'\e67e'}.icon-star-half:before{content:'\e67f'}.icon-heart-empty:before{content:'\e680'}.icon-signout:before{content:'\e681'}.icon-pushpin:before{content:'\e683'}.icon-external-link:before{content:'\e684'}.icon-signin:before{content:'\e685'}.icon-trophy:before{content:'\e686'}.icon-upload-alt:before{content:'\e688'}.icon-lemon:before{content:'\e689'}.icon-phone:before{content:'\e68a'}.icon-check-empty:before{content:'\e68b'}.icon-bookmark-empty:before{content:'\e68c'}.icon-phone-sign:before{content:'\e68d'}.icon-credit:before{content:'\e690'}.icon-rss:before{content:'\e691'}.icon-hdd:before{content:'\e692'}.icon-bullhorn:before{content:'\e693'}.icon-bell:before{content:'\e694'}.icon-certificate:before{content:'\e695'}.icon-hand-right:before{content:'\e696'}.icon-hand-left:before{content:'\e697'}.icon-hand-up:before{content:'\e698'}.icon-hand-down:before{content:'\e699'}.icon-circle-arrow-left:before{content:'\e69a'}.icon-circle-arrow-right:before{content:'\e69b'}.icon-circle-arrow-up:before{content:'\e69c'}.icon-circle-arrow-down:before{content:'\e69d'}.icon-globe:before{content:'\e69e'}.icon-wrench:before{content:'\e69f'}.icon-tasks:before{content:'\e6a0'}.icon-filter:before{content:'\e6a1'}.icon-group:before{content:'\e6a4'}.icon-link:before{content:'\e6a5'}.icon-cloud:before{content:'\e6a6'}.icon-beaker:before{content:'\e6a7'}.icon-cut:before{content:'\e6a8'}.icon-copy:before{content:'\e6a9'}.icon-paper-clip:before{content:'\e6aa'}.icon-save:before{content:'\e6ab'}.icon-sign-blank:before{content:'\e6ac'}.icon-bars:before{content:'\e6ad'}.icon-reorder:before{content:'\e6ad'}.icon-list-ul:before{content:'\e6ae'}.icon-list-ol:before{content:'\e6af'}.icon-table:before{content:'\e6b2'}.icon-magic:before{content:'\e6b3'}.icon-caret-down:before{content:'\e6b8'}.icon-caret-up:before{content:'\e6b9'}.icon-caret-left:before{content:'\e6ba'}.icon-caret-right:before{content:'\e6bb'}.icon-columns:before{content:'\e6bc'}.icon-sort:before{content:'\e6bd'}.icon-sort-down:before{content:'\e6be'}.icon-sort-up:before{content:'\e6bf'}.icon-envelope-alt:before{content:'\e6c0'}.icon-undo:before{content:'\e6c1'}.icon-dashboard:before{content:'\e6c3'}.icon-comment-alt:before{content:'\e6c4'}.icon-comments-alt:before{content:'\e6c5'}.icon-bolt:before{content:'\e6c6'}.icon-sitemap:before{content:'\e6c7'}.icon-umbrella:before{content:'\e6c8'}.icon-paste:before{content:'\e6c9'}.icon-lightbulb:before{content:'\e6ca'}.icon-exchange:before{content:'\e6cb'}.icon-cloud-download:before{content:'\e6cc'}.icon-cloud-upload:before{content:'\e6cd'}.icon-bell-alt:before{content:'\e6d1'}.icon-coffee:before{content:'\e6d2'}.icon-file-text-o:before{content:'\e6d4'}.icon-file-text-alt:before{content:'\e6d4'}.icon-building:before{content:'\e6d5'}.icon-double-angle-left:before{content:'\e6dc'}.icon-double-angle-right:before{content:'\e6dd'}.icon-double-angle-up:before{content:'\e6de'}.icon-double-angle-down:before{content:'\e6df'}.icon-angle-left:before{content:'\e6e0'}.icon-angle-right:before{content:'\e6e1'}.icon-angle-up:before{content:'\e6e2'}.icon-angle-down:before{content:'\e6e3'}.icon-desktop:before{content:'\e6e4'}.icon-laptop:before{content:'\e6e5'}.icon-tablet:before{content:'\e6e6'}.icon-mobile:before{content:'\e6e7'}.icon-circle-blank:before{content:'\e6e8'}.icon-quote-left:before{content:'\e6e9'}.icon-quote-right:before{content:'\e6ea'}.icon-spinner:before{content:'\e6eb'}.icon-circle:before{content:'\e6ec'}.icon-reply:before{content:'\e6ed'}.icon-folder-close-alt:before{content:'\e6ef'}.icon-folder-open-alt:before{content:'\e6f0'}.icon-expand-alt:before{content:'\e6f1'}.icon-collapse-alt:before{content:'\e6f2'}.icon-smile:before{content:'\e6f3'}.icon-frown:before{content:'\e6f4'}.icon-meh:before{content:'\e6f5'}.icon-gamepad:before{content:'\e6f6'}.icon-keyboard:before{content:'\e6f7'}.icon-flag-alt:before{content:'\e6f8'}.icon-flag-checkered:before{content:'\e6f9'}.icon-terminal:before{content:'\e6fa'}.icon-code:before{content:'\e6fb'}.icon-reply-all:before{content:'\e6fc'}.icon-star-half-full:before{content:'\e6fd'}.icon-location-arrow:before{content:'\e6fe'}.icon-crop:before{content:'\e6ff'}.icon-code-fork:before{content:'\e700'}.icon-unlink:before{content:'\e701'}.icon-question:before{content:'\e702'}.icon-info:before{content:'\e703'}.icon-shield:before{content:'\e70b'}.icon-calendar-empty:before{content:'\e70c'}.icon-rocket:before{content:'\e70e'}.icon-chevron-sign-left:before{content:'\e70f'}.icon-chevron-sign-right:before{content:'\e710'}.icon-chevron-sign-up:before{content:'\e711'}.icon-chevron-sign-down:before{content:'\e712'}.icon-html5:before{content:'\e713'}.icon-anchor:before{content:'\e714'}.icon-unlock-alt:before{content:'\e715'}.icon-bullseye:before{content:'\e716'}.icon-ellipsis-h:before{content:'\e717'}.icon-ellipsis-v:before{content:'\e718'}.icon-rss-sign:before{content:'\e719'}.icon-play-sign:before{content:'\e71a'}.icon-minus-sign-alt:before{content:'\e71c'}.icon-check-minus:before{content:'\e71d'}.icon-level-up:before{content:'\e71e'}.icon-level-down:before{content:'\e71f'}.icon-check-sign:before{content:'\e720'}.icon-edit-sign:before{content:'\e721'}.icon-external-link-sign:before{content:'\e722'}.icon-share-sign:before{content:'\e723'}.icon-compass:before{content:'\e724'}.icon-collapse:before{content:'\e725'}.icon-collapse-top:before{content:'\e726'}.icon-expand:before{content:'\e727'}.icon-dollar:before{content:'\e728'}.icon-yen:before{content:'\e729'}.icon-file:before{content:'\e72b'}.icon-file-text:before{content:'\e72c'}.icon-sort-by-alphabet:before{content:'\e72d'}.icon-sort-by-alphabet-alt:before{content:'\e72e'}.icon-sort-by-attributes:before{content:'\e72f'}.icon-sort-by-attributes-alt:before{content:'\e730'}.icon-sort-by-order:before{content:'\e731'}.icon-sort-by-order-alt:before{content:'\e732'}.icon-thumbs-up:before{content:'\e733'}.icon-thumbs-down:before{content:'\e734'}.icon-long-arrow-down:before{content:'\e736'}.icon-long-arrow-up:before{content:'\e737'}.icon-long-arrow-left:before{content:'\e738'}.icon-long-arrow-right:before{content:'\e739'}.icon-apple:before{content:'\e73a'}.icon-windows:before{content:'\e73b'}.icon-android:before{content:'\e73c'}.icon-linux:before{content:'\e73d'}.icon-sun:before{content:'\e742'}.icon-moon:before{content:'\e743'}.icon-archive:before{content:'\e744'}.icon-bug:before{content:'\e745'}.icon-alipay:before,.icon-zhifubao:before{content:'\e901'}.icon-alipay-square:before,.icon-zhifubao-square:before{content:'\e900'}.icon-taobao:before{content:'\e902'}.icon-weibo:before{content:'\e746'}.icon-renren:before{content:'\e747'}.icon-chrome:before{content:'\e76c'}.icon-firefox:before{content:'\e76d'}.icon-ie:before{content:'\e76e'}.icon-opera:before{content:'\e76f'}.icon-safari:before{content:'\e770'}.icon-node:before{content:'\e76a'}.icon-layout:before{content:'\e768'}.icon-usecase:before{content:'\e74a'}.icon-stack:before{content:'\e769'}.icon-branch:before{content:'\e74b'}.icon-chat:before{content:'\e74c'}.icon-chat-line:before{content:'\e74f'}.icon-comment-line:before{content:'\e74f'}.icon-chat-dot:before{content:'\e750'}.icon-cube:before{content:'\e751'}.icon-database:before{content:'\f1c0'}.icon-align-left:before{content:'\e633'}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:grey}.form-control::-moz-placeholder{color:grey}.form-control:-ms-input-placeholder{color:grey}.form-control::placeholder{color:grey}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.53846154;color:#222;vertical-align:middle;background-color:#fff;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control:focus{border-color:#0499e2;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(20,92,205,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#e5e5e5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-lg{height:43px;line-height:43px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#f1a325}.has-warning .form-control{border-color:#f1a325;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#d5890e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f7cb85}.has-warning .input-group-addon{color:#f1a325;background-color:#fff0d5;border-color:#f1a325}.has-error .help-block,.has-error>label{color:#ea644a}.has-error .form-control{border-color:#ea644a;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#e53d1c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #f5b2a5}.has-error .input-group-addon{color:#ea644a;background-color:#ffe5e0;border-color:#ea644a}.has-success .help-block,.has-success>label{color:#38b03f}.has-success .form-control{border-color:#38b03f;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2c8931;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #79d57f}.has-success .input-group-addon{color:#38b03f;background-color:#ddf4df;border-color:#38b03f}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#757575}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:17px;color:#ea644a;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:2px 8px;font-size:12px;line-height:1.5;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-top-right-radius:3px;border-bottom-right-radius:3px}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.switch{position:relative}.switch>input{position:absolute;top:0;left:0;display:block;width:100%;height:100%;margin:0;opacity:0}.switch>label{display:block;padding:5px 0 5px 35px;margin:0;font-weight:400;line-height:20px}.switch>label:after,.switch>label:before{position:absolute;top:5px;left:0;display:block;width:30px;height:20px;pointer-events:none;content:' ';border:1px solid #ddd;border-radius:10px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.switch>label:after{top:6px;width:18px;height:18px;background-color:#fff;border-color:#ccc;border-radius:9px;-webkit-box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px;box-shadow:rgba(0,0,0,.05) 0 1px 4px,rgba(0,0,0,.12) 0 1px 2px}.switch>input:checked+label:before{background-color:#00aaee;border-color:#00aaee}.switch>input:checked+label:after{left:11px;border-color:#fff}.switch.text-left>label{padding:5px 35px 5px 0}.switch.text-left>label:after,.switch.text-left>label:before{right:0;left:auto}.switch.text-left>label:after{right:12px}.switch.text-left>input:checked+label:after{right:1px;left:auto}.switch.disabled{pointer-events:none}.switch.disabled>label,.switch>input[disabled]+label{color:#ddd;pointer-events:none}.switch.disabled>label:before,.switch>input[disabled]+label:before{background-color:#fafafa}.switch.disabled>label:after,.switch>input[disabled]+label:after{opacity:.7}.switch.disabled>input:checked+label:before,.switch>input[disabled]:checked+label:before{background-color:#ccc;border-color:#ccc}.switch input:focus+label{color:#00aaee}.switch input:focus+label:before{border-color:#00aaee}.switch-inline{display:inline-block}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}@media (min-width:768px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-button{width:0;height:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-color:transparent;border-style:solid}::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal{background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box}::-webkit-scrollbar-thumb{min-height:28px;padding-top:100;background-color:rgba(0,0,0,.2);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:5px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.4);-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25)}::-webkit-scrollbar-thumb:active{background-color:rgba(0,0,0,.5);-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.35)}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-width:0}::-webkit-scrollbar-track:hover{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}::-webkit-scrollbar-track:active{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.14),inset -1px -1px 0 rgba(0,0,0,.07)}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-button,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:hidden}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-button,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:visible}}table{max-width:100%;background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:grey;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.table>tbody+tbody{border-top:2px solid #ddd}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered td,.table-bordered th{border:1px solid #ddd}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf2f9}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7bc}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ddf4df;border-color:#bae8b6}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#caeecd;border-color:#a8e1a3}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffe5e0;border-color:#ffc6c7}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd0c6;border-color:#ffadad}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff0d5;border-color:#ffdcbc}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7bc;border-color:#ffcea2}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.label-badge{float:right}.list-group-item>.label-badge+.label-badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#353535;text-decoration:none;background-color:#ebf2f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#00aaee;border-color:#00aaee}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{margin-top:0;margin-bottom:5px;color:#333}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-color:#ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-body{padding:15px}.panel>.table{margin-bottom:0}.panel>.panel-body+.table{border-top:1px solid #ddd}.panel-heading{padding:8px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-title{margin-top:0;margin-bottom:0;font-size:15px}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-primary{border-color:#00aaee}.panel-primary>.panel-heading{color:#fff;background-color:#00aaee;border-color:#00aaee}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#00aaee}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#00aaee}.panel-success{border-color:#bae8b6}.panel-success>.panel-heading{color:#38b03f;background-color:#ddf4df;border-color:#bae8b6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#bae8b6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bae8b6}.panel-warning{border-color:#ffdcbc}.panel-warning>.panel-heading{color:#f1a325;background-color:#fff0d5;border-color:#ffdcbc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffdcbc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffdcbc}.panel-danger{border-color:#ffc6c7}.panel-danger>.panel-heading{color:#ea644a;background-color:#ffe5e0;border-color:#ffc6c7}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ffc6c7}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ffc6c7}.panel-info{border-color:#a2e4de}.panel-info>.panel-heading{color:#03b8cf;background-color:#ddf3f5;border-color:#a2e4de}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#a2e4de}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#a2e4de}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.alert{padding:15px;margin-bottom:20px;color:#282828;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#161616}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#282828;background-color:#ebf2f9}.alert-primary hr{border-top-color:#d0e0f1}.alert-primary .alert-link{color:#161616}.alert-success{color:#329d38;background-color:#ddf4df}.alert-success hr{border-top-color:#bae8b6}.alert-success .alert-link{color:#29822e}.alert-info{color:#03a2b6;background-color:#ddf3f5}.alert-info hr{border-top-color:#a2e4de}.alert-info .alert-link{color:#028293}.alert-warning{color:#ed980f;background-color:#fff0d5}.alert-warning hr{border-top-color:#ffdcbc}.alert-warning .alert-link{color:#cc830d}.alert-danger{color:#e75033;background-color:#ffe5e0}.alert-danger hr{border-top-color:#ffc6c7}.alert-danger .alert-link{color:#dd391a}.alert-inverse{color:#fff;background-color:#353535;border-color:#353535}.alert-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#00aaee;border-color:#00aaee}.alert-primary-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#38b03f;border-color:#38b03f}.alert-success-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#03b8cf;border-color:#03b8cf}.alert-info-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#f1a325;border-color:#f1a325}.alert-warning-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#ea644a;border-color:#ea644a}.alert-danger-inverse hr{border-top-color:#ddd;border-top-color:rgba(221,221,221,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#222;text-align:center;background-color:#e5e5e5;border:1px solid #ccc;border-radius:4px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon.fix-padding,.input-group-addon:empty{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group-vertical>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group-vertical:not(:last-child)>.btn,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group-vertical:not(:first-child)>.btn,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group-vertical>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group,.input-group-btn:first-child>.btn-group-vertical{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group,.input-group-btn:last-child>.btn-group-vertical{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:43px;padding:10px 16px;font-size:17px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:43px;line-height:43px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:17px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#ea644a;background-color:#f9f2f4;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d7d7d7;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.53846154;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#e5e5e5}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#00aaee;border-color:#00aaee}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#ddd;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:17px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:grey}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#353535}.nav>li>a:focus,.nav>li>a:hover{color:#0d3d88;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#ddd}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#ddd;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#0499e2}.nav>li>a>img{max-width:none}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#00aaee}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #ddd}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#00aaee;border-color:#00aaee}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #e5e5e5}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#00aaee;border-bottom-color:#00aaee}.nav-secondary>li.nav-heading{border-bottom:2px solid #e5e5e5}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #e5e5e5;box-shadow:inset 2px 0 0 #e5e5e5}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #00aaee;box-shadow:inset 2px 0 0 #00aaee}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #ddd}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.53846154;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#e5e5e5 #e5e5e5 #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:grey;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #ddd;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #ddd;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:17px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#333}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333}.navbar-default .navbar-nav>li>a{color:#333}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:grey}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#222;background-color:#e5e5e5}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#333}.navbar-default .navbar-link:hover{color:#222}.navbar-default .btn-link{color:#333}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#222}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#0499e2;border-color:#00aaee}.navbar-inverse .navbar-brand{color:#ddd}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#ddd}.navbar-inverse .navbar-nav>li>a{color:#ddd}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#00aaee}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#1251b6}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#00aaee}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#00aaee}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#00aaee}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#00aaee}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#ddd}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#1868e8}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#00aaee}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#ddd}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:transform .3s ease-out,-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-loading .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.54px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.53846154}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn,.modal-footer .btn-group-vertical .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#353535;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#353535}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#353535}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#353535}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#353535}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#353535}.tooltip-primary .tooltip-inner{background-color:#00aaee}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#00aaee}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#00aaee}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#00aaee}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#00aaee}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#00aaee}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#00aaee}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#00aaee}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#00aaee}.tooltip-success .tooltip-inner{background-color:#38b03f}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#38b03f}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#38b03f}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#38b03f}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#38b03f}.tooltip-info .tooltip-inner{background-color:#03b8cf}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#03b8cf}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#03b8cf}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#03b8cf}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#03b8cf}.tooltip-warning .tooltip-inner{background-color:#f1a325}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#f1a325}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#f1a325}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#f1a325}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#f1a325}.tooltip-danger .tooltip-inner{background-color:#ea644a}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#ea644a}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#ea644a}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#ea644a}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ea644a}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ea644a}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#00aaee}.popover-primary .popover-title{color:#fff;background-color:#00aaee}.popover-primary.popover.top .arrow{border-top-color:#00aaee}.popover-primary.popover.right .arrow{border-right-color:#00aaee}.popover-primary.popover.left .arrow{border-left-color:#00aaee}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#00aaee}.popover-success{border-color:#38b03f}.popover-success .popover-title{color:#fff;background-color:#38b03f}.popover-success.popover.top .arrow{border-top-color:#38b03f}.popover-success.popover.right .arrow{border-right-color:#38b03f}.popover-success.popover.left .arrow{border-left-color:#38b03f}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#38b03f}.popover-info{border-color:#03b8cf}.popover-info .popover-title{color:#fff;background-color:#03b8cf}.popover-info.popover.top .arrow{border-top-color:#03b8cf}.popover-info.popover.right .arrow{border-right-color:#03b8cf}.popover-info.popover.left .arrow{border-left-color:#03b8cf}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#03b8cf}.popover-warning{border-color:#f1a325}.popover-warning .popover-title{color:#fff;background-color:#f1a325}.popover-warning.popover.top .arrow{border-top-color:#f1a325}.popover-warning.popover.right .arrow{border-right-color:#f1a325}.popover-warning.popover.left .arrow{border-left-color:#f1a325}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#f1a325}.popover-danger{border-color:#ea644a}.popover-danger .popover-title{color:#fff;background-color:#ea644a}.popover-danger.popover.top .arrow{border-top-color:#ea644a}.popover-danger.popover.right .arrow{border-right-color:#ea644a}.popover-danger.popover.left .arrow{border-left-color:#ea644a}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#ea644a}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #cbcbcb;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.53846154;color:#353535;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#00aaee}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#00aaee;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#ddd}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.53846154;color:grey}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:160px}.dropdown-submenu>.dropdown-menu.pull-left{left:-100%}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#00aaee}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:10%;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=40);outline:0;opacity:.4}.carousel-control>.icon{font-size:20px}.carousel-control.left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.3)),to(rgba(0,0,0,.0001)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.3) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4d000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.3)));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.3) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#4d000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=100);outline:0;opacity:1}.carousel-control .icon-chevron-left,.carousel-control .icon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .icon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .icon-next,.carousel-control .icon-prev{top:40%;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:80px}.carousel-control .icon-prev{left:30%}.carousel-control .icon-next{right:25%}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}[data-toggle=lightbox]{cursor:pointer}.modal-lightbox .close{position:absolute;top:0;right:0;z-index:10;display:block;width:40px;height:40px;font-size:14px;color:#fff;text-align:center;background-color:#353535;background-color:rgba(53,53,53,.2);filter:alpha(opacity=80);opacity:.8;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),background-color .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller{position:absolute;top:0;display:none;height:100%;padding:0;line-height:100%;color:#fff;cursor:pointer;background-color:transparent;border:none;outline:0;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller.show{display:block}.modal-lightbox .controller>.icon{display:inline-block;width:60px;height:50px;line-height:50px;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:transparent;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .controller>.icon:before{font-size:20px}.modal-lightbox .controller.prev{left:0}.modal-lightbox .controller.next{right:0}.modal-lightbox .modal-dialog{position:relative;max-width:100%;max-height:100%;margin-bottom:0;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox .modal-dialog:focus .close,.modal-lightbox .modal-dialog:hover .close{background-color:rgba(53,53,53,.5);filter:alpha(opacity=100);opacity:1}.modal-lightbox .modal-dialog:focus .close:hover,.modal-lightbox .modal-dialog:hover .close:hover{background-color:rgba(53,53,53,.9)}.modal-lightbox .modal-dialog:focus .controller>.icon,.modal-lightbox .modal-dialog:hover .controller>.icon{text-shadow:none;background-color:#353535;background-color:rgba(53,53,53,.5)}.modal-lightbox .modal-dialog:focus .controller:hover>.icon,.modal-lightbox .modal-dialog:hover .controller:hover>.icon{background-color:#353535;background-color:rgba(53,53,53,.9)}.modal-lightbox .caption{display:none}.modal-lightbox.lightbox-with-caption .caption{position:absolute;bottom:0;display:block;width:100%;padding:10px 15px;color:#fff;text-align:center;text-shadow:1px 1px 0 rgba(0,0,0,.3);background:rgba(0,0,0,.15);opacity:.5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.modal-lightbox.lightbox-with-caption .modal-dialog:hover .caption{background:rgba(0,0,0,.6);opacity:1}.lightbox-img{display:block;width:inherit;max-width:100%;height:auto;padding:0;margin:0 auto;cursor:pointer;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#353535;background-color:rgba(0,0,0,.8);border-radius:20px}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content>[class^=icon-]{display:inline-block;margin-right:8px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none;-webkit-transition:top .2s cubic-bezier(.175,.885,.32,1);-o-transition:top .2s cubic-bezier(.175,.885,.32,1);transition:top .2s cubic-bezier(.175,.885,.32,1)}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-primary{background-color:#00aaee}.messager-success{background-color:#38b03f}.messager-info{background-color:#03b8cf}.messager-warning{background-color:#f1a325}.messager-danger{background-color:#ea644a}.messager-important{background-color:#bd7b46}.messager-special{background-color:#8666b8}.menu>.btn{display:block;width:100%;padding-right:0;padding-left:0;margin-bottom:5px}.menu>.btn+.nav{margin-top:15px}.menu>.nav>li{float:none}.menu>.nav>li.nav-parent>a>.nav-parent-fold-icon{position:absolute;top:11px;right:10px;display:block;filter:alpha(opacity=45);opacity:.45;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}.menu>.nav>li.nav-parent>a:hover>.nav-parent-fold-icon{filter:alpha(opacity=75);opacity:.75}.menu>.nav>li>.nav{display:none;background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{padding-left:35px;margin-top:-1px;border:1px solid #ddd}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#00aaee;border-color:#00aaee}.menu>.nav>li>.nav>li.active>a [class*=icon-],.menu>.nav>li>.nav>li.active>a:focus [class*=icon-],.menu>.nav>li>.nav>li.active>a:hover [class*=icon-]{color:#fff}.menu>.nav>li>.nav>li>a>[class*=icon-],.menu>.nav>li>a>[class*=icon-]{display:inline-block;margin-right:5px;color:grey}.menu>.nav>li+li{margin-top:-1px;margin-left:0}.menu>.nav>li,.menu>.nav>li>a{margin-left:0}.menu>.nav>li:first-child{margin-top:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.active>a [class*=icon-],.menu>.nav>li.active>a:focus [class*=icon-],.menu>.nav>li.active>a:hover [class*=icon-]{color:#fff}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#353535;background-color:#fff;border-color:#ddd}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#353535}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.show>.nav{display:block}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #ddd}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#686868;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d7d7d7}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.78571429}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img,.article>.content p>img{margin-right:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px;line-height:1.53846154;vertical-align:top;border-bottom:1px solid #ddd}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:#f1f1f1;border-bottom:1px solid #ddd}.article-content p{margin-bottom:0}.article-content table{width:100%}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #ddd}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d7d7d7}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}.comments>header{border-bottom:1px solid #e5e5e5}.comments>header>.alert{padding:7.5px 15px;margin-bottom:-10px}.comments>header h1,.comments>header h2,.comments>header h3{padding:10px 0;margin:10px 0}.comments>footer{padding-top:10px}.comments>footer>.reply-form>.avatar{display:block;float:left;width:40px;height:40px;margin-top:10px}.comments>footer>.reply-form>.avatar+.form{padding-left:50px}.comment{padding:10px 0;border-bottom:1px solid #e5e5e5}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment:after,.comment:before{display:table;content:" "}.comment:after{clear:both}.comment>.avatar,.comment>.content{display:block}.comment>.avatar{float:left;width:40px;height:40px;margin-top:10px}.comment>.avatar+.content{padding-left:50px}.comment>.content>.text{margin-top:5px}.comment>.content>.actions{margin-top:4px}.comment>.content>.actions>a{display:inline-block;color:grey}.comment>.content>.actions>a+a{margin-left:5px}.comment:hover>.content>.actions>a{color:#0499e2}.comment>.comments-list{padding-top:10px;padding-bottom:0;padding-left:30px;margin-left:20px;border-left:1px dashed #e5e5e5}.comment>.comments-list>.comment{border:none;border-top:1px solid #e5e5e5}.comment>.comments-list>.comment:last-child{padding-bottom:0}.list{padding:0 15px}.list>header{padding-bottom:10px;border-bottom:1px solid #e5e5e5}.items .item{padding:10px 0;border-bottom:1px solid #e5e5e5;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.items .item-heading h1,.items .item-heading h2,.items .item-heading h3,.items .item-heading h4,.items .item-heading h5,.items .item-heading>h6{margin-top:5px}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content:after,.items .item-content:before{display:table;content:" "}.items .item-content:after{clear:both}.items .item-content>.media{max-width:100%;margin:5px 0}.items .item-content>.media.pull-left{max-width:150px;margin:0;margin-right:8px}.items .item-content>.media.pull-right{max-width:150px;margin:0;margin-left:8px}.items .item-footer{padding-top:5px}.items .item-footer>a{color:grey}.items-hover .item:hover{background-color:#f5f5f5}.list-condensed{padding:0}.list-condensed>.items>.item,.list-condensed>footer,.list-condensed>header{padding-right:15px;padding-left:15px}.cards{padding-top:10px;padding-bottom:10px;margin-right:-10px;margin-left:-10px}.card{position:relative;display:block;padding:0;margin-bottom:20px;overflow:hidden;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>img{display:block;max-width:100%;height:auto;filter:alpha(opacity=100);opacity:1}.card>.media-wrapper{display:block;width:100%;overflow:hidden;text-align:center;background-color:#f1f1f1;filter:alpha(opacity=100);opacity:1;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.card>.media-wrapper>img{max-width:100%;vertical-align:middle}.card .card-heading{display:block;padding:10px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card .card-actions,.card .card-content{padding:0 10px 10px 10px;overflow:hidden;text-overflow:ellipsis}.card .card-actions .btn+.pull-right{padding:6px 0;line-height:20px}.card:hover{text-decoration:none;-webkit-box-shadow:0 1px 5px rgba(0,0,0,.175);box-shadow:0 1px 5px rgba(0,0,0,.175)}.card:hover>.media-wrapper,.card:hover>img{background-color:#e5e5e5;filter:alpha(opacity=90);opacity:.9}.card:hover>.card-reveal{top:0}.cards-borderless .card{border:none;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.cards-borderless .card>.media-wrapper,.cards-borderless .card>img{overflow:hidden;border-radius:4px}.cards-borderless .card>.card-actions,.cards-borderless .card>.card-content,.cards-borderless .card>.card-heading{padding-right:0;padding-left:0}.card>.caption{position:absolute;top:-100%;left:0;display:block;width:100%;padding:5px 10px;overflow:hidden;color:#fff;text-align:center;background-color:#666;background-color:rgba(0,0,0,.7);filter:alpha(opacity=0);opacity:0;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card:hover>.caption{top:0;filter:alpha(opacity=100);opacity:1}.cards-condensed{padding:0;border:1px solid #ddd;border-top:0;border-left:0}.cards-condensed>[class*=" col-"],.cards-condensed>[class^=col-]{padding:0}.cards-condensed .card{padding:10px;margin:0;border-right:0;border-bottom:0;border-radius:0;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.015);box-shadow:0 1px 2px rgba(0,0,0,.015)}.card>.card-reveal{position:absolute;top:100%;left:0;width:100%;height:100%;background-color:#f1f1f1;-webkit-transition:all .8s cubic-bezier(.175,.885,.32,1);-o-transition:all .8s cubic-bezier(.175,.885,.32,1);transition:all .8s cubic-bezier(.175,.885,.32,1)}.card>.card-reveal>.card-heading{padding:20px 10px}.card:hover>.card-reveal{top:0}.tree{padding-left:0}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 20px;list-style:none}.tree li:before{position:absolute;top:10px;left:8px;display:block;width:3px;height:3px;content:' ';background-color:#999}.tree li.has-list:before{display:none}.tree li>.list-toggle{position:absolute;top:-1px;left:0;z-index:10;width:20px;line-height:24px;color:grey;text-align:center;cursor:pointer}.tree li>.list-toggle:before{content:'\e6f1'}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0d3d88}.tree li.open>ul{display:block}.tree li.open>.list-toggle:before{content:'\e6f2'}.tree-actions{display:inline-block;margin-left:5px;opacity:0;-webkit-transition:opacity .1s;-o-transition:opacity .1s;transition:opacity .1s}.tree-action{display:inline-block;margin-left:5px;color:grey}.tree-action:active,.tree-action:hover{text-decoration:none}.tree li:hover>.tree-actions,.tree-item-wrapper:hover>.tree-actions{opacity:1}.tree-drag-holder{background-color:#ebf2f9;opacity:.4}.tree .sort-handler{cursor:move}.tree-animate ul{opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1),transform .2s cubic-bezier(.175,.885,.32,1),-webkit-transform .2s cubic-bezier(.175,.885,.32,1),-o-transform .2s cubic-bezier(.175,.885,.32,1);-webkit-transform:scale(1,.5);-ms-transform:scale(1,.5);-o-transform:scale(1,.5);transform:scale(1,.5)}.tree-animate li.open.in>ul{opacity:1;-webkit-transform:scale(1,1);-ms-transform:scale(1,1);-o-transform:scale(1,1);transform:scale(1,1)}.tree-animate.tree-lines li.has-list.open>ul:after{top:-5px;bottom:12px;left:-11px}.tree-lines ul>li:after{position:absolute;top:11px;left:-10px;z-index:1;display:block;width:22px;content:' ';border-top:1px dotted #999}.tree-lines ul>li.has-list:before,.tree-lines ul>li:before{position:absolute;top:-12px;bottom:13px;left:-11px;display:block;width:auto;height:auto;content:' ';background:0 0;border:none;border-left:1px dotted #999}.tree-lines ul>li:last-child:before{bottom:auto;height:23px}.tree-lines ul>li:first-child:before{top:-7px}.tree-lines ul>li.tree-single-item:before{height:19px}.tree-lines ul>li.has-list:after{width:14px}.tree-lines ul>li.drag-shadow:after{display:none}.tree-folders li>.list-toggle:before{content:'\e6ef'}.tree-folders li.open>.list-toggle:before{content:'\e6f0'}.tree-folders.tree-lines ul>li:first-child:before{top:-6px}.tree-folders.tree-lines li.has-list.open>ul:after{top:16px}.tree-folders ul>li.has-list:after{width:13px}.tree-folders ul>li.has-list.open:after{width:15px}.tree-chevrons li>.list-toggle:before{content:'\e710'}.tree-chevrons li.open>.list-toggle:before{content:'\e712'}.tree-chevrons li:before{top:6px;left:4px;width:10px;height:10px;background-color:#ddd;border-radius:5px}.tree-chevrons ul>li:after{width:13px}.tree-angles li>.list-toggle:before{content:'\e6e1'}.tree-angles li.open>.list-toggle:before{content:'\e6e3'}.tree-angles ul>li.has-list:after{width:15px}.tree-menu{overflow:hidden;border:1px solid #ddd;border-radius:4px}.tree-menu li{padding:0}.tree-menu li:before{display:none}.tree-menu li>a{display:block;padding:8px;margin-bottom:-1px;color:#353535}.tree-menu li>a>.icon{display:inline-block;width:20px;color:inherit;text-align:left;opacity:.6}.tree-menu li>a:active,.tree-menu li>a:focus,.tree-menu li>a:hover{color:#0d3d88;text-decoration:none;background-color:rgba(0,0,0,.04)}.tree-menu li>a:active>.icon,.tree-menu li>a:focus>.icon,.tree-menu li>a:hover>.icon{opacity:.9}.tree-menu li .list-toggle{top:6px;right:4px;left:auto;width:24px;height:24px;filter:alpha(opacity=45);opacity:.45;-webkit-transition:all .3s;-o-transition:all .3s;transition:all .3s}.tree-menu li .list-toggle:before{content:'\e64f'}.tree-menu li.open>.list-toggle{filter:alpha(opacity=75);opacity:.75;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree-menu li.open>.list-toggle:before{content:'\e64f'}.tree-menu li>ul{background-color:rgba(0,0,0,.04)}.tree-menu li li a{padding-left:28px;border-top-color:transparent;border-bottom-color:transparent}.tree-menu li li li a{padding-left:48px}.tree-menu li li li li a{padding-left:68px}.tree-menu li.active>a{color:#fff;background-color:#00aaee;border-color:#00aaee}.tree-menu li.active>.list-toggle{color:#fff}.tree-menu>li>a{border:1px solid transparent;border-bottom-color:#ddd}.tree-menu>li.open+li>a{border-top-color:#ddd} \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfontd41d.eot" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfontd41d.eot" new file mode 100755 index 0000000..33b2bb8 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfontd41d.eot" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.eot" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.eot" new file mode 100755 index 0000000..33b2bb8 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.eot" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.svg" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.svg" new file mode 100755 index 0000000..1ee89d4 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.svg" @@ -0,0 +1,565 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.ttf" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.ttf" new file mode 100755 index 0000000..ed9372f Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.ttf" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff" new file mode 100755 index 0000000..8b280b9 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff2" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff2" new file mode 100755 index 0000000..3311d58 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/fontawesome-webfonte0a5.woff2" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.eot" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.eot" new file mode 100755 index 0000000..b93a495 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.eot" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.svg" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.svg" new file mode 100755 index 0000000..94fb549 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.svg" @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.ttf" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.ttf" new file mode 100755 index 0000000..1413fc6 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.ttf" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff" new file mode 100755 index 0000000..9e61285 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff2" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff2" new file mode 100755 index 0000000..64539b5 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regular.woff2" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regulard41d.eot" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regulard41d.eot" new file mode 100755 index 0000000..b93a495 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/glyphicons-halflings-regulard41d.eot" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.eot" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.eot" new file mode 100755 index 0000000..8e565a3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.eot" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.svg" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.svg" new file mode 100755 index 0000000..d8a3443 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.svg" @@ -0,0 +1,369 @@ + + + + + + +{ + "fontFamily": "ZenIcon", + "majorVersion": 2, + "minorVersion": 4, + "designerURL": "", + "fontURL": "https://zui.sexy/#control-icons", + "designer": "", + "license": "", + "licenseURL": "", + "description": "base on fontawesome\nFont generated by IcoMoon.", + "version": "Version 2.4", + "fontId": "ZenIcon", + "psName": "ZenIcon", + "subFamily": "Regular", + "fullName": "ZenIcon" +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.ttf" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.ttf" new file mode 100755 index 0000000..e87eca3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.ttf" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.woff" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.woff" new file mode 100755 index 0000000..f41e4dd Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/fonts/zenicon.woff" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/bird.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/bird.png" new file mode 100755 index 0000000..7537ee8 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/bird.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/default-avatar.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/default-avatar.png" new file mode 100755 index 0000000..8a96b4e Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/default-avatar.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/empty_album.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/empty_album.png" new file mode 100755 index 0000000..1676be3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/empty_album.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/essence.gif" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/essence.gif" new file mode 100755 index 0000000..68d6233 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/essence.gif" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/h_top.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/h_top.png" new file mode 100755 index 0000000..d082f58 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/h_top.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/icoAdd.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/icoAdd.png" new file mode 100755 index 0000000..7e80cb3 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/icoAdd.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/l_07.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/l_07.png" new file mode 100755 index 0000000..435b12d Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/l_07.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lock_album.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lock_album.png" new file mode 100755 index 0000000..cc36879 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lock_album.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/locked.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/locked.png" new file mode 100755 index 0000000..c831c1f Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/locked.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/loginbg.jpg" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/loginbg.jpg" new file mode 100755 index 0000000..0956804 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/loginbg.jpg" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/logo.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/logo.png" new file mode 100755 index 0000000..d7aff36 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/logo.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lxinetlogo.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lxinetlogo.png" new file mode 100755 index 0000000..f3a49d6 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/lxinetlogo.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/member_banner.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/member_banner.png" new file mode 100755 index 0000000..f864ba9 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/member_banner.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/nopic.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/nopic.png" new file mode 100755 index 0000000..b3893ef Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/nopic.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/san.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/san.png" new file mode 100755 index 0000000..b22e32c Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/san.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/supertop.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/supertop.png" new file mode 100755 index 0000000..4883f70 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/supertop.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/top.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/top.png" new file mode 100755 index 0000000..b39ce2c Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/top.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_bg.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_bg.png" new file mode 100755 index 0000000..73d102d Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_bg.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_icons.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_icons.png" new file mode 100755 index 0000000..12e4700 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_icons.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_image.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_image.png" new file mode 100755 index 0000000..19699f6 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_image.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_progress.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_progress.png" new file mode 100755 index 0000000..717c486 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_progress.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_success.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_success.png" new file mode 100755 index 0000000..94f968d Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/upload_success.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/user.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/user.png" new file mode 100755 index 0000000..7f77fd0 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/user.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun0.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun0.png" new file mode 100755 index 0000000..f1f6541 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun0.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun1.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun1.png" new file mode 100755 index 0000000..08ce1fe Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun1.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun2.png" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun2.png" new file mode 100755 index 0000000..5077bc4 Binary files /dev/null and "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/images/yun2.png" differ diff --git "a/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/js/bootstrap.js" "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/js/bootstrap.js" new file mode 100755 index 0000000..8dff365 --- /dev/null +++ "b/\343\200\22003\343\200\221XSS \346\274\217\346\264\236\345\216\237\347\220\206\344\270\216\345\256\236\351\231\205\346\241\210\344\276\213\344\273\213\347\273\215/jeesns-v1.3/jeesns-web/src/main/webapp/res/common/js/bootstrap.js" @@ -0,0 +1,2276 @@ +/*! + * Bootstrap v3.3.0 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.0 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.0 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.0' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.0 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.0' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state = state + 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked') && this.$element.hasClass('active')) changed = false + else $parent.find('.active').removeClass('active') + } + if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + } + + if (changed) this.$element.toggleClass('active') + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + Plugin.call($btn, 'toggle') + e.preventDefault() + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', e.type == 'focus') + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.0 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = + this.sliding = + this.interval = + this.$active = + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.0' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var delta = direction == 'prev' ? -1 : 1 + var activeIndex = this.getItemIndex(active) + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var fallback = type == 'next' ? 'first' : 'last' + var that = this + + if (!$next.length) { + if (!this.options.wrap) return + $next = this.$element.find('.item')[fallback]() + } + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.0 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.0' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true, + trigger: '[data-toggle="collapse"]' + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && option == 'show') options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.0 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.0' + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $('