package cn.jeesoft.mvc.action.web.front; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import cn.jeesoft.core.interceptor.Before; import cn.jeesoft.core.model.BaseBean.State; import cn.jeesoft.core.model.PagerModel; import cn.jeesoft.core.utils.StringUtils; import cn.jeesoft.interceptor.UsersLoginInterceptor; import cn.jeesoft.mvc.action.web.BaseManageAction; import cn.jeesoft.mvc.bean.Users; import cn.jeesoft.mvc.model.AuthState; import cn.jeesoft.mvc.model.ResultCode; import cn.jeesoft.mvc.outapi.SmsHelper; import cn.jeesoft.mvc.outapi.SmsHelper.CodeStatus; import cn.jeesoft.mvc.services.BaseService; import cn.jeesoft.mvc.services.UsersService; @Controller("front.users") @RequestMapping("front/users") @Before(UsersLoginInterceptor.class) public class UsersAction extends BaseManageAction<Users, UsersAction.MPagerModel> { static class MPagerModel extends PagerModel<Users, Users> { } @Autowired private UsersService usersService; @Before(enable=false) @RequestMapping(value = "insert",method = RequestMethod.GET) public String insert(HttpServletRequest request, ModelMap modelMap) throws Exception { modelMap.addAttribute("title", "会员注册"); return FTL_FRONT+"users/insert"; } @Before(enable=false) @RequestMapping(value = "insert",method = RequestMethod.POST) public String insert(HttpServletRequest request, ModelMap modelMap, Users users) throws Exception { modelMap.addAttribute("title", "会员注册"); String verifyCode = request.getParameter("verify"); if (!StringUtils.isPhone(users.getPhone())) { modelMap.addAttribute("errorMessage", "手机号不正确"); } else if (StringUtils.isEmpty(users.getPass())) { modelMap.addAttribute("errorMessage", "密码不能为空"); } else if (StringUtils.isEmpty(verifyCode)) { modelMap.addAttribute("errorMessage", "验证码不能为空"); } else { CodeStatus status = SmsHelper.verify(verifyCode); if (status == CodeStatus.NO) { modelMap.addAttribute("errorMessage", "验证码不正确"); } else if (status == CodeStatus.EXPIRE) { modelMap.addAttribute("errorMessage", "验证码已过期"); } else { // 合理请求 Users one = new Users(); one.setPhone(users.getPhone()); one = getService().selectOne(one); if (one != null) { modelMap.addAttribute("errorMessage", "该手机号已注册"); } else { users.setState(State.YES); users.setAuthState(AuthState.NO); users.setPass(Users.encryption(users.getPass())); // 生成随机昵称 if (StringUtils.isEmpty(users.getNickname())) { users.setNickname(StringUtils.getRandomStr(8)); } int usersId = usersService.insert(users); if (usersId > 0) { SmsHelper.remove(verifyCode); return FTL_FRONT+"users/insert_success"; } else if (usersId == -2) { modelMap.addAttribute("errorMessage", "该邀请人无权邀请用户"); } else { modelMap.addAttribute("errorMessage", "注册失败,请重试"); } } } } return FTL_FRONT+"users/insert"; } @Before(enable=false) @ResponseBody @RequestMapping("check") public String check(Users bean) throws Exception { 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(); } } @Override public BaseService<Users> getService() { return usersService; } }