Browse Source

修改免登录

master
[yxf] 1 day ago
parent
commit
eea37d43a7
  1. 26
      im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java
  2. 22
      im-uniapp/App.vue
  3. 62
      im-uniapp/pages.json
  4. 8
      im-uniapp/pages/chat/chat-box.vue
  5. 5
      im-uniapp/pages/chat/chat.vue
  6. 53
      im-uniapp/pages/login/login.vue

26
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@ -87,6 +87,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override @Override
public LoginVO login(LoginDTO dto) { public LoginVO login(LoginDTO dto) {
log.info("【测试】前端传的IP:{}", dto.getIp());
// 生成游客唯一标识UUID // 生成游客唯一标识UUID
String guestUuid = UUID.randomUUID().toString(); String guestUuid = UUID.randomUUID().toString();
@ -96,21 +97,26 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
// 创建游客用户记录 // 创建游客用户记录
User guestUser = new User(); User guestUser = new User();
guestUser.setUserName(guestUserName); guestUser.setUserName(guestUserName);
guestUser.setNickName(guestUserName); // 默认昵称为“游客” guestUser.setNickName(guestUserName);
guestUser.setPassword(""); // 游客无需密码,可为空 guestUser.setPassword("");
guestUser.setUuid(guestUuid); // 保存唯一标识 guestUser.setUuid(guestUuid);
// guestUser.setCreateTime(LocalDateTime.now()); // ========== 先设置IP ==========
guestUser.setLastLoginIp(dto.getIp());
// 保存到数据库 // 保存到数据库
this.save(guestUser); this.save(guestUser);
Long customerServiceId = this.getRandomCustomerServiceId();
// ========== 正确更新 IP 和地址 ==========
// if(StrUtil.isNotBlank(dto.getIp())){
// this.updateIpAndAddress(guestUser);
// }
Long customerServiceId = this.getRandomCustomerServiceId();
// 创建会话信息
UserSession guestSession = new UserSession(); UserSession guestSession = new UserSession();
guestSession.setUserId(guestUser.getId()); guestSession.setUserId(guestUser.getId());
guestSession.setUserName(guestUser.getUserName()); guestSession.setUserName(guestUser.getUserName());
guestSession.setTerminal(dto.getTerminal()); guestSession.setTerminal(dto.getTerminal());
// guestSession.setUuid(guestUuid);
// 生成Token // 生成Token
String guestJson = JSON.toJSONString(guestSession); String guestJson = JSON.toJSONString(guestSession);
@ -134,12 +140,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
vo.setRefreshToken(refreshToken); vo.setRefreshToken(refreshToken);
vo.setRefreshTokenExpiresIn(jwtProperties.getRefreshTokenExpireIn()); vo.setRefreshTokenExpiresIn(jwtProperties.getRefreshTokenExpireIn());
vo.setCustomerServiceId(customerServiceId == null ? -1 : customerServiceId); vo.setCustomerServiceId(customerServiceId == null ? -1 : customerServiceId);
// 设置当前登录的游客用户信息
vo.setUser(guestUser); vo.setUser(guestUser);
log.info("游客登录成功,userId:{}, uuid:{}", guestUser.getId(), guestUuid); log.info("游客登录成功,userId:{}, uuid:{}, ip:{}", guestUser.getId(), guestUuid, dto.getIp());
return vo; return vo;
} }
public Long getRandomCustomerServiceId() { public Long getRandomCustomerServiceId() {
LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery();
// 条件:is_customer = 2 表示客服 // 条件:is_customer = 2 表示客服
@ -154,6 +161,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
return customerService == null ? null : customerService.getId(); return customerService == null ? null : customerService.getId();
} }
@Override @Override
public LoginVO loginCustom(LoginDTO dto) { public LoginVO loginCustom(LoginDTO dto) {
User user = this.findUserByUserName(dto.getUserName()); User user = this.findUserByUserName(dto.getUserName());

22
im-uniapp/App.vue

@ -471,12 +471,13 @@ export default {
// uni.switchTab({ // uni.switchTab({
// url: "/pages/chat/chat" // url: "/pages/chat/chat"
// }) // })
uni.navigateTo({
url: "/pages/chat/chat-box?chatIdx=0"
})
// #endif // #endif
// //
this.init(); this.init();
uni.navigateTo({
url: "/pages/chat/chat-box?chatIdx=0"
})
this.closeSplashscreen(0); this.closeSplashscreen(0);
}).catch(() => { }).catch(() => {
// //
@ -484,6 +485,21 @@ export default {
url: "/pages/login/login" url: "/pages/login/login"
}) })
}) })
this.$nextTick(() => {
const btn = document.querySelector('.btn-send');
if (btn) {
console.log('按钮找到:', btn);
//
const listeners = getEventListeners?.(btn);
console.log('按钮事件监听器:', listeners);
//
btn.addEventListener('click', (e) => {
console.log('原生点击事件触发');
this.sendTextMessage();
});
}
});
} }
} }
</script> </script>

62
im-uniapp/pages.json

@ -79,36 +79,36 @@
"navigationBarBackgroundColor": "#f7f7f7", "navigationBarBackgroundColor": "#f7f7f7",
"backgroundColor": "#f7f7f7" "backgroundColor": "#f7f7f7"
}, },
"tabBar": { // "tabBar": {
"color": "#000000", // "color": "#000000",
"selectedColor": "#587ff0", // "selectedColor": "#587ff0",
"borderStyle": "black", // "borderStyle": "black",
"backgroundColor": "#ffffff", // "backgroundColor": "#ffffff",
"list": [{ // "list": [{
"pagePath": "pages/chat/chat", // "pagePath": "pages/chat/chat",
"iconPath": "static/tab/chat.png", // "iconPath": "static/tab/chat.png",
"selectedIconPath": "static/tab/chat_active.png", // "selectedIconPath": "static/tab/chat_active.png",
"text": "消息" // "text": "消息"
}, // },
{ // {
"pagePath": "pages/friend/friend", // "pagePath": "pages/friend/friend",
"iconPath": "static/tab/friend.png", // "iconPath": "static/tab/friend.png",
"selectedIconPath": "static/tab/friend_active.png", // "selectedIconPath": "static/tab/friend_active.png",
"text": "好友" // "text": "好友"
}, // },
{ // {
"pagePath": "pages/group/group", // "pagePath": "pages/group/group",
"iconPath": "static/tab/group.png", // "iconPath": "static/tab/group.png",
"selectedIconPath": "static/tab/group_active.png", // "selectedIconPath": "static/tab/group_active.png",
"text": "群聊" // "text": "群聊"
}, // },
{ // {
"pagePath": "pages/mine/mine", // "pagePath": "pages/mine/mine",
"iconPath": "static/tab/mine.png", // "iconPath": "static/tab/mine.png",
"selectedIconPath": "static/tab/mine_active.png", // "selectedIconPath": "static/tab/mine_active.png",
"text": "我的" // "text": "我的"
} // }
] // ]
}, // },
"uniIdRouter": {} "uniIdRouter": {}
} }

8
im-uniapp/pages/chat/chat-box.vue

@ -1,6 +1,6 @@
<template> <template>
<view class="page chat-box" id="chatBox"> <view class="page chat-box" id="chatBox">
<nav-bar back more @more="onShowMore">{{ title }}</nav-bar> <nav-bar>{{ title }}</nav-bar>
<view class="chat-main-box" :style="{height: chatMainHeight+'px'}"> <view class="chat-main-box" :style="{height: chatMainHeight+'px'}">
<view class="chat-message" @click="switchChatTabBox('none')"> <view class="chat-message" @click="switchChatTabBox('none')">
<scroll-view class="scroll-box" scroll-y="true" upper-threshold="200" @scrolltoupper="onScrollToTop" <scroll-view class="scroll-box" scroll-y="true" upper-threshold="200" @scrolltoupper="onScrollToTop"
@ -46,7 +46,7 @@
<view v-if="isEmpty" class="iconfont icon-add" @click="onShowToolsChatTab()"> <view v-if="isEmpty" class="iconfont icon-add" @click="onShowToolsChatTab()">
</view> </view>
<button v-if="!isEmpty || atUserIds.length" class="btn-send" type="primary" <button v-if="!isEmpty || atUserIds.length" class="btn-send" type="primary"
@touchend.prevent="sendTextMessage()" size="mini">发送</button> @click="sendTextMessage()" size="mini">发送</button>
</view> </view>
</view> </view>
<view class="chat-tab-bar"> <view class="chat-tab-bar">
@ -301,10 +301,10 @@ export default {
if (op.insert.image) { if (op.insert.image) {
// emo // emo
sendText += `#${op.attributes.alt};` sendText += `#${op.attributes.alt};`
} else( } else{
// //
sendText += op.insert sendText += op.insert
) }
}) })
// //
sendText = sendText.trim(); sendText = sendText.trim();

5
im-uniapp/pages/chat/chat.vue

@ -1,5 +1,5 @@
<template> <template>
<view class="tab-page"> <!-- <view class="tab-page">
<nav-bar search @search="onSearch()">消息</nav-bar> <nav-bar search @search="onSearch()">消息</nav-bar>
<view v-if="loading" class="chat-loading"> <view v-if="loading" class="chat-loading">
<custom-loading :size="50" :mask="false"> <custom-loading :size="50" :mask="false">
@ -31,7 +31,7 @@
</long-press-menu> </long-press-menu>
</view> </view>
</scroll-view> </scroll-view>
</view> </view> -->
</template> </template>
<script> <script>
@ -130,6 +130,7 @@ export default {
this.refreshUnreadBadge(); this.refreshUnreadBadge();
} }
}, },
onShow() { onShow() {
this.refreshUnreadBadge(); this.refreshUnreadBadge();
} }

53
im-uniapp/pages/login/login.vue

@ -23,33 +23,30 @@ export default {
} }
}, },
methods: { methods: {
autoLogin() { async autoLogin() {
if (GLOBAL_AUTO_LOGIN_LOCK) return; if (GLOBAL_AUTO_LOGIN_LOCK) return;
GLOBAL_AUTO_LOGIN_LOCK = true; GLOBAL_AUTO_LOGIN_LOCK = true;
// //
// const loginInfo = uni.getStorageSync("loginInfo");
// // //
const loginInfo = uni.getStorageSync("loginInfo"); // if (loginInfo) {
// const userName = uni.getStorageSync("userName") || ""; // try {
// const password = uni.getStorageSync("password") || ""; // // IM
// getApp().$vm.init();
// getApp().$vm.unloadStore();
// // uni.reLaunch({
if (loginInfo) { // url: "/pages/chat/chat-box?chatIdx=0"
uni.navigateTo({ // });
url: "/pages/chat/chat-box?chatIdx=0" // } catch (err) {
}) // console.log("", err);
return; // }
} // return;
this.getIp(); // }
//
// if (!userName || !password) {
// console.log("");
// return;
// }
// await this.getIp();
// this.dataForm.userName = userName;
// this.dataForm.password = password;
this.$http({ this.$http({
url: '/login', url: '/login',
@ -60,6 +57,7 @@ export default {
uni.setStorageSync("loginInfo", loginInfo); uni.setStorageSync("loginInfo", loginInfo);
getApp().$vm.init() getApp().$vm.init()
getApp().$vm.unloadStore();
this.$http({ this.$http({
url: "/friend/add?friendId=" + loginInfo.customerServiceId, url: "/friend/add?friendId=" + loginInfo.customerServiceId,
method: "POST" method: "POST"
@ -72,20 +70,17 @@ export default {
delete: false delete: false
} }
this.friendStore.addFriend(friend); this.friendStore.addFriend(friend);
uni.navigateTo({ uni.reLaunch({
url: "/pages/chat/chat-box?chatIdx=0" url: "/pages/chat/chat-box?chatIdx=0"
}) });
}) })
getApp().$vm.unloadStore();
}).catch(err => { }).catch(err => {
console.log("自动登录失败", err); console.log("自动登录失败", err);
}); });
// uni.navigateTo({ url: "/pages/chat/chat-box?chatIdx=0" });
}, },
async getIp() { getIp() {
// ip // ip
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
uni.request({ uni.request({

Loading…
Cancel
Save