You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
214 lines
7.3 KiB
214 lines
7.3 KiB
package com.ischoolbar.programmer.controller.admin;
|
|
|
|
import java.awt.image.BufferedImage;
|
|
import java.io.IOException;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import javax.imageio.ImageIO;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import com.ischoolbar.programmer.entity.admin.Authority;
|
|
import com.ischoolbar.programmer.entity.admin.Menu;
|
|
import com.ischoolbar.programmer.entity.admin.Role;
|
|
import com.ischoolbar.programmer.entity.admin.User;
|
|
import com.ischoolbar.programmer.service.admin.AuthorityService;
|
|
import com.ischoolbar.programmer.service.admin.LogService;
|
|
import com.ischoolbar.programmer.service.admin.MenuService;
|
|
import com.ischoolbar.programmer.service.admin.RoleService;
|
|
import com.ischoolbar.programmer.service.admin.UserService;
|
|
import com.ischoolbar.programmer.util.CpachaUtil;
|
|
import com.ischoolbar.programmer.util.MenuUtil;
|
|
|
|
|
|
@Controller
|
|
@RequestMapping("/system")
|
|
public class SystemController {
|
|
|
|
@Autowired
|
|
private UserService userService;
|
|
|
|
@Autowired
|
|
private RoleService roleService;
|
|
|
|
@Autowired
|
|
private AuthorityService authorityService;
|
|
|
|
@Autowired
|
|
private MenuService menuService;
|
|
|
|
@Autowired
|
|
private LogService logService;
|
|
|
|
|
|
@RequestMapping(value="/index",method=RequestMethod.GET)
|
|
public ModelAndView index(ModelAndView model,HttpServletRequest request){
|
|
List<Menu> userMenus = (List<Menu>)request.getSession().getAttribute("userMenus");
|
|
model.addObject("topMenuList", MenuUtil.getAllTopMenu(userMenus));
|
|
model.addObject("secondMenuList", MenuUtil.getAllSecondMenu(userMenus));
|
|
model.setViewName("system/index");
|
|
return model;//WEB-INF/views/+system/index+.jsp = WEB-INF/views/system/index.jsp
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/welcome",method=RequestMethod.GET)
|
|
public ModelAndView welcome(ModelAndView model){
|
|
model.setViewName("system/welcome");
|
|
return model;
|
|
}
|
|
|
|
@RequestMapping(value="/login",method=RequestMethod.GET)
|
|
public ModelAndView login(ModelAndView model){
|
|
model.setViewName("system/login");
|
|
return model;
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/login",method=RequestMethod.POST)
|
|
@ResponseBody
|
|
public Map<String, String> loginAct(User user,String cpacha,HttpServletRequest request){
|
|
Map<String, String> ret = new HashMap<String, String>();
|
|
if(user == null){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
if(StringUtils.isEmpty(cpacha)){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
if(StringUtils.isEmpty(user.getUsername())){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
if(StringUtils.isEmpty(user.getPassword())){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
Object loginCpacha = request.getSession().getAttribute("loginCpacha");
|
|
if(loginCpacha == null){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
logService.add("添加"+user.getUsername()+"失败!");
|
|
return ret;
|
|
}
|
|
User findByUsername = userService.findByUsername(user.getUsername());
|
|
if(findByUsername == null){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
logService.add("用户名为"+user.getUsername()+"登录失败!");
|
|
return ret;
|
|
}
|
|
if(!user.getPassword().equals(findByUsername.getPassword())){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
logService.add("用户名为"+user.getUsername()+"登录失败!");
|
|
return ret;
|
|
}
|
|
|
|
Role role = roleService.find(findByUsername.getRoleId());
|
|
List<Authority> authorityList = authorityService.findListByRoleId(role.getId());
|
|
String menuIds = "";
|
|
for(Authority authority:authorityList){
|
|
menuIds += authority.getMenuId() + ",";
|
|
}
|
|
if(!StringUtils.isEmpty(menuIds)){
|
|
menuIds = menuIds.substring(0,menuIds.length()-1);
|
|
}
|
|
List<Menu> userMenus = menuService.findListByIds(menuIds);
|
|
|
|
request.getSession().setAttribute("admin", findByUsername);
|
|
request.getSession().setAttribute("role", role);
|
|
request.getSession().setAttribute("userMenus", userMenus);
|
|
ret.put("type", "success");
|
|
ret.put("msg", "成功");
|
|
logService.add("用户名为{"+user.getUsername()+"}角色为{"+role.getName()+"}的用户登录成功!");
|
|
return ret;
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/logout",method=RequestMethod.GET)
|
|
public String logout(HttpServletRequest request){
|
|
HttpSession session = request.getSession();
|
|
session.setAttribute("admin", null);
|
|
session.setAttribute("role", null);
|
|
request.getSession().setAttribute("userMenus", null);
|
|
return "redirect:login";
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/edit_password",method=RequestMethod.GET)
|
|
public ModelAndView editPassword(ModelAndView model){
|
|
model.setViewName("system/edit_password");
|
|
return model;
|
|
}
|
|
|
|
@RequestMapping(value="/edit_password",method=RequestMethod.POST)
|
|
@ResponseBody
|
|
public Map<String, String> editPasswordAct(String newpassword,String oldpassword,HttpServletRequest request){
|
|
Map<String, String> ret = new HashMap<String, String>();
|
|
if(StringUtils.isEmpty(newpassword)){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
User user = (User)request.getSession().getAttribute("admin");
|
|
if(!user.getPassword().equals(oldpassword)){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
user.setPassword(newpassword);
|
|
if(userService.editPassword(user) <= 0){
|
|
ret.put("type", "error");
|
|
ret.put("msg", "错误");
|
|
return ret;
|
|
}
|
|
ret.put("type", "success");
|
|
ret.put("msg", "成功");
|
|
logService.add("添加{"+user.getUsername()+"}成功!");
|
|
return ret;
|
|
}
|
|
|
|
|
|
@RequestMapping(value="/get_cpacha",method=RequestMethod.GET)
|
|
public void generateCpacha(
|
|
@RequestParam(name="vl",required=false,defaultValue="4") Integer vcodeLen,
|
|
@RequestParam(name="w",required=false,defaultValue="100") Integer width,
|
|
@RequestParam(name="h",required=false,defaultValue="30") Integer height,
|
|
@RequestParam(name="type",required=true,defaultValue="loginCpacha") String cpachaType,
|
|
HttpServletRequest request,
|
|
HttpServletResponse response){
|
|
CpachaUtil cpachaUtil = new CpachaUtil(vcodeLen, width, height);
|
|
String generatorVCode = cpachaUtil.generatorVCode();
|
|
request.getSession().setAttribute(cpachaType, generatorVCode);
|
|
BufferedImage generatorRotateVCodeImage = cpachaUtil.generatorRotateVCodeImage(generatorVCode, true);
|
|
try {
|
|
ImageIO.write(generatorRotateVCodeImage, "gif", response.getOutputStream());
|
|
} catch (IOException e) {
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|