From c8b32b8bca79a116cfab70eb8c389907b664c9ca Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 23 四月 2025 10:43:14 +0800
Subject: [PATCH] 提交
---
server/src/main/java/com/doumee/api/web/WebMemberController.java | 134 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 112 insertions(+), 22 deletions(-)
diff --git a/server/src/main/java/com/doumee/api/web/WebMemberController.java b/server/src/main/java/com/doumee/api/web/WebMemberController.java
index 15e772c..920c993 100644
--- a/server/src/main/java/com/doumee/api/web/WebMemberController.java
+++ b/server/src/main/java/com/doumee/api/web/WebMemberController.java
@@ -1,22 +1,40 @@
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.EncryptionReq;
+import com.doumee.config.annotation.EncryptionResp;
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.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+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.apache.shiro.authz.annotation.RequiresPermissions;
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鑾峰彇浠ょ墝鍜屽埛鏂颁护鐗屾帴鍙�
@@ -24,20 +42,24 @@
@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) {
+ @EncryptionReq
+ @EncryptionResp
+ public ApiResponse<Member> loginH5 (@RequestBody LoginH5DTO dto) {
try {
- ServerHttpRequest request = serverWebExchange.getRequest();
- //---------TODO-----浠诲悍---鍋氱敤鎴风櫥褰曢�昏緫澶勭悊-------start-------
//鎷緾ODE鎹wid锛屽厛鏌ヤ笅鏈郴缁熸槸鍚﹀瓨鍦紝瀛樺湪鐩存帴杩斿洖member锛屽惁鍒欑敤qwid鏌ヨ浼佷笟鐢ㄦ埛鏁版嵁锛屾彃鍏ユ暟鎹簱锛坢ember)
- Member user = new Member();
-
- //---------TODO--------鍋氱敤鎴风櫥褰曢�昏緫澶勭悊-------end-------
+ Member user = memberService.getUserInfo(dto);
String token = jwtTokenUtil.generateToken(user);
user.setToken(token);
return ApiResponse.success(user);
@@ -48,17 +70,18 @@
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")
+ @EncryptionReq
+ @EncryptionResp
+ 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){
@@ -69,16 +92,14 @@
/**
* 鍒锋柊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);
}
@@ -90,4 +111,73 @@
return ApiResponse.failed( "鐧诲綍宸插け鏁�");
}
+ @ApiOperation("鑾峰彇浼佷笟寰俊JS绛惧悕")
+ @PostMapping("/getQwSignature")
+ @ResponseBody
+ @EncryptionReq
+ @EncryptionResp
+ 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 = "jsapi_ticket="+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( getSHA1(jsapiTicketStr));
+ result.setTimestamp( timestamp);
+ result.setUrl( param.getUrl());
+ result.setTicket(jsapiTicket);
+ return ApiResponse.success( result);
+ } catch ( Exception e) {
+ e.printStackTrace();
+ log.error("鑾峰彇绛惧悕澶辫触"+e.getMessage());
+ }
+
+ return ApiResponse.failed("鑾峰彇绛惧悕澶辫触");
+ }
+
+
+ @LoginRequired
+ @ApiOperation("鏌ヨ鍙鎶勯�佷汉鍒嗛〉")
+ @PostMapping("/getCopySendUserPage")
+ @EncryptionReq
+ @EncryptionResp
+ public ApiResponse<PageData<Member>> getCopySendUserPage (@RequestBody PageWrap<Member> pageWrap) {
+ pageWrap.getModel().setIsSendCopy(Constants.ONE);
+ return ApiResponse.success(memberService.findPage(pageWrap));
+ }
+
+
+
+ public static String getSHA1(String input) {
+ try {
+ // 鑾峰彇MessageDigest绫荤殑瀹炰緥锛屾寚瀹氫娇鐢⊿HA-1绠楁硶
+ MessageDigest md = MessageDigest.getInstance("SHA-1");
+
+ // 浣跨敤鎸囧畾鐨勫瓧鑺傛洿鏂版憳瑕�
+ md.update(input.getBytes());
+
+ // 鑾峰彇瀵嗘枃锛堝搱甯屽�硷級
+ byte[] digest = md.digest();
+
+ // 灏嗗瓧鑺傛暟缁勮浆鎹负鍗佸叚杩涘埗瀛楃涓�
+ StringBuilder hexString = new StringBuilder();
+ for (byte b : digest) {
+ String hex = Integer.toHexString(0xff & b);
+ if (hex.length() == 1) hexString.append('0');
+ hexString.append(hex);
+ }
+
+ return hexString.toString();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3