UserRegisterController.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. package com.goafanti.user.controller;
  2. import java.util.Calendar;
  3. import java.util.UUID;
  4. import javax.annotation.Resource;
  5. import javax.validation.Valid;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.apache.log4j.Logger;
  8. import org.apache.shiro.crypto.hash.SimpleHash;
  9. import org.springframework.http.HttpMethod;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.validation.BindingResult;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestMethod;
  14. import org.springframework.web.bind.annotation.ResponseBody;
  15. import com.alibaba.fastjson.JSONObject;
  16. import com.goafanti.admin.service.AdminService;
  17. import com.goafanti.common.bo.Result;
  18. import com.goafanti.common.constant.AFTConstants;
  19. import com.goafanti.common.constant.ErrorConstants;
  20. import com.goafanti.common.controller.BaseController;
  21. import com.goafanti.common.enums.UserFields;
  22. import com.goafanti.common.enums.UserLevel;
  23. import com.goafanti.common.model.User;
  24. import com.goafanti.common.utils.PasswordUtil;
  25. import com.goafanti.common.utils.TimeUtils;
  26. import com.goafanti.common.utils.VerifyCodeUtils;
  27. import com.goafanti.core.shiro.token.TokenManager;
  28. import com.goafanti.easemob.EasemobUtils;
  29. import com.goafanti.easemob.bo.EasemobInfo;
  30. import com.goafanti.message.service.MessageService;
  31. import com.goafanti.user.bo.InputUser;
  32. import com.goafanti.user.service.UserService;
  33. @Controller
  34. public class UserRegisterController extends BaseController {
  35. @Resource
  36. private UserService userService;
  37. @Resource(name = "passwordUtil")
  38. private PasswordUtil passwordUtil;
  39. @Resource
  40. private AdminService adminService;
  41. @Resource
  42. private MessageService messageService;
  43. @Resource
  44. private EasemobUtils easemobUtils;
  45. Logger logger = Logger.getLogger(UserRegisterController.class);
  46. /**
  47. * 网站用户注册
  48. *
  49. * @param user
  50. * @return
  51. */
  52. @RequestMapping(value = "/register", method = RequestMethod.POST)
  53. @ResponseBody
  54. public Result register(@Valid InputUser user, String mobileCode,BindingResult bindingResult) {
  55. Result res = new Result();
  56. if (bindingResult.hasErrors()) {
  57. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  58. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  59. return res;
  60. }
  61. // 验证码15分钟有效
  62. if (TimeUtils.checkOverTime("register")) {
  63. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  64. return res;
  65. }
  66. if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode.toLowerCase())) {
  67. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  68. return res;
  69. }
  70. if (bindingResult.hasErrors()) {
  71. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  72. bindingResult.getFieldError().getField()));
  73. return res;
  74. }
  75. if(StringUtils.isBlank(user.getUsername())){
  76. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "用户名"));
  77. }else if(null == user.getType()){
  78. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "用户类型"));
  79. }else if (StringUtils.isBlank(user.getMobile())) {
  80. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "手机号码"));
  81. } else if (StringUtils.isBlank(user.getPassword())) {
  82. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "密码"));
  83. } else {
  84. User u = userService.selectByMobieAndType(user.getMobile().trim(), user.getType());
  85. if (null != u) {
  86. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户已存在"));
  87. }
  88. }
  89. if (res.getError().isEmpty()) {
  90. User us = new User();
  91. us.setId(UUID.randomUUID().toString());
  92. us.setMobile(user.getMobile().trim());
  93. us.setType(user.getType());
  94. us.setPassword(user.getPassword());
  95. Calendar now = Calendar.getInstance();
  96. now.set(Calendar.MILLISECOND, 0);
  97. us.setCreateTime(now.getTime());
  98. us.setUpdateTime(now.getTime());
  99. us.setPassword(passwordUtil.getEncryptPwd(us));
  100. us.setLvl(0);
  101. us.setNickname(user.getUsername());
  102. us.setSource(AFTConstants.USER_SOURCE_REGISTER);
  103. us.setIsMember(AFTConstants.NO);
  104. us.setStatus(AFTConstants.USER_STATUS_NORMAL);
  105. us.setShareType(AFTConstants.USER_SHARE_PUBLIC);
  106. us.setIdentifyName(StringUtils.isBlank(user.getUnitName())?"":user.getUnitName());
  107. us.setLvl(UserLevel.GENERAL.getCode());
  108. //us.setAid("0");
  109. userService.insertRegister(us,user.getUnitName(),user.getUsername());
  110. }
  111. return res;
  112. }
  113. /**
  114. * APP用户注册
  115. *
  116. * @param user
  117. * @return
  118. */
  119. @RequestMapping(value = "/mregister", method = RequestMethod.POST)
  120. @ResponseBody
  121. public Result mRegister(@Valid InputUser user, String mobileCode,String uuid,BindingResult bindingResult) {
  122. Result res = new Result();
  123. if (bindingResult.hasErrors()) {
  124. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  125. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  126. return res;
  127. }
  128. // 验证码15分钟有效
  129. if (TimeUtils.checkOverTime("register")) {
  130. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  131. return res;
  132. }
  133. if (!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode.toLowerCase())) {
  134. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  135. return res;
  136. }
  137. if (bindingResult.hasErrors()) {
  138. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  139. bindingResult.getFieldError().getField()));
  140. return res;
  141. }
  142. if(StringUtils.isBlank(user.getUsername())){
  143. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "用户名"));
  144. }else if(null == user.getType()){
  145. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "用户类型"));
  146. }else if (StringUtils.isBlank(user.getMobile())) {
  147. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "手机号码"));
  148. } else if (StringUtils.isBlank(user.getPassword())) {
  149. res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "必须指定", "密码"));
  150. } else {
  151. User u = userService.selectByMobieAndType(user.getMobile().trim(), user.getType());
  152. if (null != u) {
  153. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户已存在"));
  154. }
  155. }
  156. if (res.getError().isEmpty()) {
  157. User us = new User();
  158. us.setId(UUID.randomUUID().toString());
  159. us.setMobile(user.getMobile().trim());
  160. us.setType(user.getType());
  161. us.setPassword(user.getPassword());
  162. Calendar now = Calendar.getInstance();
  163. now.set(Calendar.MILLISECOND, 0);
  164. us.setCreateTime(now.getTime());
  165. us.setUpdateTime(now.getTime());
  166. us.setPassword(passwordUtil.getEncryptPwd(us));
  167. us.setLvl(0);
  168. us.setNickname(user.getUsername());
  169. us.setSource(AFTConstants.USER_SOURCE_REGISTER);
  170. us.setIsMember(AFTConstants.NO);
  171. us.setStatus(AFTConstants.USER_STATUS_NORMAL);
  172. us.setShareType(AFTConstants.USER_SHARE_PUBLIC);
  173. us.setIdentifyName(StringUtils.isBlank(user.getUnitName())?"":user.getUnitName());
  174. us.setLvl(UserLevel.GENERAL.getCode());
  175. //us.setAid("0");
  176. userService.insertRegister(us,user.getUnitName(),user.getUsername());
  177. User currentUser = userService.selectByPrimaryKey(us.getId());
  178. //registerEasemobAfterRegister(uuid,currentUser);//开通环信账号
  179. }
  180. return res;
  181. }
  182. private void registerEasemobAfterRegister(String uuid,User u){
  183. JSONObject resultObj = new JSONObject();
  184. String easemobName = String.valueOf(u.getNumber());
  185. String easemobPass = new SimpleHash("md5", u.getId(), null, 1).toHex();
  186. resultObj.put("password", easemobPass);
  187. resultObj.put("username", easemobName);
  188. resultObj.put("nickname", StringUtils.isBlank(u.getNickname()) ? "技淘用户" + u.getNumber() : u.getNickname());
  189. easemobUtils.send(
  190. new EasemobInfo().uri("/users/").data(resultObj.toJSONString()).method(HttpMethod.POST));
  191. //绑定账号
  192. messageService.addJpushEasemobAccount(uuid,u.getId(),easemobName,easemobPass);
  193. }
  194. }