MemberInfoController.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.dgtly.member.controller;
  2. import com.auth0.jwt.JWT;
  3. import com.auth0.jwt.algorithms.Algorithm;
  4. import com.dgtly.apiframework.util.TokenUtil;
  5. import com.dgtly.common.annotation.ApiNoCheckSign;
  6. import com.dgtly.common.annotation.ApiPassToken;
  7. import com.dgtly.common.core.controller.ApiBaseController;
  8. import com.dgtly.common.core.domain.AjaxResult;
  9. import com.dgtly.common.core.domain.ParameterObject;
  10. import com.dgtly.common.core.domain.ResultType;
  11. import com.dgtly.common.utils.DateUtils;
  12. import com.dgtly.common.utils.StringUtils;
  13. import com.dgtly.member.domain.MemberInfo;
  14. import com.dgtly.member.service.IMemberInfoService;
  15. import com.google.code.kaptcha.Constants;
  16. import io.swagger.annotations.ApiImplicitParam;
  17. import io.swagger.annotations.ApiImplicitParams;
  18. import io.swagger.annotations.ApiOperation;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import javax.servlet.http.HttpServletRequest;
  24. import javax.servlet.http.HttpSession;
  25. import java.util.Date;
  26. /**
  27. * @descption: 网站前端用户信息相关接口API
  28. * @author LiuLingChao
  29. * @version 1.0
  30. * @company 神州数码通用软件(洛阳)有限公司
  31. * @copyright (c) 2019 LuoYang DGT Co'Ltd Inc. All rights reserved.
  32. * @date 2020-2-25 14:41
  33. * @since JDK1.8
  34. */
  35. @RestController
  36. @RequestMapping("/member/info")
  37. @ApiNoCheckSign/* 不用验证 签名 方法上可用*/
  38. public class MemberInfoController extends ApiBaseController {
  39. @Autowired
  40. private IMemberInfoService iMemberInfoService;
  41. /**
  42. * @descption: 网站用户注册
  43. * @param:
  44. * @return:
  45. * @auther: LiuLingChao
  46. * @date: 2020-2-25 14:43
  47. */
  48. @ApiOperation(value = "网站用户注册")
  49. @ApiImplicitParam(name = "params" , paramType = "body")
  50. @ApiPassToken/* 不用验证token 方法上可用*/
  51. @PostMapping("/userRegister")
  52. public Object userRegister(){
  53. ParameterObject obj = getParameterObject();
  54. MemberInfo memberInfo = obj.parseBean(MemberInfo.class);
  55. //校验用户名唯一性
  56. MemberInfo memberInfo1 = iMemberInfoService.checkMemberUnique(memberInfo.getLoginAccount());
  57. if(memberInfo1 != null){
  58. return AjaxResult.error(ResultType.LOGINNAMEREPEAT);
  59. }
  60. //校验手机号码唯一性
  61. MemberInfo memberInfo2 = iMemberInfoService.checkMemberPhoneUnique(memberInfo.getPhone());
  62. if(memberInfo1 != null){
  63. return AjaxResult.error(ResultType.PHONEREPEAT);
  64. }
  65. memberInfo.setLoginTime(DateUtils.getNowDate());
  66. memberInfo.setCreateTime(DateUtils.getNowDate());
  67. int flag = iMemberInfoService.insertMemberInfo(memberInfo);
  68. return toAjax(flag);
  69. }
  70. /**
  71. * @descption: 网站会员登录
  72. * @param:登录账号/手机号、密码
  73. * @return:
  74. * @auther: LiuLingChao
  75. * @date: 2020-2-25 15:35
  76. */
  77. @ApiOperation(value = "会员登录")
  78. @ApiImplicitParam(name = "params" , paramType = "body")
  79. @ApiPassToken/* 不用验证token 方法上可用*/
  80. @PostMapping("/memberLogin")
  81. public Object memberLogin(){
  82. ParameterObject obj = getParameterObject();
  83. MemberInfo memberInfo = obj.parseBean(MemberInfo.class);
  84. //获取验证码
  85. HttpSession httpSession = getSession();
  86. String key = httpSession.getAttribute(Constants.KAPTCHA_SESSION_KEY)+"";
  87. if(null != key && key.equals(memberInfo.getValidateCode())){
  88. MemberInfo memberInfo1 = iMemberInfoService.memberLogin(memberInfo);
  89. if(memberInfo1 == null){
  90. return AjaxResult.error(ResultType.PASSWORDERROR);
  91. }
  92. Date start = new Date();
  93. long currentTime = System.currentTimeMillis() + 12*60* 60 * 1000;//12小时有效时间
  94. Date end = new Date(currentTime);
  95. String token = JWT.create().withAudience(memberInfo1.getId()+"")
  96. .withIssuedAt(start)
  97. .withExpiresAt(end)
  98. .sign(Algorithm.HMAC256(memberInfo1.getLoginPassword()));
  99. return AjaxResult.success().putKV("token",token);
  100. }
  101. return AjaxResult.error(ResultType.VERIFICATIONERROR);
  102. }
  103. /**
  104. * @descption: 根据token获取会员信息
  105. * @param: token
  106. * @return:
  107. * @auther: LiuLingChao
  108. * @date: 2020-2-26 22:16
  109. */
  110. @ApiOperation(value = "根据token获取会员信息")
  111. @ApiImplicitParams({
  112. @ApiImplicitParam(name = "params" , paramType = "body"),
  113. @ApiImplicitParam(name = "token" , paramType = "header")
  114. })
  115. @PostMapping("/getMemberInfo")
  116. public Object getMemberInfo(){
  117. String userId = TokenUtil.getTokenUserId();
  118. MemberInfo memberInfo = iMemberInfoService.selectMemberInfoById(Long.parseLong(userId));
  119. return AjaxResult.success().putKV("memberInfo",memberInfo);
  120. }
  121. /**
  122. * @descption: 修改用户信息
  123. * @param: token 用户信息
  124. * @return:
  125. * @auther: LiuLingChao
  126. * @date: 2020-2-28 15:01
  127. */
  128. @ApiOperation(value = "修改用户信息")
  129. @ApiImplicitParams({
  130. @ApiImplicitParam(name = "params" , paramType = "body"),
  131. @ApiImplicitParam(name = "token" , paramType = "header")
  132. })
  133. @PostMapping("/editMemberInfo")
  134. public Object editMemberInfo(){
  135. String userId = TokenUtil.getTokenUserId();
  136. ParameterObject obj = getParameterObject();
  137. MemberInfo memberInfo = obj.parseBean(MemberInfo.class);
  138. memberInfo.setId(Long.parseLong(userId));
  139. int flag = iMemberInfoService.updateMemberInfo(memberInfo);
  140. return toAjax(flag);
  141. }
  142. }