package cn.efunbox.audio.controller; import cn.efunbox.audio.consts.Consts; import cn.efunbox.audio.entity.Admin; import cn.efunbox.audio.entity.Channel; import cn.efunbox.audio.service.AdminService; import cn.efunbox.audio.utils.ApiCode; import cn.efunbox.audio.utils.Common; import cn.efunbox.audio.utils.HttpUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; /** * Created by yao on 17-9-26. */ @RestController @Slf4j @RequestMapping(value = "/admin") public class AdminController { @Autowired AdminService adminService; @Autowired StringRedisTemplate stringRedisTemplate; @Value("${admin.token.expire}") int tokenExpire = 24*30; @RequestMapping(value = "/login" ,method = RequestMethod.POST) public void Login(HttpServletRequest request, HttpServletResponse response){ String name = request.getParameter("name"); String pwd = request.getParameter("pwd"); if(name==null && pwd==null){ HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR); return; } List list = adminService.SearchByName(name); if(list==null || list.size()<1){ HttpUtil.responseApiCode(request, response, ApiCode.NOT_FOUND); return; } Admin admin = list.get(0); String pwdMD5 = Common.getMD5(Common.getMD5(pwd)+admin.getSalt()); // System.out.println(pwdMD5); // System.out.println(admin.getPwd()); if(pwdMD5.equalsIgnoreCase(admin.getPwd())){ if(admin.getStatus()<0){ HttpUtil.responseApiCode(request, response, ApiCode.ACCESS_DENIED); return; } String token = UUID.randomUUID().toString().replaceAll("-", ""); admin.setToken(token); adminService.Update(admin); admin.setPwd(""); admin.setSalt(""); SaveRedis(admin); HttpUtil.responseOkData(request, response, admin); }else HttpUtil.responseApiCode(request, response, ApiCode.INVALID_TOKEN); return; } // @RequestMapping(value = "/register", method = RequestMethod.POST) // public void Insert(HttpServletRequest request, HttpServletResponse response){ // String name = request.getParameter("name"); // String pwd = request.getParameter("pwd"); // String idChannel = request.getParameter("idChannel"); // if(name==null || name.length()<4 || pwd==null || pwd.length()<4){ // HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR); // return; // } // if(idChannel==null || idChannel.length()==0) // idChannel = "0"; // String salt = UUID.randomUUID().toString().replaceAll("-",""); // String token = UUID.randomUUID().toString().replaceAll("-", ""); // String pwdMD5 = Common.getMD5(Common.getMD5(pwd) + salt); // // List list = adminService.SearchByName(name); // if(list!=null && list.size()>0){ // HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST); // return; // } // Admin admin = new Admin(); // admin.setName(name); // admin.setIdChannel(Long.valueOf(idChannel)); // admin.setPwd(pwdMD5); // admin.setSalt(salt); // admin.setToken(token); // admin.setCreated(new Date()); // admin = adminService.Insert(admin); // SaveRedis(admin); // // HttpUtil.responseOutWithJson(request, response, admin); // return; // } @RequestMapping(value = "/search" ,method = RequestMethod.POST) public void Search(HttpServletRequest request, HttpServletResponse response){ List adminList = adminService.SearchAll(); HttpUtil.responseOkData(request, response, adminList); return; } @RequestMapping(value = "/register", method = RequestMethod.POST) public void Register(HttpServletRequest request, HttpServletResponse response, @RequestBody Admin admin){ InsertUpdate(request, response, admin); } @RequestMapping(value = "/update", method = RequestMethod.POST) public void Update(HttpServletRequest request, HttpServletResponse response, @RequestBody Admin admin){ InsertUpdate(request, response, admin); } public void InsertUpdate(HttpServletRequest request, HttpServletResponse response, Admin admin){ if(admin.getId()==null){ String name = admin.getName(); String pwd = admin.getPwd(); if(name==null || name.length()<4 || pwd==null || pwd.length()<4){ HttpUtil.responseApiCode(request, response, ApiCode.PARAMETER_ERROR); return; } List list = adminService.SearchByName(name); if(list!=null && list.size()>0){ HttpUtil.responseApiCode(request, response, ApiCode.RECORD_EXIST); return; } admin.setCreated(new Date()); } if(admin.getPwd()!=null){ String pwd = admin.getPwd(); String salt = UUID.randomUUID().toString().replaceAll("-",""); String token = UUID.randomUUID().toString().replaceAll("-", ""); String pwdMD5 = Common.getMD5(Common.getMD5(pwd) + salt); admin.setPwd(pwdMD5); admin.setSalt(salt); admin.setToken(token); } admin = adminService.Insert(admin); SaveRedis(admin); HttpUtil.responseOutWithJson(request, response, admin); return; } /** * 将token放入redis * @param admin */ public void SaveRedis(Admin admin){ ValueOperations valueOperations = stringRedisTemplate.opsForValue(); valueOperations.set(Consts.REDIS_ADMIN+admin.getId(), admin.getToken(), tokenExpire*3600, TimeUnit.SECONDS); } }