package cn.jeesoft.mvc.action.app;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import cn.jeesoft.core.interceptor.Before;
import cn.jeesoft.core.model.BaseBean.State;
import cn.jeesoft.core.model.PagerModel;
import cn.jeesoft.core.util.MD5;
import cn.jeesoft.core.utils.StringUtils;
import cn.jeesoft.interceptor.UsersOrAdminLoginInterceptor;
import cn.jeesoft.mvc.action.BaseAppAction;
import cn.jeesoft.mvc.bean.Users;
import cn.jeesoft.mvc.helper.LoginUserHolder;
import cn.jeesoft.mvc.model.AuthState;
import cn.jeesoft.mvc.model.ResultCode;
import cn.jeesoft.mvc.services.UsersService;
@RestController("app.users")
@RequestMapping("app/users")
@Before(UsersOrAdminLoginInterceptor.class)
public class UsersAction extends BaseAppAction<Users, UsersAction.MPagerModel> {
static class MPagerModel extends PagerModel<Users, Users> {
}
@Autowired
private UsersService usersService;
@Before(enable=false)
@ResponseBody
@RequestMapping(value = "insert",method = RequestMethod.POST)
public String insert(HttpServletRequest request, Users bean) {
if (bean == null) {
return toFailure(ResultCode.FAILURE, "请提供正确的参数");
} else if (StringUtils.isEmpty(bean.getPhone())
|| StringUtils.isEmpty(bean.getPass())) {
return toFailure(ResultCode.FAILURE, "账户或密码不能为空", bean);
} else if (!StringUtils.isPhone(bean.getPhone())) {
return toFailure(ResultCode.FAILURE, "手机格式不正确", bean);
} else if (bean.getPass().length() != 32) {
return toFailure(ResultCode.FAILURE, "密码格式不正确", bean);
}
bean.setCreatetime(new Date());
bean.setPass(bean.getPass());
// 生成随机昵称
if (StringUtils.isEmpty(bean.getNickname())) {
bean.setNickname(StringUtils.getRandomStr(8));
}
// 注册时无需审核
bean.setState(State.YES);
bean.setAuthState(AuthState.NO);
return super.insert(null, bean);
}
@ResponseBody
@RequestMapping(value = "update", method = RequestMethod.POST)
public String update(HttpServletRequest request, Users bean) {
bean.setUpdatetime(new Date());
if (!StringUtils.isEmpty(bean.getPass())) {
bean.setPass(Users.encryption(bean.getPass()));
}
return super.update(null, bean);
}
@ResponseBody
@RequestMapping("selectList")
@Override
public String selectList(HttpServletRequest request, Users bean) {
if (!StringUtils.isEmpty(bean.getPass())) {
bean.setPass(Users.encryption(bean.getPass()));
}
return super.selectList(request, bean);
}
@ResponseBody
@RequestMapping("selectOne")
@Override
public String selectOne(HttpServletRequest request, Users bean) {
// if (!StringUtils.isEmpty(bean.getPass())) {
// bean.setPass(Users.encryption(bean.getPass()));
// }
bean.setPass(null);
Users one = getService().selectOne(bean);
if (one != null) {
one.setPass(null);
return toSuccess(one);
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "没有记录", one);
}
}
@Before(enable=false)
@ResponseBody
@RequestMapping("check")
public String check(Users bean) {
bean.setPass(null);
bean.setPortrait(null);
bean.setCreatetime(null);
bean.setUpdatetime(null);
bean.setState(null);
bean.setInviteId(null);
if (StringUtils.isEmpty(bean.getEmail(), bean.getName(),
bean.getNickname(), bean.getPhone())) {
return toFailure(ResultCode.ERROE_PARAMETER, "参数不能为空");
}
Users one = getService().selectOne(bean);
if (one != null) {
if (StringUtils.isEmpty(bean.getEmail())) {
return toFailure(ResultCode.ERROE_PARAMETER, "该邮箱已注册");
} else if (StringUtils.isEmpty(bean.getNickname())) {
return toFailure(ResultCode.ERROE_PARAMETER, "该昵称已注册");
} else if (StringUtils.isEmpty(bean.getPhone())) {
return toFailure(ResultCode.REPEAT, "该手机号已注册");
} else if (StringUtils.isEmpty(bean.getName())) {
return toFailure(ResultCode.ERROE_PARAMETER, "该账户已注册");
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "检验失败");
}
} else {
return toSuccess();
}
}
@Before(enable=true)
@ResponseBody
@RequestMapping("check_pass")
public String checkPass(HttpServletRequest request, Users bean) {
if (StringUtils.isEmpty(bean.getPass())) {
return toFailure(ResultCode.ERROE_PARAMETER, "密码不能为空");
}
Users users = new Users();
users.setId(getLoginUserId());
users.setPass(bean.getPass());
// users.setState(State.YES);
Users one = getService().selectOne(users);
if (one != null) {
one.setPass(null);
users.setState(null);
if (one.getState() == State.YES) {
LoginUserHolder.setLoginUser(one);
return toSuccess();
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "账户不可用", bean);
}
} else {
users.setPass(null);
users.setState(null);
return toFailure(ResultCode.ERROE_PARAMETER, "密码不正确", bean);
}
}
@Before(enable=false)
@ResponseBody
@RequestMapping("login")
public String login(HttpServletRequest request, Users bean) {
Users users = new Users();
users.setName(bean.getName());
users.setNickname(bean.getNickname());
users.setPhone(bean.getPhone());
// users.setState(State.YES);
if (!StringUtils.isEmpty(bean.getPass())) {
users.setPass(bean.getPass());
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "密码不能为空");
}
Users one = getService().selectOne(users);
if (one != null) {
one.setPass(null);
users.setState(null);
if (one.getState() == State.YES) {
LoginUserHolder.setLoginUser(one);
return toSuccess(one);
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "账户不可用", users);
}
} else {
users.setPass(bean.getPass());
users.setState(null);
return toFailure(ResultCode.ERROE_PARAMETER, "账户或密码不正确", users);
}
}
@Before(enable=false)
@ResponseBody
@RequestMapping("loginout")
public String loginout(HttpServletRequest request) {
if (LoginUserHolder.setLoginUser(null)) {
return toSuccess("退出成功");
} else {
return toFailure(ResultCode.ERROE_PARAMETER, "退出失败");
}
}
@ResponseBody
@RequestMapping("selectPageList")
@Override
public String selectPageList(HttpServletRequest request, MPagerModel pager) {
if (pager.getQuery()!=null && !StringUtils.isEmpty(pager.getQuery().getPass())) {
pager.getQuery().setPass(MD5.md5(pager.getQuery().getPass()));
}
return super.selectPageList(request, pager);
}
/**
* 根据邀请人ID查询用户列表
* @param request
* @param pager
* @return
*/
@ResponseBody
@RequestMapping("list")
public String selectPageListByInviteId(HttpServletRequest request, MPagerModel pager)
throws Exception{
if (pager.getQuery() == null) {
pager.setQuery(new Users());
}
if (StringUtils.isEmpty(pager.getQuery().getInviteId())) {
pager.getQuery().setInviteId(LoginUserHolder.getLoginUser().getId());
}
pager= usersService.list(pager);//根据邀请人ID查询用户列表
return toSuccess(pager);
}
@Override
public UsersService getService() {
return usersService;
}
}