Kaynağa Gözat

完善功能

lishuwen79 6 yıl önce
ebeveyn
işleme
9214ab1fbe
38 değiştirilmiş dosya ile 367 ekleme ve 8 silme
  1. 20 0
      src/main/java/com/lsw/controller/front/main/MainController.java
  2. 1 1
      src/main/java/com/lsw/controller/front/share/ShareController.java
  3. 1 1
      src/main/java/com/lsw/controller/front/share/ShareValidator.java
  4. 88 0
      src/main/java/com/lsw/controller/front/user/AppUserController.java
  5. 155 0
      src/main/java/com/lsw/controller/front/user/AppUserService.java
  6. 64 0
      src/main/java/com/lsw/controller/front/user/AppUserValidator.java
  7. 28 0
      src/main/java/com/lsw/interceptor/TokenInterceptor.java
  8. 1 0
      src/main/java/com/lsw/model/work/_MappingKit.java
  9. 4 4
      src/main/java/com/lsw/model/work/base/BaseToken.java
  10. 5 2
      src/main/java/com/lsw/route/FrontRoute.java
  11. BIN
      src/main/webapp/upload/file/13394785.jpg
  12. BIN
      src/main/webapp/upload/file/22.jpg
  13. BIN
      src/main/webapp/upload/file/a1560353ly1fxtms3pqofj20u01hc7ev (1).jpg
  14. BIN
      src/main/webapp/upload/file/video/1102.mp4
  15. BIN
      src/main/webapp/upload/images/ueditor/1102.mp4
  16. BIN
      src/main/webapp/upload/images/ueditor/11021.mp4
  17. BIN
      src/main/webapp/upload/images/ueditor/1544680762324.jpg
  18. BIN
      src/main/webapp/upload/images/ueditor/1544680781278.jpg
  19. BIN
      src/main/webapp/upload/images/ueditor/1544680820437.jpg
  20. BIN
      src/main/webapp/upload/images/ueditor/1544680990635.jpg
  21. BIN
      src/main/webapp/upload/images/ueditor/1544681220635.jpg
  22. BIN
      src/main/webapp/upload/images/ueditor/1544681239856.jpg
  23. BIN
      src/main/webapp/upload/images/ueditor/1544681268379.jpg
  24. BIN
      src/main/webapp/upload/images/ueditor/1544681341167.jpg
  25. BIN
      src/main/webapp/upload/images/ueditor/1544681538872.jpg
  26. BIN
      src/main/webapp/upload/images/ueditor/1544681818921.jpg
  27. BIN
      src/main/webapp/upload/images/ueditor/1544682610564.jpg
  28. BIN
      src/main/webapp/upload/images/ueditor/1544682711194.jpg
  29. BIN
      src/main/webapp/upload/images/ueditor/1544683113181.jpg
  30. BIN
      src/main/webapp/upload/images/ueditor/1544683435950.jpg
  31. BIN
      src/main/webapp/upload/images/ueditor/1544934811018.jpg
  32. BIN
      src/main/webapp/upload/images/ueditor/1544935920392.jpg
  33. BIN
      src/main/webapp/upload/images/ueditor/1545033124581.jpg
  34. BIN
      src/main/webapp/upload/images/ueditor/1545033150391.jpg
  35. BIN
      src/main/webapp/upload/images/ueditor/1545033197939.jpg
  36. BIN
      src/main/webapp/upload/images/ueditor/1545037473267.jpg
  37. BIN
      src/main/webapp/upload/images/ueditor/1545037541146.jpg
  38. BIN
      src/main/webapp/upload/images/ueditor/1545039320141.jpg

+ 20 - 0
src/main/java/com/lsw/controller/front/main/MainController.java

@@ -0,0 +1,20 @@
+package com.lsw.controller.front.main;
+
+import com.jfinal.plugin.activerecord.Record;
+import com.lsw.base.BaseController;
+import com.lsw.model.work.Banner;
+import com.lsw.model.work.News;
+
+import java.util.List;
+
+public class MainController extends BaseController {
+
+    public void main() {
+        List<Banner> banner_list = Banner.dao.find("SELECT cover FROM tb_banner ORDER BY mView  ASC limit 5");
+        //List<News> new_list = News.dao.find("SELECT id,mCove FROM tb_goods WHERE status=0 GROUP BY mCode ORDER BY id DESC limit 5");
+        Record record = new Record();
+        record.set("banner_list", banner_list);
+        //record.set("new_list", new_list);
+        renderJson(record);
+    }
+}

+ 1 - 1
src/main/java/com/lsw/controller/front/ShareController.java → src/main/java/com/lsw/controller/front/share/ShareController.java

@@ -1,4 +1,4 @@
-package com.lsw.controller.front;
+package com.lsw.controller.front.share;
 
 import com.jfinal.aop.Before;
 import com.jfinal.kit.PathKit;

+ 1 - 1
src/main/java/com/lsw/controller/front/ShareValidator.java → src/main/java/com/lsw/controller/front/share/ShareValidator.java

@@ -1,4 +1,4 @@
-package com.lsw.controller.front;
+package com.lsw.controller.front.share;
 
 import com.jfinal.core.Controller;
 import com.lsw.base.BaseValidator;

+ 88 - 0
src/main/java/com/lsw/controller/front/user/AppUserController.java

@@ -0,0 +1,88 @@
+package com.lsw.controller.front.user;
+
+import com.jfinal.aop.Before;
+import com.jfinal.aop.Clear;
+import com.jfinal.kit.JsonKit;
+import com.jfinal.kit.Kv;
+import com.jfinal.kit.PathKit;
+import com.jfinal.kit.Ret;
+import com.jfinal.plugin.ehcache.CacheKit;
+import com.lsw.base.BaseController;
+import com.lsw.commons.utils.CommonUtils;
+import com.lsw.commons.utils.Constant;
+import com.lsw.commons.utils.ImageZipUtil;
+import com.lsw.commons.utils.SendMessage;
+import com.lsw.interceptor.TokenInterceptor;
+import com.lsw.model.work.User;
+
+import java.util.Random;
+
+@Before(TokenInterceptor.class)
+public class AppUserController extends BaseController {
+    static final AppUserService appUserService = new AppUserService();
+    String Path = "/images/ueditor/";
+
+    //发送短信
+    @Clear
+    @Before(AppUserValidator.class)
+    public void sendMessage() {
+        String phone = getPara("account").trim();
+        String code = CommonUtils.getRandomString(6);
+        boolean flag = SendMessage.sendSms(phone, "哔啵", "SMS_143665149", JsonKit.toJson(Kv.by("code", code)));
+        if (flag) {
+            CacheKit.put(Constant.code, phone, String.valueOf(code));
+            renderSuccess();
+        } else {
+            renderError("发送失败");
+        }
+    }
+
+    @Clear
+    @Before(AppUserValidator.class)
+    public void login() {
+        System.out.println("aa:"+getPara("pass"));
+        Ret ret = appUserService.login(getPara("account").trim(), getPara("pass").trim());
+        renderJson(ret);
+    }
+
+
+    public void userInfo() {
+        User appUser = User.dao.findById(getPara("id"));
+        renderSuccess(appUser);
+    }
+
+    /**
+     * 上传data:image格式的图片
+     */
+    public void uploadHeader() {
+        String imgName = System.currentTimeMillis() + new Random().nextInt(10000) + ".jpg";
+        try {
+            String oldImage = PathKit.getWebRootPath() + "/upload" + Path + imgName;
+            ImageZipUtil.GenerateImage(getPara("dataImage").replace("data:image/png;base64,", ""), oldImage);
+        } catch (Exception e) {
+        }
+        User appUser = new User();
+        appUser.set("id", getParaToInt("id"));
+        appUser.setHeader("/upload" + Path + imgName);
+        appUser.update();
+        renderJson(Ret.by("url", "/upload" + Path + imgName));
+    }
+
+    @Before(AppUserValidator.class)
+    public void edit() {
+        User appUser = new User();
+        appUser.set("id", getParaToInt("id"));
+        appUser.set(getPara("field"), getPara("value"));
+        appUser.update();
+        renderSuccess();
+    }
+
+
+    @Clear
+    public void feedback() {
+        /*Feedback feedback = getModel(Feedback.class, "", true);
+        feedback.setMTime(new Date());
+        feedback.save();
+        renderSuccess();*/
+    }
+}

+ 155 - 0
src/main/java/com/lsw/controller/front/user/AppUserService.java

@@ -0,0 +1,155 @@
+package com.lsw.controller.front.user;
+
+import com.jfinal.kit.HashKit;
+import com.jfinal.kit.Ret;
+import com.jfinal.kit.StrKit;
+import com.jfinal.plugin.activerecord.Db;
+import com.jfinal.plugin.ehcache.CacheKit;
+import com.lsw.commons.utils.Constant;
+import com.lsw.model.work.User;
+import com.lsw.model.work.Token;
+import org.apache.shiro.crypto.hash.SimpleHash;
+import org.apache.shiro.util.SimpleByteSource;
+
+import java.util.Date;
+
+/**
+ * Created by Administrator on 2017/5/23.
+ */
+public class AppUserService {
+    private final User dao = new User().dao();
+
+    public Ret login(String account, String pass) {
+        Ret ret = Ret.create();
+        //第一次登录先保存用户信息
+        User user = dao.findFirst("select * from tb_user where account=?", account);
+        if(user==null){
+            ret.set("result", false).set("msg", "用户不存在");
+            return ret;
+        }
+        String v_pass=new SimpleHash("MD5", new SimpleByteSource(pass), new SimpleByteSource(user.getSalt()), 2).toHex();
+        if(!v_pass.equals(user.getPassword())){
+            ret.set("result", false).set("msg", "密码错误!");
+            return ret;
+        }
+        if(user.getMSate()==1){
+            ret.set("result", false).set("msg", "该账户被限制登录");
+            return ret;
+        }
+        //保存token信息
+        Token token = new Token();
+        String secret = HashKit.generateSaltForSha256();
+        token.setSecret(secret);
+       //token.setPhone(account);
+        token.put("mSate",0);
+        token.save();
+        user.put("token", secret);
+        CacheKit.put(Constant.token, account, token);
+        ret.set("result", true);
+        ret.set("user", user);
+        return ret;
+    }
+
+    /**
+     * 用户验证token知否有效
+     *
+     * @param secret
+     * @param phone
+     * @return
+     */
+    public Token loginBySecret(String secret, String phone) {
+        Token token = CacheKit.get(Constant.token, phone);
+        if (token == null) {
+            token = Token.dao.findFirst("SELECT u.mSate FROM tb_token t LEFT JOIN tb_app_user u ON u.account = t.phone WHERE t.secret=? AND t.phone=? ORDER BY t.id DESC", secret, phone);
+            CacheKit.put(Constant.token, phone, token);
+        }
+        return token;
+    }
+
+    /**
+     * 检查是否存在该用户
+     *
+     * @param account
+     * @return
+     */
+    public boolean check(String account) {
+        User user = dao.findFirst("select * from tb_app_user where account=?", account);
+        return user == null ? true : false;
+    }
+
+    /**
+     * 用户注册
+     *
+     * @param account  手机号
+     * @param password 密码
+     * @param newsCode 验证码
+     * @return
+     */
+    public Ret register(String account, String password, String newsCode) {
+        Ret ret = Ret.create();
+        boolean check = check(account);
+        if (check) {
+            String code = CacheKit.get(Constant.code, account);
+            if (code == null) {
+                ret.set("result", false).set("msg", "验证码超过有效期");
+                CacheKit.remove(Constant.code, account);
+                return ret;
+            }
+            if (code.equals(newsCode)) {
+                String salt = HashKit.generateSaltForSha256();
+                User user = new User();
+                user.setAccount(account);
+                user.setHeader("/upload/images/header/ls.png");
+                user.setSalt(salt);
+                //密码加密
+                user.setPassword(HashKit.sha256(password + salt));
+                user.setMTime(new Date());
+                user.save();
+                ret.set("result", true);
+            } else {
+                ret.set("result", false).set("msg", "验证码不正确");
+            }
+
+        } else {
+            ret.set("result", false).set("msg", "手机号已被注册");
+        }
+        return ret;
+    }
+
+    /**
+     * 找回密码
+     *
+     * @param account  账号
+     * @param password 密码
+     * @param newsCode 验证码
+     * @return
+     */
+    public Ret findPass(String account, String password, String newsCode) {
+        Ret ret = Ret.create();
+        boolean check = check(account);
+        if (check) {
+            ret.set("result", false).set("msg", "该号码未注册");
+        } else {
+            String code = CacheKit.get(Constant.code, account);
+            if (code == null) {
+                ret.set("result", false).set("msg", "验证码超过有效期");
+                CacheKit.remove(Constant.code, account);
+                return ret;
+            }
+            if (code.equals(newsCode)) {
+                String salt = HashKit.generateSaltForSha256();
+                //密码加密
+                password = HashKit.sha256(password + salt);
+                int row = Db.update("update tb_app_user set password =?,salt=? where account=?", password, salt, account);
+                if (row > 0) {
+                    ret.set("result", true);
+                } else {
+                    ret.set("result", false).set("msg", "找回密码失败");
+                }
+            } else {
+                ret.set("result", false).set("msg", "验证码不正确");
+            }
+        }
+        return ret;
+    }
+}

+ 64 - 0
src/main/java/com/lsw/controller/front/user/AppUserValidator.java

@@ -0,0 +1,64 @@
+package com.lsw.controller.front.user;
+
+import com.jfinal.core.Controller;
+import com.jfinal.kit.PathKit;
+import com.jfinal.upload.UploadFile;
+import com.lsw.base.BaseValidator;
+import com.lsw.commons.utils.ImageKit;
+import com.lsw.commons.utils.ImageZipUtil;
+
+import java.io.File;
+import java.util.Random;
+
+public class AppUserValidator extends BaseValidator {
+    String Path = "/images/header/";
+    UploadFile uf = null;
+    String imgName = System.currentTimeMillis() + new Random().nextInt(10000) + ".jpg";
+
+
+    @Override
+    protected void validate(Controller c) {
+        if (getActionKey().equals("/app/user/uploadHeader")) {
+            try {
+                uf = c.getFile("header", Path, 10240 * 10240);
+                if (ImageKit.notImageExtName(uf.getFileName())) {
+                    uf.getFile().delete();
+                    addError("msg", "只支持图片类型:gif、jpg、jpeg、png");
+                }
+                uf.getFile().renameTo(new File(PathKit.getWebRootPath() + "/upload" + Path + imgName));
+                //等比例压缩图片减少图片大小
+                ImageZipUtil.zipImageFile(new File(uf.getUploadPath() + imgName), new File(PathKit.getWebRootPath() + "/upload" + Path + imgName), 0.3);
+                c.setAttr("url", "/upload" + Path + imgName);
+            } catch (Exception e) {
+                String msg = e.getMessage();
+                if (msg != null) {
+                    if (msg.indexOf("exceeds") != -1) {
+                        addError("msg", "大小超出10M限制");
+                    }
+                    if (uf != null) {
+                        uf.getFile().delete();
+                    }
+                    addError("msg", msg);
+                }
+            }
+        }
+        String url = getActionKey();
+        if (url.equals("/app/user/login")) {
+            validateRequiredString("account", "msg", "手机号不能为空");
+            validatePhone("account", "msg", "手机号格式不正确");
+        }
+        if (url.equals("/app/user/sendMessage")) {
+            validateRequiredString("account", "msg", "手机号不能为空");
+            validatePhone("account", "msg", "格式不正确");
+        }
+        if (url.equals("/app/user/edit")) {
+            if (c.getPara("field").equals("phone")) {
+                validatePhone("value", "msg", "手机号格式不正确");
+            }
+        }
+        if (url.equals("/app/user/feedback")) {
+            validateRequiredString("advice", "msg", "请填写意见或内容");
+            validateString("advice", 2, 200, "msg", "内容限制2-200个字符");
+        }
+    }
+}

+ 28 - 0
src/main/java/com/lsw/interceptor/TokenInterceptor.java

@@ -0,0 +1,28 @@
+package com.lsw.interceptor;
+
+import com.jfinal.aop.Duang;
+import com.jfinal.aop.Interceptor;
+import com.jfinal.aop.Invocation;
+import com.jfinal.core.Controller;
+import com.jfinal.kit.Ret;
+import com.lsw.controller.front.user.AppUserService;
+import com.lsw.model.work.Token;
+
+public class TokenInterceptor implements Interceptor {
+    public void intercept(Invocation inv) {
+        Controller c = inv.getController();
+        System.out.println("token:"+c.getHeader("token"));
+        System.out.println("phone:"+c.getHeader("phone"));
+        Token token = Duang.duang(AppUserService.class).loginBySecret(c.getHeader("token"),c.getHeader("phone"));
+        if (token == null) {
+            c.renderJson(Ret.create().set("result", false).set("msg", "请先登录"));
+            return;
+        }
+        if(token.getInt("mSate")==1){
+            c.renderJson(Ret.create().set("result", false).set("msg", "你已被锁定,不能做其它操作"));
+            return;
+        }
+        inv.invoke();
+    }
+
+}

+ 1 - 0
src/main/java/com/lsw/model/work/_MappingKit.java

@@ -20,6 +20,7 @@ public class _MappingKit {
 		arp.addMapping("tb_news", "id", News.class);
 		arp.addMapping("tb_news_column", "id", NewsColumn.class);
 		arp.addMapping("tb_position", "id", Position.class);
+		arp.addMapping("tb_resume", "id", Resume.class);
 		arp.addMapping("tb_token", "id", Token.class);
 		arp.addMapping("tb_user", "id", User.class);
 	}

+ 4 - 4
src/main/java/com/lsw/model/work/base/BaseToken.java

@@ -25,12 +25,12 @@ public abstract class BaseToken<M extends BaseToken<M>> extends Model<M> impleme
 		return getStr("secret");
 	}
 
-	public void setAccount(java.lang.String account) {
-		set("account", account);
+	public void setPhone(java.lang.String phone) {
+		set("phone", phone);
 	}
 
-	public java.lang.String getAccount() {
-		return getStr("account");
+	public java.lang.String getPhone() {
+		return getStr("phone");
 	}
 
 }

+ 5 - 2
src/main/java/com/lsw/route/FrontRoute.java

@@ -1,14 +1,17 @@
 package com.lsw.route;
 
 import com.jfinal.config.Routes;
-import com.lsw.controller.front.ShareController;
+import com.lsw.controller.front.main.MainController;
+import com.lsw.controller.front.share.ShareController;
+import com.lsw.controller.front.user.AppUserController;
 
 public class FrontRoute extends Routes {
     @Override
     public void config() {
         setBaseViewPath("/WEB-INF/view/front");
         add("/share", ShareController.class, "/share/"); // 分享页
-        //add("/app/user", AppUserController.class); // appuser
+        add("/app/user", AppUserController.class); // appuser
+        add("/app/main", MainController.class); // main
 
     }
 

BIN
src/main/webapp/upload/file/13394785.jpg


BIN
src/main/webapp/upload/file/22.jpg


BIN
src/main/webapp/upload/file/a1560353ly1fxtms3pqofj20u01hc7ev (1).jpg


BIN
src/main/webapp/upload/file/video/1102.mp4


BIN
src/main/webapp/upload/images/ueditor/1102.mp4


BIN
src/main/webapp/upload/images/ueditor/11021.mp4


BIN
src/main/webapp/upload/images/ueditor/1544680762324.jpg


BIN
src/main/webapp/upload/images/ueditor/1544680781278.jpg


BIN
src/main/webapp/upload/images/ueditor/1544680820437.jpg


BIN
src/main/webapp/upload/images/ueditor/1544680990635.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681220635.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681239856.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681268379.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681341167.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681538872.jpg


BIN
src/main/webapp/upload/images/ueditor/1544681818921.jpg


BIN
src/main/webapp/upload/images/ueditor/1544682610564.jpg


BIN
src/main/webapp/upload/images/ueditor/1544682711194.jpg


BIN
src/main/webapp/upload/images/ueditor/1544683113181.jpg


BIN
src/main/webapp/upload/images/ueditor/1544683435950.jpg


BIN
src/main/webapp/upload/images/ueditor/1544934811018.jpg


BIN
src/main/webapp/upload/images/ueditor/1544935920392.jpg


BIN
src/main/webapp/upload/images/ueditor/1545033124581.jpg


BIN
src/main/webapp/upload/images/ueditor/1545033150391.jpg


BIN
src/main/webapp/upload/images/ueditor/1545033197939.jpg


BIN
src/main/webapp/upload/images/ueditor/1545037473267.jpg


BIN
src/main/webapp/upload/images/ueditor/1545037541146.jpg


BIN
src/main/webapp/upload/images/ueditor/1545039320141.jpg