package com.qunar.user.controller;
import com.google.common.base.Charsets;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.google.common.hash.Hashing;
import com.qunar.user.model.Limiter;
import com.qunar.user.model.User;
import com.qunar.user.service.IUserService;
import org.springframework.stereotype.Controller;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import qunar.web.spring.annotation.JsonBody;
import java.util.Collection;
import java.util.Date;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 用户请求处理的controller适应json
*
* @author jasmine.wei
*
*/
@Controller
@RequestMapping("/user")
public class UserJsonController {
@Resource
private IUserService userService;
/**
* 用户注册
*
* @param user
* @return
*/
@RequestMapping(value = "/register.json", method = RequestMethod.POST)
@ResponseBody
public Map register(@RequestBody User user) {
// 设置时间
user.setLastLoginTime(new Date(System.currentTimeMillis()));
// 得到插入用户的Id
int id = userService.addUser(user);
return ImmutableMap.of("status", 200, "msg", "success", "ret", ImmutableMap.of("id", id));
}
/**
* 用户登录
*
* @param userId
* @param password
* @param response
* @return
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/login.json", method = RequestMethod.POST)
@JsonBody
public Map login(@RequestParam String userId, @RequestParam String password, HttpServletResponse response) {
User user = userService.isLogin(userId, password);
if (user != null) {
// 更新登录时间
user.setLastLoginTime(new Date(System.currentTimeMillis()));
userService.updateUser(user);
//用户登录成功设置cookie
Cookie id = new Cookie("userId", user.getUserId());
Cookie time = new Cookie("time", user.getLastLoginTime().toString());
String tokenStr = Hashing.md5().hashString(user.getUserId() + "_" + user.getLastLoginTime().toString(), Charsets.UTF_8).toString();
Cookie token = new Cookie("token", tokenStr);
response.addCookie(id);
response.addCookie(time);
response.addCookie(token);
return ImmutableMap.of("status", 200, "msg", "success", "userId", user.getId());
}
return ImmutableMap.of("msg", "用户名或密码不正确");
}
/**
* 用户注册post请求
*
* @param user
* @return
*/
@RequestMapping(value = "/update.json", method = RequestMethod.POST)
@JsonBody
public Map userUpdate(@RequestBody User user, HttpServletRequest request) {
Preconditions.checkNotNull(user);
// 实现只有自己可以修改自己
Cookie cookies[] = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
if ("userId".equals(cookie.getName())) {
if (Objects.equal(cookie.getValue(), user.getUserId())) {
boolean isSuccess = userService.updateUser(user);
if (isSuccess) {// 如果更新成功
return ImmutableMap.of("status", 200, "msg", "success");
}
} else {
return ImmutableMap.of("msg", "无权限修改别人的");
}
}
}
}
return ImmutableMap.of("msg", "用户更新失败");
}
@RequestMapping(value = "/detail.json", method = RequestMethod.GET)
@JsonBody
public User detail(@RequestParam String userId) {
User user = userService.queryUser(userId);
return user;
}
// 用户列表
@RequestMapping(value = "/users", method = RequestMethod.GET)
@JsonBody
public Collection<User> list(@RequestParam(value = "start", required = false, defaultValue = "0") int pageNum,
@RequestParam(value = "pageSize", required = false, defaultValue = "20") int pageSize) {
int start = pageNum * pageSize;
return userService.queryUserList(new Limiter(start, pageSize));
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
userManagerForMybatis.zip (72个子文件)
userManagerForMybatis
.project 1KB
src
test
java
com
qunar
user
service
impl
TestUserServiceImpl.java 3KB
main
webapp
WEB-INF
error404.jsp 399B
error.jsp 397B
user
register.jsp 1KB
login.jsp 1KB
userList.jsp 922B
userUpdate.jsp 1KB
web.xml 2KB
dispatcherServlet-servlet.xml 2KB
404.jsp 404B
resources
jdbc.properties 218B
spring
app-root.xml 983B
iocContext.xml 1007B
mybatis-config.xml 447B
app-db.xml 3KB
logback.xml 705B
java
com
qunar
user
service
impl
UserServiceImpl.java 3KB
IUserService.java 2KB
model
User.java 3KB
Limiter.java 688B
controller
UserController.java 4KB
UserJsonController.java 5KB
mapper
UserMapper.java 1KB
UserMapper.xml 1KB
exception
SimpleExceptionResolver.java 572B
UserException.java 581B
customerSerializer
DateCustomerSerializer.java 845B
interceptor
UserValidationInterceptor.java 953B
RequestTimeInterceptor.java 1KB
target
m2e-wtp
web-resources
META-INF
MANIFEST.MF 112B
maven
com.qunar.user
userManager
pom.properties 237B
pom.xml 7KB
generated-test-sources
test-annotations
maven-status
maven-compiler-plugin
testCompile
default-testCompile
createdFiles.lst 0B
inputFiles.lst 102B
compile
default-compile
createdFiles.lst 519B
inputFiles.lst 1KB
generated-sources
annotations
classes
com
qunar
user
service
impl
UserServiceImpl.class 3KB
IUserService.class 685B
model
User.class 4KB
Limiter.class 787B
controller
UserController.class 4KB
UserJsonController.class 6KB
mapper
UserMapper.class 558B
UserMapper.xml 1KB
exception
UserException.class 816B
SimpleExceptionResolver.class 1KB
customerSerializer
DateCustomerSerializer.class 2KB
interceptor
RequestTimeInterceptor.class 2KB
UserValidationInterceptor.class 1KB
jdbc.properties 218B
spring
app-root.xml 983B
iocContext.xml 1007B
mybatis-config.xml 447B
app-db.xml 3KB
logback.xml 705B
work
jsp
org
apache
jsp
WEB_002dINF
user
userList_jsp.class 7KB
login_jsp.class 8KB
error_jsp.class 4KB
test-classes
com
qunar
user
service
impl
TestUserServiceImpl.class 4KB
.settings
org.eclipse.wst.jsdt.ui.superType.container 49B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.m2e.core.prefs 90B
org.eclipse.jdt.core.prefs 430B
org.eclipse.wst.validation.prefs 50B
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.core.resources.prefs 155B
org.eclipse.wst.common.component 706B
.jsdtscope 508B
pom.xml 7KB
.classpath 1KB
deploy
user.sql 3KB
共 72 条
- 1
狼痕
- 粉丝: 1
- 资源: 35
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页