diff --git a/src/main/java/com/lxyer/config/DbMap.java b/src/main/java/com/lxyer/config/DbMap.java index 0e457a4..16a88cb 100644 --- a/src/main/java/com/lxyer/config/DbMap.java +++ b/src/main/java/com/lxyer/config/DbMap.java @@ -27,6 +27,7 @@ public class DbMap { // Composite Primary Key order: tid,cate,attr arp.addMapping("dyna_attr", "tid,cate,attr", DynaAttr.class); arp.addMapping("user", "userId", User.class); + arp.addMapping("user_pwd", "userId", UserPwd.class); } public static void addSqlTemplate(ActiveRecordPlugin arp) { diff --git a/src/main/java/com/lxyer/config/FlyConfig.java b/src/main/java/com/lxyer/config/FlyConfig.java index 3cca61c..4447b93 100644 --- a/src/main/java/com/lxyer/config/FlyConfig.java +++ b/src/main/java/com/lxyer/config/FlyConfig.java @@ -1,6 +1,9 @@ package com.lxyer.config; +import com.jfinal.aop.Interceptor; +import com.jfinal.aop.Invocation; import com.jfinal.config.*; +import com.jfinal.core.Controller; import com.jfinal.kit.PathKit; import com.jfinal.kit.PropKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; @@ -57,7 +60,14 @@ public class FlyConfig extends JFinalConfig { @Override public void configInterceptor(Interceptors me) { - me.add(new LoginInterceptor()); + me.add(new Interceptor() { + @Override + public void intercept(Invocation inv) { + Controller controller = inv.getController(); + controller.setAttr("mine", controller.getSessionAttr("user")); + inv.invoke(); + } + }); } @Override diff --git a/src/main/java/com/lxyer/config/LxyKit.java b/src/main/java/com/lxyer/config/LxyKit.java index e01a392..87e471a 100644 --- a/src/main/java/com/lxyer/config/LxyKit.java +++ b/src/main/java/com/lxyer/config/LxyKit.java @@ -1,5 +1,9 @@ package com.lxyer.config; +import com.sun.org.apache.xerces.internal.impl.dv.util.HexBin; + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; /** @@ -30,4 +34,20 @@ public final class LxyKit { return new SimpleDateFormat("yyyy-MM-dd").format(time); } + + public static String md5IfNeed(String password){ + if (password == null || password.isEmpty()) return ""; + if (password.length() == 32) return password; + MessageDigest md5 = null; + try { + md5 = MessageDigest.getInstance("MD5"); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + byte[] bytes = password.trim().getBytes(); + bytes = md5.digest(bytes); + + return HexBin.encode(bytes); + } } diff --git a/src/main/java/com/lxyer/config/MyException.java b/src/main/java/com/lxyer/config/MyException.java new file mode 100644 index 0000000..c6d8e10 --- /dev/null +++ b/src/main/java/com/lxyer/config/MyException.java @@ -0,0 +1,26 @@ +package com.lxyer.config; + +/** + * Created by JUECHENG at 2018/1/7 23:45. + */ +public class MyException extends RuntimeException { + public MyException() { + super(); + } + + public MyException(String message) { + super(message); + } + + public MyException(String message, Throwable cause) { + super(message, cause); + } + + public MyException(Throwable cause) { + super(cause); + } + + protected MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + } +} diff --git a/src/main/java/com/lxyer/config/handler/UrlHandler.java b/src/main/java/com/lxyer/config/handler/UrlHandler.java index 0521175..649734a 100644 --- a/src/main/java/com/lxyer/config/handler/UrlHandler.java +++ b/src/main/java/com/lxyer/config/handler/UrlHandler.java @@ -12,6 +12,8 @@ public class UrlHandler extends Handler { @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) { + if (target.endsWith(".html")) target = target.replace(".html", ""); + next.handle(target, request, response, isHandled); } } diff --git a/src/main/java/com/lxyer/config/interceptor/LoginInterceptor.java b/src/main/java/com/lxyer/config/interceptor/LoginInterceptor.java index 1948119..0582472 100644 --- a/src/main/java/com/lxyer/config/interceptor/LoginInterceptor.java +++ b/src/main/java/com/lxyer/config/interceptor/LoginInterceptor.java @@ -2,6 +2,11 @@ package com.lxyer.config.interceptor; import com.jfinal.aop.Interceptor; import com.jfinal.aop.Invocation; +import com.jfinal.core.Controller; +import com.lxyer.model.User; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** * Created by JUECHENG at 2018/1/7 11:22. @@ -9,6 +14,20 @@ import com.jfinal.aop.Invocation; public class LoginInterceptor implements Interceptor { @Override public void intercept(Invocation inv) { - inv.invoke(); + + Controller controller = inv.getController(); + HttpServletRequest request = controller.getRequest(); + HttpServletResponse response = controller.getResponse(); + + User user = controller.getSessionAttr("user"); + if (user == null){ + if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))){ + + }else { + controller.render("/user/login.html"); + } + }else { + inv.invoke(); + } } } diff --git a/src/main/java/com/lxyer/config/route/SiteRoute.java b/src/main/java/com/lxyer/config/route/SiteRoute.java index 00c26f1..88ed87c 100644 --- a/src/main/java/com/lxyer/config/route/SiteRoute.java +++ b/src/main/java/com/lxyer/config/route/SiteRoute.java @@ -2,6 +2,7 @@ package com.lxyer.config.route; import com.jfinal.config.Routes; import com.lxyer.controller.HomeController; +import com.lxyer.controller.JieController; import com.lxyer.controller.UserController; /** @@ -14,5 +15,6 @@ public class SiteRoute extends Routes { add("/", HomeController.class); add("/user", UserController.class); + add("/jie", JieController.class); } } diff --git a/src/main/java/com/lxyer/controller/ContentController.java b/src/main/java/com/lxyer/controller/ContentController.java deleted file mode 100644 index cb0d88b..0000000 --- a/src/main/java/com/lxyer/controller/ContentController.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.lxyer.controller; - -/** - * Created by JUECHENG at 2018/1/7 16:48. - */ -public class ContentController extends IController{ - - -} diff --git a/src/main/java/com/lxyer/controller/HomeController.java b/src/main/java/com/lxyer/controller/HomeController.java index 53b0bba..c7cd26d 100644 --- a/src/main/java/com/lxyer/controller/HomeController.java +++ b/src/main/java/com/lxyer/controller/HomeController.java @@ -58,25 +58,5 @@ public class HomeController extends IController { render("jie/index.html"); } - /** - * 帖子详情 - */ - public void jie(){ - int contentId = getParaToInt(0); - - //ContentInfo content = contentService.contentInfo(sessionid, contentid); - //Sheet comments = commentService.commentQuery(request.getSessionid(false) ,contentid, new Flipper().limit(30)); - - Record content = Content.dao.findFirst(Kv.by("contentId", contentId)); - - //热议 - List hotReply = Content.dao.findPage(1, 8, Kv.by("order", "replyNum DESC")).getList(); - - setAttr("bean", content); - setAttr("hotReply", hotReply); - - render("jie/detail.html"); - } - } diff --git a/src/main/java/com/lxyer/controller/IController.java b/src/main/java/com/lxyer/controller/IController.java index 82cfeca..9d25217 100644 --- a/src/main/java/com/lxyer/controller/IController.java +++ b/src/main/java/com/lxyer/controller/IController.java @@ -6,6 +6,7 @@ import com.jfinal.plugin.activerecord.*; import com.jfinal.plugin.redis.Cache; import com.jfinal.plugin.redis.Redis; import com.lxyer.config.E; +import com.lxyer.model.User; import java.util.ArrayList; import java.util.HashMap; @@ -19,6 +20,22 @@ public class IController extends Controller { public static final Cache cache = Redis.use(); + public void index(){ + String para = getPara(0, "index"); + + render(para + ".html"); + } + + + public Integer getUserId() { + User user = getUser(); + return user == null ? null : user.getUserId(); + } + + public User getUser(){ + return getSessionAttr("user"); + } + public Kv getParams(String... key) { Kv kv = Kv.create(); for (String k : key) { diff --git a/src/main/java/com/lxyer/controller/JieController.java b/src/main/java/com/lxyer/controller/JieController.java new file mode 100644 index 0000000..48e8daf --- /dev/null +++ b/src/main/java/com/lxyer/controller/JieController.java @@ -0,0 +1,62 @@ +package com.lxyer.controller; + +import com.jfinal.aop.Before; +import com.jfinal.kit.Kv; +import com.lxyer.config.JsonBean; +import com.lxyer.config.interceptor.LoginInterceptor; +import com.lxyer.model.Content; +import com.lxyer.service.ContentService; + +import java.util.List; + +/** + * Created by JUECHENG at 2018/1/7 16:48. + */ +public class JieController extends IController{ + + private ContentService contentService = ContentService.me; + private int userId; + + /** + * 帖子详情 + */ + public void index(){ + int contentId = getParaToInt(0); + + //ContentInfo content = contentService.contentInfo(sessionid, contentid); + //Sheet comments = commentService.commentQuery(request.getSessionid(false) ,contentid, new Flipper().limit(30)); + + Content content = Content.dao.findFirst(Kv.by("contentId", contentId)); + + //热议 + List hotReply = Content.dao.findPage(1, 8, Kv.by("order", "replyNum DESC")).getList(); + + setAttr("bean", content); + setAttr("hotReply", hotReply); + + render("detail.html"); + } + + /** + * 添加/修改帖子 + */ + @Before(LoginInterceptor.class) + public void add(){ + setAttr("bean", Content.dao.findById(getParaToInt())); + + render("add.html"); + } + + /** + * 帖子保存 + */ + @Before(LoginInterceptor.class) + public void save() { + Content content = getModel(Content.class); + + contentService.save(content, getUserId()); + + renderJson(JsonBean.success()); + } + +} diff --git a/src/main/java/com/lxyer/controller/UserController.java b/src/main/java/com/lxyer/controller/UserController.java index e13d201..d1ce1f3 100644 --- a/src/main/java/com/lxyer/controller/UserController.java +++ b/src/main/java/com/lxyer/controller/UserController.java @@ -1,28 +1,88 @@ package com.lxyer.controller; +import com.lxyer.config.JsonBean; +import com.lxyer.model.User; +import com.lxyer.service.UserService; + /** * Created by JUECHENG at 2018/1/7 16:40. */ public class UserController extends IController { + + private UserService userService = UserService.me; + /** * 注册 */ public void create(){ + JsonBean bean = new JsonBean(1); + String email = getPara("email"); + String pwd = getPara("pwd"); + String nickname = getPara("nickname"); + try { + userService.create(email, pwd, nickname); + } catch (Exception e) { + bean.setCode(-1, e.getMessage()); + } + + renderJson(bean); } /** * 登录 */ public void login(){ + String para = getPara(); + if (para == null) { + render("login.html"); + return; + }else if ("out".equals(para)){ + removeSessionAttr("user"); + renderJson(JsonBean.success()); + return; + } + JsonBean bean = new JsonBean(1); + String username = getPara("username"); + String pwd = getPara("pwd"); + try { + User user = userService.login(username, pwd); + /*未来源app端 + String token = userService.updateToken(user); + bean.set("user", user); + bean.set("token", token);*/ + + setSessionAttr("user", user); + } catch (Exception e) { + e.printStackTrace(); + bean.setCode(-1, e.getMessage()); + } + + renderJson(bean); } /** - * 修改 + * todo:用户修改资料 */ public void update(){ } + /** + * 修改密码 + */ + public void repwd(){ + JsonBean bean = new JsonBean(1); + String pwd = getPara("pwd"); + + try { + userService.updatePwd(getUserId(), pwd); + } catch (Exception e) { + bean.setCode(-1, e.getMessage()); + } + + renderJson(bean); + } + } diff --git a/src/main/java/com/lxyer/model/Content.java b/src/main/java/com/lxyer/model/Content.java index a786964..16fa51c 100644 --- a/src/main/java/com/lxyer/model/Content.java +++ b/src/main/java/com/lxyer/model/Content.java @@ -13,4 +13,9 @@ public class Content extends BaseContent { public String sqlSpace() { return "content"; } + + @Override + public Content getDao() { + return dao; + } } diff --git a/src/main/java/com/lxyer/model/User.java b/src/main/java/com/lxyer/model/User.java index d334388..5d7ebae 100644 --- a/src/main/java/com/lxyer/model/User.java +++ b/src/main/java/com/lxyer/model/User.java @@ -13,4 +13,9 @@ public class User extends BaseUser { public String sqlSpace() { return "user"; } + + @Override + public User getDao() { + return dao; + } } diff --git a/src/main/java/com/lxyer/model/UserPwd.java b/src/main/java/com/lxyer/model/UserPwd.java new file mode 100644 index 0000000..a339199 --- /dev/null +++ b/src/main/java/com/lxyer/model/UserPwd.java @@ -0,0 +1,28 @@ +package com.lxyer.model; + +import com.lxyer.config.LxyKit; +import com.lxyer.model.base.BaseUserPwd; + +/** + * Generated by JFinal. + */ +@SuppressWarnings("serial") +public class UserPwd extends BaseUserPwd { + public static final UserPwd dao = new UserPwd().dao(); + + @Override + public boolean save() { + setUpdateTime(System.currentTimeMillis()); + setPwd(LxyKit.md5IfNeed(getPwd())); + if (findById(getUserId()) == null) { + return super.save(); + }else { + return super.update(); + } + } + + @Override + public boolean update() { + return save(); + } +} diff --git a/src/main/java/com/lxyer/model/_Generator.java b/src/main/java/com/lxyer/model/_Generator.java index c9f1cff..b9c37ae 100644 --- a/src/main/java/com/lxyer/model/_Generator.java +++ b/src/main/java/com/lxyer/model/_Generator.java @@ -32,12 +32,13 @@ public class _Generator { * 部分功能使用 Db + Record 模式实现,无需生成 model 的 table 在此配置 */ private static String[] excludedTable = { - /*"comment", + "comment", "content", "content_item", "dyna_attr", - "tree", - "user"*/ + "act_log", + "user", + "user_pwd" }; /** diff --git a/src/main/java/com/lxyer/model/base/BaseUser.java b/src/main/java/com/lxyer/model/base/BaseUser.java index 041e08c..b371e4d 100644 --- a/src/main/java/com/lxyer/model/base/BaseUser.java +++ b/src/main/java/com/lxyer/model/base/BaseUser.java @@ -25,14 +25,6 @@ public abstract class BaseUser> extends Model implement return getStr("username"); } - public void setPassword(java.lang.String password) { - set("password", password); - } - - public java.lang.String getPassword() { - return getStr("password"); - } - public void setSex(java.lang.Integer sex) { set("sex", sex); } diff --git a/src/main/java/com/lxyer/model/base/BaseUserPwd.java b/src/main/java/com/lxyer/model/base/BaseUserPwd.java new file mode 100644 index 0000000..a48ca3f --- /dev/null +++ b/src/main/java/com/lxyer/model/base/BaseUserPwd.java @@ -0,0 +1,36 @@ +package com.lxyer.model.base; + +import com.jfinal.plugin.activerecord.Model; +import com.jfinal.plugin.activerecord.IBean; + +/** + * Generated by JFinal, do not modify this file. + */ +@SuppressWarnings("serial") +public abstract class BaseUserPwd> extends Model implements IBean { + + public void setUserId(java.lang.Integer userId) { + set("userId", userId); + } + + public java.lang.Integer getUserId() { + return getInt("userId"); + } + + public void setPwd(java.lang.String pwd) { + set("pwd", pwd); + } + + public java.lang.String getPwd() { + return getStr("pwd"); + } + + public void setUpdateTime(java.lang.Long updateTime) { + set("updateTime", updateTime); + } + + public java.lang.Long getUpdateTime() { + return getLong("updateTime"); + } + +} diff --git a/src/main/java/com/lxyer/model/base/IModel.java b/src/main/java/com/lxyer/model/base/IModel.java index a24d255..05a35fb 100644 --- a/src/main/java/com/lxyer/model/base/IModel.java +++ b/src/main/java/com/lxyer/model/base/IModel.java @@ -1,36 +1,33 @@ package com.lxyer.model.base; import com.jfinal.kit.Kv; -import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.Page; -import com.jfinal.plugin.activerecord.Record; -import com.jfinal.plugin.activerecord.SqlPara; +import com.jfinal.plugin.activerecord.*; import java.util.List; /** * Created by JUECHENG at 2018/1/7 16:52. */ -public interface IModel> { +public interface IModel> { String sqlSpace(); + M getDao(); default List findList(Kv kv){ - SqlPara sqlPara = Db.getSqlPara(sqlSpace()+".list", kv); + SqlPara sqlPara = getDao().getSqlPara(sqlSpace()+".list", kv); - return (List) Db.find(sqlPara); + return getDao().find(sqlPara); } - default Record findFirst(Kv kv){ + default M findFirst(Kv kv){ SqlPara sqlPara = Db.getSqlPara(sqlSpace()+".list", kv); - - return Db.findFirst(sqlPara); + return getDao().findFirst(sqlPara); } default Page findPage(int pn, int ps, Kv kv){ SqlPara sqlPara = Db.getSqlPara(sqlSpace()+".list", kv); - return (Page) Db.paginate(pn, ps, sqlPara); + return getDao().paginate(pn, ps, sqlPara); } } diff --git a/src/main/java/com/lxyer/service/ContentService.java b/src/main/java/com/lxyer/service/ContentService.java index 6245907..0f963d0 100644 --- a/src/main/java/com/lxyer/service/ContentService.java +++ b/src/main/java/com/lxyer/service/ContentService.java @@ -1,9 +1,19 @@ package com.lxyer.service; -/** +import com.lxyer.model.Content; /** * Created by JUECHENG at 2018/1/7 16:49. */ public class ContentService { + public static final ContentService me = new ContentService(); + public void save(Content content, int userId) { + if (content.getContentId() == null) { + content.setCreateTime(System.currentTimeMillis()); + content.setUserId(userId); + content.save(); + }else { + content.update(); + } + } } diff --git a/src/main/java/com/lxyer/service/UserService.java b/src/main/java/com/lxyer/service/UserService.java new file mode 100644 index 0000000..3cfecf4 --- /dev/null +++ b/src/main/java/com/lxyer/service/UserService.java @@ -0,0 +1,84 @@ +package com.lxyer.service; + +import com.jfinal.kit.Kv; +import com.jfinal.kit.StrKit; +import com.lxyer.config.LxyKit; +import com.lxyer.model.User; +import com.lxyer.model.UserPwd; + +import java.util.Random; + +/** + * Created by JUECHENG at 2018/1/7 22:59. + */ +public class UserService { + public static final UserService me = new UserService(); + + /** + * 创建用户 + * @param email + * @param pwd + * @param nickname + * @throws Exception + */ + public void create(String email, String pwd, String nickname) throws Exception { + if (StrKit.isBlank(email)) + throw new Exception("注册失败,邮箱格式不正确"); + if (StrKit.isBlank(pwd)) + throw new Exception("注册失败,密码格式不正确"); + if (User.dao.findFirst(Kv.by("email", email)) != null) + throw new Exception("注册失败,邮箱被占用"); + + User user = new User(); + user.setUsername(email); + user.setEmail(email); + user.setNickname(nickname); + user.setAvatar("/res/images/avatar/"+ new Random().nextInt(21) +".jpg");//默认头像 + user.setCreateTime(System.currentTimeMillis()); + user.setStatus(1); + user.save(); + + UserPwd userPwd = new UserPwd(); + userPwd.setUserId(user.getUserId()); + userPwd.setPwd(pwd); + userPwd.save(); + } + + public User login(String username, String pwd) throws Exception { + User user = User.dao.findFirst(Kv.by("username", username)); + if (user == null){ + throw new Exception("密码错误!"); + } + + UserPwd userPwd = UserPwd.dao.findById(user.getUserId()); + if (userPwd == null || !LxyKit.md5IfNeed(pwd).equalsIgnoreCase(userPwd.getPwd())){ + throw new Exception("密码错误!"); + } + + if (user.getInt("status") == -1){ + throw new Exception("限制登录"); + } + + return user; + } + + public String updateToken(User user) { + return null; + } + + /** + * 修改密码 + * @param userId + * @param pwd + */ + public void updatePwd(Integer userId, String pwd) throws Exception { + if (StrKit.isBlank(pwd)) + throw new Exception("操作失败,密码格式不正确"); + + UserPwd userPwd = new UserPwd(); + userPwd.setUserId(userId); + userPwd.setPwd(pwd); + + userPwd.update(); + } +} diff --git a/src/main/resources/config.properties b/src/main/resources/config.properties index a314c0d..a2ea0ad 100644 --- a/src/main/resources/config.properties +++ b/src/main/resources/config.properties @@ -1,7 +1,7 @@ #------------------------------------------------# jdbcUrl=jdbc\:mysql\://dbserver\:3306/jfly?useUnicode\=true&characterEncoding\=utf8&useSSL\=false -user=root -password=*hello9796! +user=guest +password=hello redis.cache_name=jfly redis.database=1 diff --git a/src/main/resources/sql/user.sql b/src/main/resources/sql/user.sql index 230d0c5..03b36c5 100644 --- a/src/main/resources/sql/user.sql +++ b/src/main/resources/sql/user.sql @@ -1,3 +1,19 @@ #sql("user.list") - SELECT * FROM `user` + SELECT * FROM `user` u + WHERE u.status != -1 + #if(userId) + AND u.`userId` = #(userId) + #end + #if(username) + AND u.`username` = '#(username)' + #end + #if(email) + AND u.`email` = '#(email)' + #end + + #if(order) + ORDER BY #(order) + #else + ORDER BY u.createTime DESC + #end #end \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/activate.html b/src/main/webapp/WEB-INF/fly/user/activate.html new file mode 100644 index 0000000..45e2339 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/activate.html @@ -0,0 +1,141 @@ + + + + + + + 激活邮箱 + + + + + + + + + + +
+ + +
+ +
+
+ +
+
+
    +
  • + 激活邮箱 +
  • +
+
+
    +
  • + + xx@xx.com + + (尚未激活) + +
  • +
  • +
    + 1. 如果您未收到邮件,或激活链接失效,您可以 + 重新发送邮件,或者 + 更换邮箱; +
    +
    + 2. 如果您始终没有收到 Fly 发送的邮件,请注意查看您邮箱中的垃圾邮件; +
    +
    + 3. 如果你实在无法激活邮件,您还可以联系:admin@xx.com +
    +
  • +
+
+
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/forget.html b/src/main/webapp/WEB-INF/fly/user/forget.html new file mode 100644 index 0000000..89881c6 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/forget.html @@ -0,0 +1,146 @@ + + + + + + 找回密码/重置密码 + + + + + + + + + + +
+
+
+
    +
  • 找回密码
  • +
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ {{d.vercode}} +
+
+
+ +
+
+
+ + + + +
+
+
+
+
+ + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/home.html b/src/main/webapp/WEB-INF/fly/user/home.html new file mode 100644 index 0000000..6166a10 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/home.html @@ -0,0 +1,114 @@ +#@layout() + +#define main() +#@flyColumn() +
+ #(user.nickname??) + +

+ #(user.nickname??) + + +

+ + + +

+ + #(EJ.date(user.createTime??,"yyyy-MM-dd")) 加入 + 来自#(user.city?? "火星") +

+ +

(#(user.sign) #if(user.sign == '')这个人懒得留下签名#end)

+ + + +
+ +
+
+
+
+

#(user.nickname) 最近的帖子

+
    + #for(x : contents.rows??) +
  • + #if(x.wonderful == 1) + + #end + #(x.title) + #(x.createTime) + #(x.viewNum)阅/#(x.replyNum)答 +
  • + #end + +
+
+
+ +
+
+

#(user.nickname) 最近的回答

+
    + #for(x : comments.rows??) +
  • +

    + #(x.createTime) + 在#(x.title)中回答: +

    +
    + #(x.content) +
    +
  • + #else +
    没有回答任何问题
    + #end +
+
+
+
+
+#end + +#define js() + +#end \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/index.html b/src/main/webapp/WEB-INF/fly/user/index.html new file mode 100644 index 0000000..ee29e59 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/index.html @@ -0,0 +1,77 @@ +#@layout() + +#define main() +
+ #@user_side("index") + +
+ +
+
+ +
+ +
+
+ + +
+ +
+
    +
  • 我发的帖(#if(contents.total??0 < 1) 0 #else #(contents.total) #end
  • +
  • 我收藏的帖(#if(collects.total??0 < 1) 0 #else #(collects.total) #end
  • +
+
+
+
    + #for(x : contents.rows) +
  • + #(x.title) + #(x.createTime) + 编辑 + #(x.viewNum)阅/#(x.replyNum)答 +
  • + #end +
+
+
+
+
    + #for(x : collects.rows??) +
  • + #(x.title) + 收藏于#(x.createTime) +
  • + #end +
+
+
+
+
+
+
+#end + +#define js() + +#end \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/login.html b/src/main/webapp/WEB-INF/fly/user/login.html new file mode 100644 index 0000000..4aa3302 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/login.html @@ -0,0 +1,73 @@ +#@layout() + +#define main() +
+
+
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ + +
+ +
+
+
+
+
+
+
+#end + +#define js() + +#end \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/message.html b/src/main/webapp/WEB-INF/fly/user/message.html new file mode 100644 index 0000000..fdec069 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/message.html @@ -0,0 +1,130 @@ + + + + + + 我的消息 + + + + + + + + + + +
+ + +
+ +
+
+ +
+
+ +
+ + +
+
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/reg.html b/src/main/webapp/WEB-INF/fly/user/reg.html new file mode 100644 index 0000000..301b4a0 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/reg.html @@ -0,0 +1,88 @@ +#@layout() + +#define main() +
+
+
+ +
+
+
+
+
+ +
+ +
+
既然都注册了,就用个有效邮箱吧,方便交流
+
+
+ +
+ +
+
+
+ +
+ +
+
6到16个字符
+
+
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+ +
+#end + +#define js() + +#end \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/fly/user/set.html b/src/main/webapp/WEB-INF/fly/user/set.html new file mode 100644 index 0000000..4d73e89 --- /dev/null +++ b/src/main/webapp/WEB-INF/fly/user/set.html @@ -0,0 +1,156 @@ +#@layout() + +#define main() +
+ #@user_side("set") + +
+ +
+
+ +
+ +
+
+ +
+
+
    +
  • 我的资料
  • +
  • 头像
  • +
  • 密码
  • + +
+
+ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+
+
+ + +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
+
+

建议尺寸168*168,支持jpg、png、gif,最大不能超过50KB

+ + + +
+
+
+ + +
+
+
+ +
+ +
+
+
+ +
+ +
+
6到16个字符
+
+
+ +
+ +
+
+
+ +
+
+
+ + +
+
    +
  • + + 已成功绑定,您可以使用QQ帐号直接登录Fly社区,当然,您也可以 + 解除绑定 + + +
  • +
  • + + + + 立即绑定 + ,即可使用微博帐号登录Fly社区 +
  • +
+
+
+ +
+
+
+#end + +#define js() + +#end \ No newline at end of file diff --git a/src/main/webapp/res/mods/index.js b/src/main/webapp/res/mods/index.js index 338e5ba..07ee9bf 100644 --- a/src/main/webapp/res/mods/index.js +++ b/src/main/webapp/res/mods/index.js @@ -526,7 +526,7 @@ layui.define(['layer', 'laytpl', 'form', 'element', 'upload', 'util', 'face'], f }); //退出登录 $(".logout").on('click', function () { - $.post("/os/user/logout",{},function (data) { + $.post("/user/login/out",{},function (data) { location.reload(); }); }); diff --git a/src/main/webapp/res/mods/user.js b/src/main/webapp/res/mods/user.js index 7463ddf..6a69ec7 100644 --- a/src/main/webapp/res/mods/user.js +++ b/src/main/webapp/res/mods/user.js @@ -284,13 +284,13 @@ layui.define(['laypage', 'fly', 'element', 'flow'], function(exports){ form.on('submit(login)', function(data){ var fdata = data.field; - $.post("/os/user/login",{ - bean:JSON.stringify({username:fdata.username, password:fdata.password}) + $.post("/user/login/check",{ + username:fdata.username + ,pwd:fdata.password ,vercode:fdata.vercode },function (data) { - data = JSON.parse(data); - if(data.retcode != 0){ - layer.msg(data.retinfo); + if(data.code != 1){ + layer.msg(data.msg); return false; } location.href = "/"; @@ -301,16 +301,13 @@ layui.define(['laypage', 'fly', 'element', 'flow'], function(exports){ data = data.field; var bean = { email:data.email - ,password:data.pass + ,pwd:data.pass ,nickname:data.nickname }; - $.post("/os/user/register",{ - bean:JSON.stringify(bean) - },function (data) { - data = JSON.parse(data); - if(data.retcode != 0){ - layer.msg(data.retinfo); + $.post("/user/create",bean,function (data) { + if(data.code != 1){ + layer.msg(data.msg); return false; } layer.msg("注册成功",{icon:16, shade: 0.1, time:0}); @@ -352,7 +349,7 @@ layui.define(['laypage', 'fly', 'element', 'flow'], function(exports){ layer.msg('密码修改成功,重新登录', { time: 2000 //2秒关闭(如果不配置,默认是3秒) }, function(){ - $.post('/os/user/logout',{},function () { + $.post('/user/login/out',{},function () { location.reload(); }); });