| | |
| | | package com.doumee.api.web; |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.Jwt.JwtProperties; |
| | | import com.doumee.config.Jwt.JwtTokenUtil; |
| | | import com.doumee.config.annotation.LoginRequired; |
| | | import com.doumee.core.annotation.pr.PreventRepeat; |
| | | import com.doumee.core.constants.Constants; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.dao.business.dto.WebQwSingatureDto; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.vo.WebQwSingatureVO; |
| | | import com.doumee.dao.web.dto.LoginH5DTO; |
| | | import com.doumee.dao.web.dto.UpdEmailDTO; |
| | | import com.doumee.service.business.MemberService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.http.server.reactive.ServerHttpRequest; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.server.ServerWebExchange; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigInteger; |
| | | import java.security.MessageDigest; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.UUID; |
| | | |
| | | /** |
| | | * JWT获取令牌和刷新令牌接口 |
| | |
| | | @RestController |
| | | @Api(tags ="web端用户相关接口") |
| | | @RequestMapping("/web/member") |
| | | @Slf4j |
| | | public class WebMemberController { |
| | | @Resource |
| | | private JwtTokenUtil jwtTokenUtil; |
| | | |
| | | @Resource |
| | | private MemberService memberService; |
| | | @Resource |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | |
| | | @PreventRepeat(limit = 10, lockTime = 10000) |
| | | @ApiOperation("H5业务登录") |
| | | @PostMapping("/loginH5") |
| | | public ApiResponse<Member> loginH5 (@Validated @RequestBody LoginH5DTO dto, ServerWebExchange serverWebExchange) { |
| | | public ApiResponse<Member> loginH5 (@RequestBody LoginH5DTO dto) { |
| | | try { |
| | | ServerHttpRequest request = serverWebExchange.getRequest(); |
| | | //---------TODO-----任康---做用户登录逻辑处理-------start------- |
| | | //拿CODE换qwid,先查下本系统是否存在,存在直接返回member,否则用qwid查询企业用户数据,插入数据库(member) |
| | | Member user = new Member(); |
| | | |
| | | //---------TODO--------做用户登录逻辑处理-------end------- |
| | | Member user = memberService.getUserInfo(dto); |
| | | String token = jwtTokenUtil.generateToken(user); |
| | | user.setToken(token); |
| | | return ApiResponse.success(user); |
| | |
| | | return ApiResponse.failed(ResponseStatus.SERVER_ERROR); |
| | | } |
| | | } |
| | | @ApiOperation("更新用户信息") |
| | | @PostMapping("/upateInfo") |
| | | public ApiResponse<String> upateInfo (@Validated @RequestBody LoginH5DTO dto, ServerWebExchange serverWebExchange) { |
| | | try { |
| | | ServerHttpRequest request = serverWebExchange.getRequest(); |
| | | //---------TODO-----任康---做用户信息更新(邮箱)处理-------start------- |
| | | Member user = new Member(); |
| | | |
| | | //---------TODO--------做用户信息更新(邮箱)处理-------end------- |
| | | String token = jwtTokenUtil.generateToken(user); |
| | | return ApiResponse.success(token); |
| | | @LoginRequired |
| | | @ApiOperation("更新用户邮箱信息") |
| | | @PostMapping("/upateInfo") |
| | | public ApiResponse upateInfo (@RequestBody UpdEmailDTO updEmailDTO ,@RequestHeader(JwtTokenUtil.HEADER_KEY) String token) { |
| | | try { |
| | | Member user = jwtTokenUtil.getUserInfoByToken(token); |
| | | updEmailDTO.setUserId(user.getId()); |
| | | memberService.updEmail(updEmailDTO); |
| | | return ApiResponse.success("操作成功"); |
| | | }catch (BusinessException e){ |
| | | return ApiResponse.failed(e.getCode(),e.getMessage()); |
| | | }catch (Exception e){ |
| | |
| | | /** |
| | | * 刷新JWT令牌,用旧的令牌换新的令牌 |
| | | */ |
| | | @LoginRequired |
| | | @GetMapping("/getMemberInfo") |
| | | @ApiOperation("获取当前登陆用户") |
| | | @LoginRequired |
| | | public ApiResponse<Member> getMemberInfo(@RequestHeader(JwtTokenUtil.HEADER_KEY) String token){ |
| | | try { |
| | | Member user =jwtTokenUtil.getUserInfoByToken(token); |
| | | //---------TODO------任康--检查用户信息当前是否合法-------start------- |
| | | |
| | | //---------TODO--------检查用户信息当前是否合法-------end------- |
| | | jwtTokenUtil.refreshToken(token);//每次更新token有效期 |
| | | Member user = jwtTokenUtil.getUserInfoByToken(token); |
| | | user = memberService.checkUserValid(user); |
| | | user.setToken(jwtTokenUtil.refreshToken(token));//每次更新token有效期 |
| | | if(user !=null){ |
| | | return ApiResponse.success( user); |
| | | } |
| | |
| | | return ApiResponse.failed( "登录已失效"); |
| | | } |
| | | |
| | | @ApiOperation("获取企业微信JS签名") |
| | | @PostMapping("/getQwSignature") |
| | | @ResponseBody |
| | | public ApiResponse<WebQwSingatureVO> getQwSignature(@RequestBody WebQwSingatureDto param) { |
| | | try { |
| | | String jsapiTicket = systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_JS_API_TICKET).getCode(); |
| | | String noncestr = UUID.randomUUID().toString(); |
| | | Long timestamp = System.currentTimeMillis() / 1000; |
| | | String jsapiTicketStr = jsapiTicket + "&noncestr=" + noncestr + "×tamp=" + timestamp + "&url=" + param.getUrl(); |
| | | MessageDigest instance = MessageDigest.getInstance("SHA-1"); |
| | | instance.update(jsapiTicketStr.getBytes()); |
| | | byte[] digest = instance.digest(); |
| | | BigInteger bigInteger = new BigInteger(1, digest); |
| | | String string = bigInteger.toString(); |
| | | WebQwSingatureVO result = new WebQwSingatureVO(); |
| | | result.setNoncestr( noncestr); |
| | | result.setSignature( string); |
| | | result.setTimestamp( timestamp); |
| | | result.setUrl( param.getUrl()); |
| | | // result.put("ticket", jsapiTicket); |
| | | return ApiResponse.success( result); |
| | | } catch ( Exception e) { |
| | | e.printStackTrace(); |
| | | log.error("获取签名失败"+e.getMessage()); |
| | | } |
| | | |
| | | return ApiResponse.failed("获取签名失败"); |
| | | } |
| | | } |