|
@@ -6,6 +6,8 @@ import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
+import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
+import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
import work.baiyun.chronicdiseaseapp.common.R;
|
|
import work.baiyun.chronicdiseaseapp.common.R;
|
|
|
import work.baiyun.chronicdiseaseapp.model.vo.GetOpenidRequest;
|
|
import work.baiyun.chronicdiseaseapp.model.vo.GetOpenidRequest;
|
|
|
import work.baiyun.chronicdiseaseapp.service.WeChatService;
|
|
import work.baiyun.chronicdiseaseapp.service.WeChatService;
|
|
@@ -22,6 +24,7 @@ import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
@RestController
|
|
@RestController
|
|
|
|
|
+@Tag(name = "微信 (WeChat)", description = "与微信小程序交互的接口")
|
|
|
public class WeChatController {
|
|
public class WeChatController {
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
@@ -38,6 +41,8 @@ public class WeChatController {
|
|
|
return R.success(200, "Hello from Spring backend!");
|
|
return R.success(200, "Hello from Spring backend!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Operation(summary = "获取 openid", description = "根据小程序 code 获取 openid 并创建/返回用户 token")
|
|
|
|
|
+
|
|
|
@PostMapping(path = "/get_openid", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
@PostMapping(path = "/get_openid", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
|
public R<?> getOpenid(@RequestBody(required = false) GetOpenidRequest req) {
|
|
public R<?> getOpenid(@RequestBody(required = false) GetOpenidRequest req) {
|
|
|
if (req == null || req.getCode() == null || req.getCode().isEmpty()) {
|
|
if (req == null || req.getCode() == null || req.getCode().isEmpty()) {
|
|
@@ -90,6 +95,7 @@ public class WeChatController {
|
|
|
*
|
|
*
|
|
|
* 向后兼容:如果没有 Authorization header,仍然支持 X-Token 或 token header,或 POST body 中的 { "token": "..." }。
|
|
* 向后兼容:如果没有 Authorization header,仍然支持 X-Token 或 token header,或 POST body 中的 { "token": "..." }。
|
|
|
*/
|
|
*/
|
|
|
|
|
+ @Operation(summary = "获取用户信息", description = "根据 token 返回当前用户信息(支持 Authorization/X-Token/token)")
|
|
|
@PostMapping(path = "/user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
@PostMapping(path = "/user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
|
public R<?> getUserInfo(@RequestBody(required = false) Map<String, String> body, HttpServletRequest request) {
|
|
public R<?> getUserInfo(@RequestBody(required = false) Map<String, String> body, HttpServletRequest request) {
|
|
|
// 优先使用拦截器放入的 currentUserId(AuthInterceptor 已验证 X-Token)
|
|
// 优先使用拦截器放入的 currentUserId(AuthInterceptor 已验证 X-Token)
|
|
@@ -143,6 +149,7 @@ public class WeChatController {
|
|
|
return R.success(200, "ok", out);
|
|
return R.success(200, "ok", out);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Operation(summary = "更新用户信息", description = "更新用户的头像、昵称、手机号、年龄、地址等")
|
|
|
@PostMapping(path = "/update_user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
@PostMapping(path = "/update_user_info", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
|
|
public R<?> updateUserInfo(@RequestBody(required = false) work.baiyun.chronicdiseaseapp.model.vo.UpdateUserInfoRequest req,
|
|
public R<?> updateUserInfo(@RequestBody(required = false) work.baiyun.chronicdiseaseapp.model.vo.UpdateUserInfoRequest req,
|
|
|
HttpServletRequest request) {
|
|
HttpServletRequest request) {
|