Browse Source

修改网页内嵌指定客服

master
[yxf] 5 days ago
parent
commit
0d8037b406
  1. 10
      im-admin-ui/src/api/im/agent/index.ts
  2. 11
      im-admin-ui/src/api/im/user/customer.ts
  3. 15
      im-admin-ui/src/views/im/code/index.vue
  4. 12
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java
  5. 6
      im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImUserController.java
  6. 4
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java
  7. 4
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java
  8. 6
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java
  9. 15
      im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java

10
im-admin-ui/src/api/im/agent/index.ts

@ -33,9 +33,9 @@ export function getAgentFloatBallConfig(token: string): AxiosPromise<any> {
/** /**
* ID * ID
*/ */
export function getDefaultKefu(): AxiosPromise<any> { export function getDefaultCustomer(): AxiosPromise<any> {
return request({ return request({
url: '/im/agent/defaultKefu', url: '/im/agent/defaultCustomer',
method: 'get' method: 'get'
}); });
} }
@ -44,10 +44,10 @@ export function getDefaultKefu(): AxiosPromise<any> {
* ID * ID
* @param kefuId IDnull表示清除 * @param kefuId IDnull表示清除
*/ */
export function saveDefaultKefu(kefuId: number | null): AxiosPromise<any> { export function saveDefaultCustomer(kefuId: number | null): AxiosPromise<any> {
return request({ return request({
url: '/im/agent/saveDefaultKefu', url: '/im/agent/saveDefaultCustomer',
method: 'post', method: 'post',
data: { defaultKefuId: kefuId } data: { defaultCustomerId: kefuId }
}); });
} }

11
im-admin-ui/src/api/im/user/customer.ts

@ -16,6 +16,17 @@ export const listUser = (query?: UserQuery): AxiosPromise<UserVO[]> => {
}); });
}; };
/**
*
*/
export function listAllCustomer() {
return request({
url: '/im/user/listAllCustomer',
method: 'get',
});
}
/** /**
* *
*/ */

15
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 alink from './components/alink.vue';
import wangye from './components/wangye.vue'; import wangye from './components/wangye.vue';
import FloatBallSetting from './components/FloatBallSetting.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 type { FloatBallConfig } from './components/FloatBallSetting.vue';
import { getInfo } from '@/api/login'; 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 kaifa from './components/kaifa';
// import setting from './components/setting'; // import setting from './components/setting';
@ -124,18 +124,19 @@ async function fetchAgentToken() {
async function loadKefuList() { async function loadKefuList() {
try { try {
const res = await listUser(); const res = await listAllCustomer();
const data = (res as any)?.rows || []; // R<List<ImUserVo>> res.data
kefuList.value = data; kefuList.value = (res as any)?.data || [];
} catch (e) { } catch (e) {
console.error('获取客服列表失败', e); console.error('获取客服列表失败', e);
} }
} }
// ID // ID
async function loadDefaultKefu() { async function loadDefaultKefu() {
try { try {
const kefuId = await getDefaultKefu(); const kefuId = await getDefaultCustomer();
if (kefuId.data) { if (kefuId.data) {
selectedKefuId.value = kefuId.data; selectedKefuId.value = kefuId.data;
} }
@ -147,7 +148,7 @@ async function loadDefaultKefu() {
async function onKefuChange(val: number | '') { async function onKefuChange(val: number | '') {
try { try {
await saveDefaultKefu(val || null); await saveDefaultCustomer(val || null);
proxy?.$Message?.success('已保存'); proxy?.$Message?.success('已保存');
} catch (e) { } catch (e) {
console.error('保存默认客服失败', e); console.error('保存默认客服失败', e);

12
im-admin/ruoyi-im/src/main/java/org/dromara/im/controller/ImAgentController.java

@ -143,18 +143,18 @@ public class ImAgentController extends BaseController {
/** /**
* 获取默认客服ID * 获取默认客服ID
*/ */
@GetMapping("/defaultKefu") @GetMapping("/defaultCustomer")
public R<Long> getDefaultKefu() { public R<Long> getDefaultCustomer() {
return R.ok(imAgentService.getDefaultKefuId()); return R.ok(imAgentService.getDefaultCustomerId());
} }
/** /**
* 保存默认客服ID * 保存默认客服ID
*/ */
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/saveDefaultKefu") @PostMapping("/saveDefaultCustomer")
public R<Void> saveDefaultKefu(@RequestBody ImAgentBo bo) { public R<Void> saveDefaultCustomer(@RequestBody ImAgentBo bo) {
imAgentService.saveDefaultKefuId(bo.getDefaultKefuId()); imAgentService.saveDefaultCustomerId(bo.getDefaultKefuId());
return R.ok(); return R.ok();
} }

6
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); return userService.queryPageListCustomer(bo, pageQuery);
} }
@SaCheckPermission("im:user:list")
@GetMapping("/listAllCustomer")
public R<List<ImUserVo>> listAllCustomer() {
return R.ok(userService.queryAllCustomer());
}
/** /**
* 新增客服(isCustomer-2) * 新增客服(isCustomer-2)
*/ */

4
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImAgentService.java

@ -104,11 +104,11 @@ public interface IImAgentService {
/** /**
* 获取默认客服ID * 获取默认客服ID
*/ */
Long getDefaultKefuId(); Long getDefaultCustomerId();
/** /**
* 保存默认客服ID * 保存默认客服ID
*/ */
void saveDefaultKefuId(Long kefuId); void saveDefaultCustomerId(Long customerId);
} }

4
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/IImUserService.java

@ -150,4 +150,8 @@ public interface IImUserService {
*/ */
boolean isCustomerLimited(); boolean isCustomerLimited();
/**
* 查询所有客服不分页
*/
List<ImUserVo> queryAllCustomer();
} }

6
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImAgentServiceImpl.java

@ -260,7 +260,7 @@ public class ImAgentServiceImpl implements IImAgentService {
} }
@Override @Override
public Long getDefaultKefuId() { public Long getDefaultCustomerId() {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
if (userId == null || LoginHelper.isSuperAdmin()) { if (userId == null || LoginHelper.isSuperAdmin()) {
return null; return null;
@ -272,7 +272,7 @@ public class ImAgentServiceImpl implements IImAgentService {
} }
@Override @Override
public void saveDefaultKefuId(Long kefuId) { public void saveDefaultCustomerId(Long customerId) {
Long userId = LoginHelper.getUserId(); Long userId = LoginHelper.getUserId();
if (userId == null || LoginHelper.isSuperAdmin()) { if (userId == null || LoginHelper.isSuperAdmin()) {
throw new RuntimeException("无权限操作"); throw new RuntimeException("无权限操作");
@ -285,7 +285,7 @@ public class ImAgentServiceImpl implements IImAgentService {
} }
LambdaUpdateWrapper<ImAgent> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<ImAgent> wrapper = new LambdaUpdateWrapper<>();
wrapper.eq(ImAgent::getId, agent.getId()); wrapper.eq(ImAgent::getId, agent.getId());
wrapper.set(ImAgent::getDefaultKefuId, kefuId); wrapper.set(ImAgent::getDefaultKefuId, customerId);
baseMapper.update(null, wrapper); baseMapper.update(null, wrapper);
} }

15
im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImUserServiceImpl.java

@ -433,4 +433,19 @@ public class ImUserServiceImpl implements IImUserService {
//返回结果 达到极限返回true //返回结果 达到极限返回true
return nowCustomerCount >= limit; return nowCustomerCount >= limit;
} }
@Override
public List<ImUserVo> queryAllCustomer() {
LambdaQueryWrapper<ImUser> 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);
}
} }

Loading…
Cancel
Save