将请求
login.vue
<template>
<view>
<image src="../../static/img/152x152.png" class="logo" mode=""></image>
<!--open-type='getUserInfo' 一定要写这个,不让获取不到微信用户的信息 -->
<button class="btn" @tap="handleTap" open-type='getUserInfo'>立即前往</button>
</view>
</template>
<script>
export default {
data() {
return {
};
},
methods:{
handleTap:function(){
let ref=this;
//uni.login 获取微信平台返回的code
uni.login({
success:function(resp){
// console.log(resp)
let code=resp.code;
//获取微信用户的信息 uni.getUserInfo
uni.getUserInfo({
success:function(resp){
// console.log(resp)
let rawData = JSON.parse(resp.rawData);
let nickName = rawData.nickName; //昵称
let avatarUrl = rawData.avatarUrl; //头像
//发起ajax请求
uni.request({
//这里是全局变量,全局变量定义在main.js文件中
url: ref.url.login,
method:"post",
data:{
"code":code,
"nickName":nickName,
"photo":avatarUrl
},
success:function(resp){
let token=resp.data.data.token;
let expire=resp.data.data.expire;
//保存到storage,无论是哪个页面都可以访问到,storage里存的数据是全局的
uni.setStorageSync("token",token);
uni.setStorageSync("expire",expire);
console.log("================");
console.log(token);
console.log(expire);
//页面跳转
uni.switchTab({
url:"/pages/index/index"
})
}
})
}
})
}
})
}
},
onLoad:function(){
//检验系统的版本
var ref = this;
uni.getSystemInfo({
success: function(res) {
let OS = null;
if (res.platform == "devtools") {
OS = "PC"
} else if (res.platform == "ios") {
OS = "iOS"
} else if (res.platform == "android") {
OS = "安卓"
}
// console.log(OS)
uni.setStorageSync("OS", OS);
}
})
}
}
</script>
<style lang="less">
@import url("login.less");
</style>
UserServiceImpl.java
@Override
public Map<String, Object> wxLogin(WechatLoginDTO dto) {
HashMap map = new HashMap();
map.put("appid", appId); //app_id
map.put("secret", appSecret); //app_secret
map.put("js_code", dto.getCode()); //微信code
map.put("grant_type", "authorization_code"); // 默认参数
String response = HttpUtil.post(UrlConstant.WECHAT_LOGIN, map);
JSONObject json = JSONUtil.parseObj(response);
String openId = json.get("openid", String.class);
String sessionKey = json.get("session_key", String.class);
// System.out.println(openId);
// System.out.println(sessionKey);
if (openId == null || openId.length() == 0) {
throw new RenException("open_id不存在");
}
UserEntity user = new UserEntity();
user.setOpenId(openId);
QueryWrapper wrapper = new QueryWrapper();
wrapper.setEntity(user);
int count = baseDao.selectCount(wrapper);
System.out.println(count);
if (count == 0) {
// Snowflake snowflake=new Snowflake();
user = new UserEntity();
user.setId(IdWorker.getId());
user.setOpenId(openId);
user.setNickName(dto.getNickName());
user.setPhoto(dto.getPhoto());
baseDao.insert(user);
}
user = new UserEntity();
user.setOpenId(openId);
wrapper = new QueryWrapper(user);
user = baseDao.selectOne(wrapper);
//获取登录token
TokenEntity tokenEntity = tokenService.createToken(user.getId());
Map<String, Object> map2 = new HashMap<>(2);
map2.put("token", tokenEntity.getToken());
map2.put("expire", tokenEntity.getExpireDate().getTime() - System.currentTimeMillis());
return map2;
}