diff --git a/api-interface/itmk-base-parent/dependency_tree.txt b/api-interface/itmk-base-parent/dependency_tree.txt
new file mode 100644
index 0000000..4e2785a
Binary files /dev/null and b/api-interface/itmk-base-parent/dependency_tree.txt differ
diff --git a/api-interface/itmk-base-parent/itmk-base-web/pom.xml b/api-interface/itmk-base-parent/itmk-base-web/pom.xml
index bc07b76..46c4e1a 100644
--- a/api-interface/itmk-base-parent/itmk-base-web/pom.xml
+++ b/api-interface/itmk-base-parent/itmk-base-web/pom.xml
@@ -69,6 +69,12 @@
com.github.penggle
kaptcha
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.13
+
diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/config/RestTemplateConfig.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/config/RestTemplateConfig.java
new file mode 100644
index 0000000..b2b0273
--- /dev/null
+++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/config/RestTemplateConfig.java
@@ -0,0 +1,14 @@
+package com.itmk.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.client.RestTemplate;
+
+@Configuration
+public class RestTemplateConfig {
+
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+}
\ No newline at end of file
diff --git a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java
index 181c278..c535165 100644
--- a/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java
+++ b/api-interface/itmk-base-parent/itmk-base-web/src/main/java/com/itmk/web/wxapi/controller/WxLoginController.java
@@ -5,55 +5,74 @@ import com.itmk.web.wxapi.entity.Code2Session;
import com.itmk.web.wxapi.entity.LoginParm;
import com.itmk.web.wxapi.entity.LoginVo;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.Map;
+import org.springframework.web.client.RestTemplate;
@Slf4j
@RestController
@RequestMapping("/wxapi/user")
public class WxLoginController {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
@Value("${Wechat.Applets.appId}")
private String appId;
+
@Value("${Wechat.Applets.appSecret}")
private String appSecret;
+
//小程序登录
@PostMapping("/wxLogin")
public ResultVo wxLogin(@RequestBody LoginParm parm){
String code = parm.getCode();
log.info("wxlogin - code: " + code);
- String url = "https://api.weixin.qq.com/sns/jscode2session";
- Map param = new HashMap<>();
- param.put("appid", appId);
- param.put("secret", appSecret);
- param.put("js_code", code);
- param.put("grant_type", "authorization_code");
- log.info("param: " + param);
+
try {
- //发送请求
- String wxResult = HttpClientUtil.doGet(url, param);
+ // 构建请求URL
+ String url = "https://api.weixin.qq.com/sns/jscode2session" +
+ "?appid=" + appId +
+ "&secret=" + appSecret +
+ "&js_code=" + code +
+ "&grant_type=authorization_code";
+
+ log.info("Request URL: " + url);
+
+ // 使用 RestTemplate 发送请求
+ ResponseEntity response = restTemplate.getForEntity(url, String.class);
+ String wxResult = response.getBody();
+
+ log.info("WeChat API response: " + wxResult);
+
//转换参数
Code2Session userJson = FastJsonTools.getJson(wxResult, Code2Session.class);
log.info("userJson: " + userJson);
- if(userJson == null) throw new BusinessException(500,"小程序获取open失败");
+
+ if(userJson == null || userJson.getOpenid() == null) {
+ throw new BusinessException(500,"小程序获取open失败");
+ }
+
String openid = userJson.getOpenid();
String sessionKey = userJson.getSession_key();
log.info("openid: " + openid);
log.info("sessionKey: " + sessionKey);
+
LoginVo vo = new LoginVo();
vo.setOpenid(openid);
vo.setSessionKey(sessionKey);
+
return ResultUtils.success("获取成功",vo);
} catch (Exception e) {
e.printStackTrace();
- log.error(String.format("WxLoginController.wxLogin Error", e));
+ log.error("WxLoginController.wxLogin Error", e);
+ return ResultUtils.error("小程序获取open失败: " + e.getMessage());
}
- return ResultUtils.error("小程序获取open失败");
}
}
\ No newline at end of file
diff --git a/order-app/src/pages/mine/mine.vue b/order-app/src/pages/mine/mine.vue
index ec65605..a9acedc 100644
--- a/order-app/src/pages/mine/mine.vue
+++ b/order-app/src/pages/mine/mine.vue
@@ -31,15 +31,33 @@
} from '@dcloudio/uni-app';
import {
ref,
+<<<<<<< HEAD
+ onMounted
+=======
getCurrentInstance
+>>>>>>> 68b2157c4343ab2af362312b5f64deb4e53904e3
} from 'vue'
import {
userLogin
} from '../../api/user.js'
//昵称
- const nickName = ref('大幕孤烟直')
+ const nickName = ref('微信用户')
//头像
const avatarUrl = ref('/static/user.jpg')
+<<<<<<< HEAD
+ // 页面加载时从缓存读取用户信息
+ onMounted(() => {
+ const storedAvatar = uni.getStorageSync('avatarUrl')
+ const storedNickName = uni.getStorageSync('nickName')
+
+ if (storedAvatar && storedNickName) {
+ nickName.value = storedNickName
+ avatarUrl.value = storedAvatar
+ console.log('从缓存加载用户信息:', storedNickName, storedAvatar)
+ }
+ })
+
+=======
const onChooseAvatar = async (e) => {
console.log(e)
avatarUrl.value = e.detail.avatarUrl
@@ -65,25 +83,112 @@
})
// nickName.value = e.detail.nickName
}
+>>>>>>> 68b2157c4343ab2af362312b5f64deb4e53904e3
//获取头像点击事件
const getUserInfo = () => {
- console.log('获取头像')
- if (uni.getStorageSync('avatarUrl') && uni.getStorageSync('nickName')) {
- nickName.value = uni.getStorageSync('nickName')
- avatarUrl.value = uni.getStorageSync('avatarUrl')
- } else {
- uni.getUserProfile({
- desc: '用于头像昵称展示', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
- success: (res) => {
- console.log(res)
- nickName.value = res.userInfo.nickName
- avatarUrl.value = res.userInfo.avatarUrl
- uni.setStorageSync('avatarUrl', res.userInfo.avatarUrl);
- uni.setStorageSync('nickName', res.userInfo.nickName);
+ console.log('获取用户信息')
+
+ // 检查是否已授权
+ uni.getSetting({
+ success: (res) => {
+ if (res.authSetting['scope.userInfo']) {
+ // 显示加载提示
+ uni.showLoading({
+ title: '获取用户信息中...'
+ })
+ // 已授权,直接获取用户信息
+ uni.getUserInfo({
+ success: (res) => {
+ console.log('已授权用户信息:', res)
+ // 确保使用正确的数据路径
+ const userInfo = res.userInfo || {}
+ nickName.value = userInfo.nickName || '未知用户'
+
+ // 处理头像URL,添加时间戳避免缓存
+ let avatar = userInfo.avatarUrl || '/static/user.jpg'
+ if (avatar !== '/static/user.jpg') {
+ // 添加时间戳参数避免缓存
+ avatar += (avatar.includes('?') ? '&' : '?') + 't=' +
+ new Date().getTime()
+ }
+ avatarUrl.value = avatar
+
+ // 存储到本地
+ uni.setStorageSync('avatarUrl', avatar);
+ uni.setStorageSync('nickName', nickName.value);
+
+ console.log('更新后的用户信息:', nickName.value, avatarUrl.value)
+ // 显示成功提示
+ uni.showToast({
+ title: '信息更新成功',
+ icon: 'success'
+ })
+ },
+ fail: (err) => {
+ uni.hideLoading()
+ console.log('获取用户信息失败:', err)
+ uni.showToast({
+ title: '获取信息失败',
+ icon: 'none'
+ })
+ }
+ })
+ } else {
+ // 未授权,弹出授权窗口
+ uni.showModal({
+ title: '用户信息授权',
+ content: '需要获取您的头像和昵称',
+ success: (res) => {
+ if (res.confirm) {
+ // 用户点击确定
+ uni.getUserProfile({
+ desc: '用于完善会员资料',
+ success: (res) => {
+ console.log('授权成功:', res)
+ // 确保使用正确的数据路径
+ const userInfo = res.userInfo || {}
+ nickName.value = userInfo.nickName ||
+ '未知用户'
+
+ // 处理头像URL,添加时间戳避免缓存
+ let avatar = userInfo.avatarUrl ||
+ '/static/user.jpg'
+ if (avatar !== '/static/user.jpg') {
+ // 添加时间戳参数避免缓存
+ avatar += (avatar.includes('?') ? '&' :
+ '?') + 't=' + new Date()
+ .getTime()
+ }
+ avatarUrl.value = avatar
+
+ // 存储到本地
+ uni.setStorageSync('avatarUrl', avatar);
+ uni.setStorageSync('nickName', nickName
+ .value);
+
+ console.log('更新后的用户信息:', nickName.value,
+ avatarUrl.value)
+ },
+ fail: (err) => {
+ console.log('授权失败:', err)
+ uni.showToast({
+ title: '授权失败',
+ icon: 'none'
+ })
+ }
+ })
+ }
+ }
+ })
}
- })
- }
+ },
+ fail: (err) => {
+ console.log('检查授权设置失败:', err)
+ }
+ })
}
+<<<<<<< HEAD
+=======
//跳转详情
const toOrder = () => {
getUserInfo()
@@ -96,6 +201,7 @@
userLogin()
getUserInfo()
})
+>>>>>>> 68b2157c4343ab2af362312b5f64deb4e53904e3