UserRegisterController.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package com.goafanti.user.controller;
  2. import java.util.Calendar;
  3. import java.util.Date;
  4. import java.util.UUID;
  5. import javax.annotation.Resource;
  6. import javax.validation.Valid;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.log4j.Logger;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.validation.BindingResult;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestMethod;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import com.goafanti.admin.service.AdminService;
  15. import com.goafanti.common.bo.Result;
  16. import com.goafanti.common.constant.AFTConstants;
  17. import com.goafanti.common.constant.ErrorConstants;
  18. import com.goafanti.common.controller.BaseController;
  19. import com.goafanti.common.enums.UserAuthentication;
  20. import com.goafanti.common.enums.UserFields;
  21. import com.goafanti.common.enums.UserLevel;
  22. import com.goafanti.common.model.User;
  23. import com.goafanti.common.utils.InvitationCodeUtils;
  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.mybatis.JDBCIdGenerator;
  28. import com.goafanti.core.shiro.token.TokenManager;
  29. import com.goafanti.easemob.EasemobUtils;
  30. import com.goafanti.message.service.MessageService;
  31. import com.goafanti.user.bo.InputUser;
  32. import com.goafanti.user.service.UserService;
  33. import com.goafanti.voucher.service.VoucherDetailService;
  34. import com.goafanti.voucher.service.VoucherService;
  35. @Controller
  36. public class UserRegisterController extends BaseController {
  37. @Resource
  38. private UserService userService;
  39. @Resource(name = "passwordUtil")
  40. private PasswordUtil passwordUtil;
  41. @Resource
  42. private AdminService adminService;
  43. @Resource
  44. private MessageService messageService;
  45. @Resource
  46. private EasemobUtils easemobUtils;
  47. @Resource
  48. private JDBCIdGenerator jDBCIdGenerator;
  49. @Resource
  50. private VoucherDetailService voucherDetailService;
  51. @Resource
  52. private VoucherService voucherService;
  53. Logger logger = Logger.getLogger(UserRegisterController.class);
  54. /**
  55. * 网站用户注册
  56. *
  57. * @param user
  58. * @return
  59. */
  60. @RequestMapping(value = "/register", method = RequestMethod.POST)
  61. @ResponseBody
  62. public Result register(@Valid InputUser user, String mobileCode,BindingResult bindingResult) {
  63. Result res = new Result();
  64. if (bindingResult.hasErrors()) {
  65. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  66. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  67. return res;
  68. }
  69. if (StringUtils.isBlank(user.getUnitName())) {
  70. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户名不能为空"));
  71. return res;
  72. }
  73. if (StringUtils.isBlank(user.getMobile())) {
  74. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "手机号码不能为空"));
  75. return res;
  76. }
  77. User u = userService.selectByMobieAndType(user.getMobile().trim(),null);
  78. if (null != u) {
  79. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户已存在"));
  80. return res;
  81. }
  82. if (TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) ==null||!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode.toLowerCase())) {
  83. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  84. return res;
  85. }
  86. // 验证码15分钟有效
  87. if (TimeUtils.checkOverTime("register")) {
  88. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  89. return res;
  90. }
  91. if (user.getBeInviteCode()!=null&&!user.getBeInviteCode().equals("")&&userService.checkeToInviteCode(user.getBeInviteCode())) {
  92. res.getError().add(buildError("邀请码不存在", "邀请码不存在"));
  93. return res;
  94. }
  95. if (res.getError().isEmpty()) {
  96. User us = new User();
  97. us.setId(UUID.randomUUID().toString());
  98. us.setMobile(user.getMobile().trim());
  99. us.setPassword(user.getPassword());
  100. Calendar now = Calendar.getInstance();
  101. now.set(Calendar.MILLISECOND, 0);
  102. us.setCreateTime(now.getTime());
  103. us.setUpdateTime(now.getTime());
  104. us.setPassword(passwordUtil.getEncryptPwd(us));
  105. us.setNickname(user.getUnitName());
  106. us.setSource(AFTConstants.USER_SOURCE_REGISTER);
  107. us.setBeInviteCode(user.getBeInviteCode());
  108. us.setStatus(AFTConstants.USER_STATUS_NORMAL);
  109. us.setShareType(AFTConstants.USER_SHARE_PUBLIC);
  110. us.setIdentifyName(StringUtils.isBlank(user.getUnitName())?"":user.getUnitName());
  111. us.setLvl(UserLevel.GENERAL.getCode());
  112. us.setAuthentication(UserAuthentication.UN_AUTHENTICATION.getCode());
  113. us.setTransferTime(now.getTime());
  114. userService.insertRegister(us,user.getUnitName(),user.getUsername());
  115. //获得抵用券
  116. userService.saveVoucher(us);
  117. }
  118. return res;
  119. }
  120. /**
  121. * APP用户注册
  122. *
  123. * @param user
  124. * @return
  125. */
  126. @RequestMapping(value = "/mregister", method = RequestMethod.POST)
  127. @ResponseBody
  128. public Result mRegister(@Valid InputUser user, String mobileCode,String uuid,BindingResult bindingResult) {
  129. Result res = new Result();
  130. if (bindingResult.hasErrors()) {
  131. res.getError().add(buildErrorByMsg(bindingResult.getFieldError().getDefaultMessage(),
  132. UserFields.getFieldDesc(bindingResult.getFieldError().getField())));
  133. return res;
  134. }
  135. if (StringUtils.isBlank(user.getUnitName())) {
  136. user.setUnitName("jt_"+InvitationCodeUtils.randomCode(new Date().getTime(),6));
  137. }
  138. if (StringUtils.isBlank(user.getMobile())) {
  139. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "手机号码不能为空"));
  140. return res;
  141. }
  142. User u = userService.selectByMobieAndType(user.getMobile().trim(),null);
  143. if (null != u) {
  144. res.getError().add(buildError(ErrorConstants.USER_ALREADY_EXIST, "用户已存在"));
  145. }
  146. if (TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE_TIME) ==null||!TokenManager.getSession().getAttribute(VerifyCodeUtils.M_CODE).equals(mobileCode.toLowerCase())) {
  147. res.getError().add(buildError(ErrorConstants.MCODE_ERROR, "手机验证码错误"));
  148. return res;
  149. }
  150. // 验证码15分钟有效
  151. if (TimeUtils.checkOverTime("register")) {
  152. res.getError().add(buildError(ErrorConstants.MCODE_OVERTIME_ERROR, "手机验证码超时失效"));
  153. return res;
  154. }
  155. if (user.getBeInviteCode()!=null&&!user.getBeInviteCode().equals("")&&userService.checkeToInviteCode(user.getBeInviteCode())) {
  156. res.getError().add(buildError("邀请码不存在", "邀请码不存在"));
  157. return res;
  158. }
  159. if (res.getError().isEmpty()) {
  160. User us = new User();
  161. us.setId(UUID.randomUUID().toString());
  162. us.setMobile(user.getMobile().trim());
  163. us.setPassword(user.getPassword());
  164. Calendar now = Calendar.getInstance();
  165. now.set(Calendar.MILLISECOND, 0);
  166. us.setCreateTime(now.getTime());
  167. us.setUpdateTime(now.getTime());
  168. us.setPassword(passwordUtil.getEncryptPwd(us));
  169. us.setNickname(user.getUnitName());
  170. if(user.getType() !=null)us.setType(user.getType());
  171. us.setBeInviteCode(user.getBeInviteCode());
  172. us.setSource(AFTConstants.USER_SOURCE_REGISTER);
  173. us.setStatus(AFTConstants.USER_STATUS_NORMAL);
  174. us.setShareType(AFTConstants.USER_SHARE_PUBLIC);
  175. us.setIdentifyName(StringUtils.isBlank(user.getUnitName())?"":user.getUnitName());
  176. us.setLvl(UserLevel.GENERAL.getCode());
  177. us.setAuthentication(UserAuthentication.UN_AUTHENTICATION.getCode());
  178. us.setTransferTime(now.getTime());
  179. userService.insertRegister(us,user.getUnitName(),user.getUsername());
  180. //获得抵用券
  181. userService.saveVoucher(us);
  182. }
  183. return res;
  184. }
  185. /*public void getVoucher(User u){
  186. if (StringUtils.isNotBlank(u.getBackgroundUrl())) {
  187. List<String> ids=voucherService.getSourceVoucher(VoucherSourceType.BYQFWS.getCode());
  188. for (String s : ids) {
  189. JtVoucherDetail j=new JtVoucherDetail();
  190. j.setId(jDBCIdGenerator.generateId().toString());
  191. j.setReceiveTime(new Date());
  192. j.setVoucherId(s);
  193. j.setUseUid(u.getId());
  194. j.setStatus(0);
  195. voucherDetailService.saveVoucherDetail(j);
  196. }
  197. }
  198. }
  199. private void registerEasemobAfterRegister(String uuid,User u){
  200. JSONObject resultObj = new JSONObject();
  201. String easemobName = String.valueOf(u.getNumber());
  202. String easemobPass = new SimpleHash("md5", u.getId(), null, 1).toHex();
  203. resultObj.put("password", easemobPass);
  204. resultObj.put("username", easemobName);
  205. resultObj.put("nickname", StringUtils.isBlank(u.getNickname()) ? "技淘用户" + u.getNumber() : u.getNickname());
  206. easemobUtils.send(
  207. new EasemobInfo().uri("/users/").data(resultObj.toJSONString()).method(HttpMethod.POST));
  208. //绑定账号
  209. messageService.addJpushEasemobAccount(uuid,u.getId(),easemobName,easemobPass);
  210. }*/
  211. }