|
|
@@ -16,6 +16,8 @@ import work.baiyun.chronicdiseaseapp.service.TokenService;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
|
+import jakarta.servlet.http.HttpServletRequest;
|
|
|
+
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -79,4 +81,45 @@ public class WeChatController {
|
|
|
data.put("token", token);
|
|
|
return R.success(200, "ok", data);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 根据 token 返回当前用户信息(id, wx_openid, role, avatar, nickname, sex, phone, age, address)
|
|
|
+ * token 可从 Header("token") 或 POST JSON body 的 { "token": "..." } 中获取。
|
|
|
+ */
|
|
|
+ @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) {
|
|
|
+ String token = null;
|
|
|
+ if (request.getHeader("token") != null && !request.getHeader("token").isEmpty()) {
|
|
|
+ token = request.getHeader("token");
|
|
|
+ } else if (body != null && body.get("token") != null && !body.get("token").isEmpty()) {
|
|
|
+ token = body.get("token");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (token == null || token.isEmpty()) {
|
|
|
+ return R.fail(401, "Missing token");
|
|
|
+ }
|
|
|
+
|
|
|
+ Long userId = tokenService.validateToken(token);
|
|
|
+ if (userId == null) {
|
|
|
+ return R.fail(401, "Invalid or expired token");
|
|
|
+ }
|
|
|
+
|
|
|
+ UserInfo ui = userInfoMapper.selectById(userId);
|
|
|
+ if (ui == null) {
|
|
|
+ return R.fail(404, "User not found");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> out = new HashMap<>();
|
|
|
+ out.put("id", ui.getId());
|
|
|
+ out.put("wx_openid", ui.getWx_openid());
|
|
|
+ out.put("role", ui.getRole() != null ? ui.getRole().getCode() : null);
|
|
|
+ out.put("avatar", ui.getAvatar());
|
|
|
+ out.put("nickname", ui.getNickname());
|
|
|
+ out.put("sex", ui.getSex());
|
|
|
+ out.put("phone", ui.getPhone());
|
|
|
+ out.put("age", ui.getAge());
|
|
|
+ out.put("address", ui.getAddress());
|
|
|
+
|
|
|
+ return R.success(200, "ok", out);
|
|
|
+ }
|
|
|
}
|