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

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", "&#38169;&#35823;");
return ret;
}
if(StringUtils.isEmpty(cpacha)){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
if(StringUtils.isEmpty(user.getUsername())){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
if(StringUtils.isEmpty(user.getPassword())){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
Object loginCpacha = request.getSession().getAttribute("loginCpacha");
if(loginCpacha == null){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
if(!cpacha.toUpperCase().equals(loginCpacha.toString().toUpperCase())){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
logService.add("&#28155;&#21152;"+user.getUsername()+"&#22833;&#36133;!");
return ret;
}
User findByUsername = userService.findByUsername(user.getUsername());
if(findByUsername == null){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
logService.add("&#29992;&#25143;&#21517;&#20026;"+user.getUsername()+"&#30331;&#24405;&#22833;&#36133;!");
return ret;
}
if(!user.getPassword().equals(findByUsername.getPassword())){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
logService.add("&#29992;&#25143;&#21517;&#20026;"+user.getUsername()+"&#30331;&#24405;&#22833;&#36133;!");
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", "&#25104;&#21151;");
logService.add("&#29992;&#25143;&#21517;&#20026;{"+user.getUsername()+"}&#35282;&#33394;&#20026;{"+role.getName()+"}&#30340;&#29992;&#25143;&#30331;&#24405;&#25104;&#21151;!");
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", "&#38169;&#35823;");
return ret;
}
User user = (User)request.getSession().getAttribute("admin");
if(!user.getPassword().equals(oldpassword)){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
user.setPassword(newpassword);
if(userService.editPassword(user) <= 0){
ret.put("type", "error");
ret.put("msg", "&#38169;&#35823;");
return ret;
}
ret.put("type", "success");
ret.put("msg", "&#25104;&#21151;");
logService.add("&#28155;&#21152;{"+user.getUsername()+"}&#25104;&#21151;!");
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();
}
}
}