diff --git a/im-admin-ui/src/api/im/agent/index.ts b/im-admin-ui/src/api/im/agent/index.ts index 5ccc9d7..760b499 100644 --- a/im-admin-ui/src/api/im/agent/index.ts +++ b/im-admin-ui/src/api/im/agent/index.ts @@ -33,9 +33,9 @@ export function getAgentFloatBallConfig(token: string): AxiosPromise { /** * 获取默认客服ID */ -export function getDefaultKefu(): AxiosPromise { +export function getDefaultCustomer(): AxiosPromise { return request({ - url: '/im/agent/defaultKefu', + url: '/im/agent/defaultCustomer', method: 'get' }); } @@ -44,10 +44,10 @@ export function getDefaultKefu(): AxiosPromise { * 保存默认客服ID * @param kefuId 客服ID,传null表示清除 */ -export function saveDefaultKefu(kefuId: number | null): AxiosPromise { +export function saveDefaultCustomer(kefuId: number | null): AxiosPromise { return request({ - url: '/im/agent/saveDefaultKefu', + url: '/im/agent/saveDefaultCustomer', method: 'post', - data: { defaultKefuId: kefuId } + data: { defaultCustomerId: kefuId } }); } diff --git a/im-admin-ui/src/api/im/user/customer.ts b/im-admin-ui/src/api/im/user/customer.ts index ba51f90..b3a9ce9 100644 --- a/im-admin-ui/src/api/im/user/customer.ts +++ b/im-admin-ui/src/api/im/user/customer.ts @@ -16,6 +16,17 @@ export const listUser = (query?: UserQuery): AxiosPromise => { }); }; +/** + * 获取全部客服 + */ +export function listAllCustomer() { + return request({ + url: '/im/user/listAllCustomer', + method: 'get', + }); +} + + /** * 新增客服 */ diff --git a/im-admin-ui/src/views/im/code/index.vue b/im-admin-ui/src/views/im/code/index.vue index 1b890c2..1de1b11 100644 --- a/im-admin-ui/src/views/im/code/index.vue +++ b/im-admin-ui/src/views/im/code/index.vue @@ -54,10 +54,10 @@ import { ref, computed, onMounted, getCurrentInstance } from 'vue'; import alink from './components/alink.vue'; import wangye from './components/wangye.vue'; import FloatBallSetting from './components/FloatBallSetting.vue'; -import { listUser } from '@/api/im/user/customer'; +import { listUser, listAllCustomer } from '@/api/im/user/customer'; import type { FloatBallConfig } from './components/FloatBallSetting.vue'; import { getInfo } from '@/api/login'; -import { getDefaultKefu, saveDefaultKefu } from '@/api/im/agent'; +import { getDefaultCustomer, saveDefaultCustomer } from '@/api/im/agent'; // import kaifa from './components/kaifa'; // import setting from './components/setting'; @@ -124,18 +124,19 @@ async function fetchAgentToken() { async function loadKefuList() { try { - const res = await listUser(); - const data = (res as any)?.rows || []; - kefuList.value = data; + const res = await listAllCustomer(); + // 新接口返回的是 R>,结构是 res.data + kefuList.value = (res as any)?.data || []; } catch (e) { console.error('获取客服列表失败', e); } } + // 加载已保存的默认客服ID async function loadDefaultKefu() { try { - const kefuId = await getDefaultKefu(); + const kefuId = await getDefaultCustomer(); if (kefuId.data) { selectedKefuId.value = kefuId.data; } @@ -147,7 +148,7 @@ async function loadDefaultKefu() { async function onKefuChange(val: number | '') { try { - await saveDefaultKefu(val || null); + await saveDefaultCustomer(val || null); proxy?.$Message?.success('已保存'); } catch (e) { console.error('保存默认客服失败', e); diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java index 31a67be..b6f629f 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java @@ -143,18 +143,18 @@ public class ImAgentController extends BaseController { /** * 获取默认客服ID */ - @GetMapping("/defaultKefu") - public R getDefaultKefu() { - return R.ok(imAgentService.getDefaultKefuId()); + @GetMapping("/defaultCustomer") + public R getDefaultCustomer() { + return R.ok(imAgentService.getDefaultCustomerId()); } /** * 保存默认客服ID */ @RepeatSubmit() - @PostMapping("/saveDefaultKefu") - public R saveDefaultKefu(@RequestBody ImAgentBo bo) { - imAgentService.saveDefaultKefuId(bo.getDefaultKefuId()); + @PostMapping("/saveDefaultCustomer") + public R saveDefaultCustomer(@RequestBody ImAgentBo bo) { + imAgentService.saveDefaultCustomerId(bo.getDefaultKefuId()); return R.ok(); } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java index 0319c8a..918225f 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java @@ -162,6 +162,12 @@ public class ImUserController extends BaseController { return userService.queryPageListCustomer(bo, pageQuery); } + @SaCheckPermission("im:user:list") + @GetMapping("/listAllCustomer") + public R> listAllCustomer() { + return R.ok(userService.queryAllCustomer()); + } + /** * 新增客服(isCustomer-2) */ diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java index b9702ba..99438f3 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java @@ -104,11 +104,11 @@ public interface IImAgentService { /** * 获取默认客服ID */ - Long getDefaultKefuId(); + Long getDefaultCustomerId(); /** * 保存默认客服ID */ - void saveDefaultKefuId(Long kefuId); + void saveDefaultCustomerId(Long customerId); } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java index e1148dc..40c0864 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java @@ -150,4 +150,8 @@ public interface IImUserService { */ boolean isCustomerLimited(); + /** + * 查询所有客服(不分页) + */ + List queryAllCustomer(); } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java index 91c834e..48d71e1 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java @@ -260,7 +260,7 @@ public class ImAgentServiceImpl implements IImAgentService { } @Override - public Long getDefaultKefuId() { + public Long getDefaultCustomerId() { Long userId = LoginHelper.getUserId(); if (userId == null || LoginHelper.isSuperAdmin()) { return null; @@ -272,7 +272,7 @@ public class ImAgentServiceImpl implements IImAgentService { } @Override - public void saveDefaultKefuId(Long kefuId) { + public void saveDefaultCustomerId(Long customerId) { Long userId = LoginHelper.getUserId(); if (userId == null || LoginHelper.isSuperAdmin()) { throw new RuntimeException("无权限操作"); @@ -285,7 +285,7 @@ public class ImAgentServiceImpl implements IImAgentService { } LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(ImAgent::getId, agent.getId()); - wrapper.set(ImAgent::getDefaultKefuId, kefuId); + wrapper.set(ImAgent::getDefaultKefuId, customerId); baseMapper.update(null, wrapper); } diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java index e81c457..6f134ba 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java @@ -433,4 +433,19 @@ public class ImUserServiceImpl implements IImUserService { //返回结果 达到极限返回true return nowCustomerCount >= limit; } + + @Override + public List queryAllCustomer() { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.eq(ImUser::getIsCustomer, 2); + + if (!LoginHelper.isSuperAdmin()) { + LambdaQueryWrapperHelper.appendToken(wrapper, ImUser::getUniqueToken); + } + + wrapper.select(ImUser::getId, ImUser::getUserName, ImUser::getNickName, ImUser::getHeadImage, ImUser::getHeadImageThumb); + wrapper.orderByDesc(ImUser::getId); + return baseMapper.selectVoList(wrapper); + } + }