package com.mooc.controller; /** * 杨祺晖 * 2018.9.14 * [email protected] */ import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.mooc.biz.CourseBiz; import com.mooc.biz.LogBiz; import com.mooc.biz.MessageBiz; import com.mooc.biz.ReviewBiz; import com.mooc.biz.UserBiz; import com.mooc.entity.*; import com.mooc.util.DateUtil; import com.wf.captcha.utils.CaptchaUtil; import org.springframework.web.servlet.ModelAndView; @Controller public class UserController { @Autowired UserBiz userBiz; @Autowired CourseBiz courseBiz; @Autowired MessageBiz messageBiz; @Autowired ReviewBiz reviewBiz; @Autowired LogBiz logBiz; /** * 普通日志写入 * * @param loginUser * @param ip * @param type */ public void setlog(User loginUser, String ip, String type) { Log log = new Log(); log.setUserid(loginUser.getId()); log.setUsername(loginUser.getUsername()); log.setIp(ip); log.setType(type); logBiz.insert(log); } @RequestMapping(value = "login") public String login(User user, HttpSession session, HttpServletRequest req) { Map<String, String> paramMap = new HashMap<String, String>(); paramMap.put("username", user.getUsername()); paramMap.put("password", user.getPassword()); User loginUser = userBiz.selectLoginUser(paramMap); if (loginUser == null) { return "login"; } setlog(loginUser, req.getRemoteAddr(), "登录"); session.setAttribute("loginUser", loginUser); return "redirect:course"; } @RequestMapping(value = "logout") // 注销登出 public String logout(String type, User user, HttpSession session, HttpServletRequest req) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { return "login"; } else { session.invalidate(); if (type == "admin") { setlog(loginUser, req.getRemoteAddr(), "管理员注销"); return "loginadmin"; } else setlog(loginUser, req.getRemoteAddr(), "注销"); return "redirect:index"; } } /* * ajax密码检查 */ @RequestMapping(value = "passwordcheck") public void selectUser(User user, HttpServletResponse response, HttpServletRequest req) throws IOException { Map<String, String> paramMap = new HashMap<String, String>(); paramMap.put("username", user.getUsername()); paramMap.put("password", user.getPassword()); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); if (userBiz.selectUser(paramMap) == 1) { user = userBiz.selectLoginUser(paramMap); if (!"admin".equals(user.getMission())&&!"showadmin".equals(user.getMission())) { if (user.getBuycase() != null) { if ("1".equals(user.getBuycase())) { out.println("3");// 屏蔽登录 } else out.println("1");// 正常登录密码正确 } else { out.println("1"); } } else { out.println("2");// 管理员返回 } } else { Log log = new Log(); log.setIp(req.getRemoteAddr()); log.setType("尝试登录账号:" + user.getUsername() + ",密码错误"); logBiz.insert(log); out.println("0");//密码错误返回值 } } @RequestMapping(value = "usercheck") // 注册检查 public void Usercheck(String username, HttpSession session, HttpServletResponse response) throws IOException { response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); int i = userBiz.selectUser(username); out.println(i); } @RequestMapping(value = "quickregist") // 快速注册 public ModelAndView insertUser(String varcode, User user, HttpSession session, HttpServletRequest req, ModelAndView mav) { String id = DateUtil.getId(); String username = user.getUsername(); mav.setViewName("redirect:course"); if (varcode == null) { return mav; } if (userBiz.selectUser(username) == 1 || !CaptchaUtil.ver(varcode, req)) { return mav; } user.setId(id); user.setMission(null); user.setBuycase(null); user.setMycase(null); user.setVip(null); userBiz.insertSelective(user); session.setAttribute("loginUser", user); setlog(user, req.getRemoteAddr(), "快速注册"); return mav; } @RequestMapping(value = "regist") // 注册 public ModelAndView regist(ModelAndView mav, String varcode, User user, HttpSession session, HttpServletRequest req) { String id = DateUtil.getId(); String username = user.getUsername(); mav.setViewName("redirect:course"); if (varcode == null) { return mav; } if (userBiz.selectUser(username) == 1 || !CaptchaUtil.ver(varcode, req)) { return mav; } user.setId(id); user.setMission(null); user.setBuycase(null); user.setMycase(null); user.setVip(null); userBiz.insertSelective(user); setlog(user, req.getRemoteAddr(), "普通注册"); return mav; } @RequestMapping(value = "showvip") // 会员中心 public ModelAndView showvip(HttpSession session,ModelAndView mav) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser != null) { loginUser = userBiz.selectByPrimaryKey(loginUser.getId()); session.setAttribute("loginUser", loginUser); } mav.setViewName("vip"); return mav; } @RequestMapping(value = "mylearn") // 我的课程查询 public ModelAndView myCourse(HttpSession session, ModelAndView mav) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { mav.setViewName("login"); return mav; } List<Course> courses = new ArrayList<Course>(); List<Message> messages = messageBiz.selectmy(loginUser.getId()); for (int i = 0; i < messages.size(); i++) { int a = messages.get(i).getCourseid(); Course course = courseBiz.selectByPrimaryKey(a); courses.add(course); } mav.addObject("mycourses", courses); mav.setViewName("mylearn"); return mav; } @RequestMapping(value = "course") // 主页课程查询 public String Course(HttpSession session, Map map) { List<Course> courses = courseBiz.selectAllCourse(); map.put("courses", courses); return "courseindex"; } @RequestMapping(value = "coursedetail") // 单课程主页 public ModelAndView Courseindex(int id, HttpSession session,ModelAndView mav) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { mav.setViewName("login"); return mav; } Message message = new Message(); message.setCourseid(id); message.setUserid(loginUser.getId()); Message me = messageBiz.select(message); if (me == null) { mav.addObject("isSelect", false); } else { mav.addObject("isSelect", true); } Course course = courseBiz.selectByPrimaryKey(id); mav.addObject("course", course); mav.setViewName("coursedetail"); return mav; } @RequestMapping(value = "coursevideo") // 单课程视屏 public String Coursevideo(int courseid, HttpSession session, Map map) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { return "login"; } Course course = courseBiz.selectByPrimaryKey(courseid); if ("1".equals(course.getType())) { if (loginUser.getVip() == null) { return "vip"; } } map.put("course", course); List<Review> reviews = reviewBiz.select(courseid); map.put("reviews", reviews); return "coursevideo"; } @RequestMapping(value = "insertCourse") // 加入课程 public void insertCourse(int courseid, String userid, HttpSession session, HttpServletRequest req, HttpServletResponse response) throws IOException { String result = "订阅成功!"; User user = (User) session.getAttribute("loginUser"); Course c = courseBiz.selectByPrimaryKey(courseid); if (user.getVip() == null && "1".equals(c.getType())) { result = "此课程是会员课程,请购买会员!"; } else { Message message = new Message(); message.setCourseid(courseid); message.setUserid(userid); int i = messageBiz.insert(message); setlog(user, req.getRemoteAddr(), "订阅课程:" + c.getName()); } response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.print(result); } @RequestMapping(value = "deleteCourse") // 删除课程 public String deleteCourse(int courseid, String userid, HttpServletResponse response, HttpServletRequest req) throws IOException { Message message = new Message(); message.setCourseid(courseid); message.setUserid(userid); PrintWriter out = response.getWriter(); int i = messageBiz.delete(message); User loginUser = userBiz.selectByPrimaryKey(userid); Course c = courseBiz.selectByPrimaryKey(courseid); setlog(loginUser, req.getRemoteAddr(), "取消课程:" + c.getName()); String result = i > 0 ? "true" : "false"; return result; } @RequestMapping(value = "info") //个人信息页面 public String Info(User user, HttpSession session) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { return "login"; } return "infoset"; } @RequestMapping(value = "infoset") // 个人信息设置 public String Infoset(User user, HttpSession session, HttpServletRequest req) { User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { return "login"; } user.setCollect(loginUser.getCollect()); List<Review> reviews = reviewBiz.selectbyuserid(loginUser.getUsername()); for (int a = 0; a < reviews.size(); a++) {//个人信息修改的同时更新评论的用户信息 reviews.get(a).setSex(user.getSex()); } reviewBiz.updateByPrimaryKeySelective(reviews); userBiz.updateByPrimaryKeySelective(user); Map map = new HashMap<String, String>(); map.put("username", loginUser.getUsername()); map.put("password", loginUser.getPassword()); session.setAttribute("loginUser", userBiz.selectLoginUser(map)); setlog(loginUser, req.getRemoteAddr(), "个人信息更改"); return "redirect:course"; } @RequestMapping(value = "vip") // vip购买 0为1个月,1为半年,2为一年 public void Vip(HttpSession session, int viptype, HttpServletResponse response, HttpServletRequest req) throws IOException { String data = "已经成功充值"; User loginUser = (User) session.getAttribute("loginUser"); if (loginUser == null) { // return "login"; } List<Review> reviews = reviewBiz.selectbyuserid(loginUser.getUsername()); int collect = loginUser.getCollect(); boolean isvip = false; Date date = new Date(); Date vipdate = loginUser.getVip(); if (vipdate == null||vipdate.getTime() < date.getTime()) { loginUser.setVip(new Date()); } switch (viptype){ default: data = "请求错误!"; break; case 0: if (collect < 500) { data = "余额不足,请联系管理员充值!"; } else { loginUser.setCollect(collect - 500); vipdate = loginUser.getVip(); vipdate.setMonth(vipdate.getMonth() + 1); loginUser.setVip(vipdate); isvip = true; setlog(loginUser, req.getRemoteAddr(), "购买会员:一个月"); } break; case 1: if (collect < 2000) { data = "余额不足,请联系管理员充值!"; } else { loginUser.setCollect(collect - 2000); vipdate = loginUser.getVip(); vipdate.setMonth(vipdate.getMonth() + 6); loginUser.setVip(vipdate); isvip = true; setlog(loginUser, req.getRemoteAddr(), "购买会员:半年"); } break; case 2: if (collect < 3000) { data = "余额不足,请联系管理员充值!"; } else { loginUser.setCollect(collect - 3000); vipdate = loginUser.getVip(); vipdate.setYear(vipdate.getYear() + 1); loginUser.setVip(vipdate); isvip = true; setlog(loginUser, req.getRemoteAddr(), "购买会员:一年"); } break; } if (isvip) { for (int a = 0; a < reviews.size(); a++) { reviews.get(a).setVip(1); } } reviewBiz.updateByPrimaryKeySelective(reviews); userBiz.updateByPrimaryKeySelective(loginUser); Map map = new HashMap<String, String>(); map.put("username", loginUser.getUsername()); map.put("password", loginUser.getPassword()); session.setAttribute("loginUser", userBiz.selectLoginUser(map)); response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.println(data); } }