From d261f500431fdeea8d66c6f82fff76505a98df7a Mon Sep 17 00:00:00 2001 From: La123123 <617330105@qq.com> Date: Thu, 9 Apr 2026 10:13:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=97=E9=A4=90=E7=AE=A1=E7=90=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2/=E5=8F=82=E6=95=B0=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- im-admin-ui/src/api/im/chatPackage/types.ts | 14 +- .../src/views/im/chatPackage/index.vue | 141 ++++++++---------- .../dromara/im/domain/vo/ImChatPackageVo.java | 17 +++ .../impl/ImChatPackageServiceImpl.java | 18 ++- 4 files changed, 100 insertions(+), 90 deletions(-) diff --git a/im-admin-ui/src/api/im/chatPackage/types.ts b/im-admin-ui/src/api/im/chatPackage/types.ts index 1a7115c..5a9d6be 100644 --- a/im-admin-ui/src/api/im/chatPackage/types.ts +++ b/im-admin-ui/src/api/im/chatPackage/types.ts @@ -23,7 +23,6 @@ export interface ChatPackageVO { * 创建时间 */ createdTime: string; - } export interface ChatPackageForm extends BaseEntity { @@ -66,11 +65,9 @@ export interface ChatPackageForm extends BaseEntity { * 备注 */ remark?: string; - } export interface ChatPackageQuery extends PageQuery { - /** * 套餐名称 */ @@ -86,11 +83,8 @@ export interface ChatPackageQuery extends PageQuery { */ status?: number; - /** - * 日期范围参数 - */ - params?: any; + /** + * 日期范围参数 + */ + params?: any; } - - - diff --git a/im-admin-ui/src/views/im/chatPackage/index.vue b/im-admin-ui/src/views/im/chatPackage/index.vue index 3a8e51d..743b80a 100644 --- a/im-admin-ui/src/views/im/chatPackage/index.vue +++ b/im-admin-ui/src/views/im/chatPackage/index.vue @@ -7,9 +7,9 @@ - - - + + + @@ -25,30 +25,34 @@ - + - + @@ -59,25 +63,26 @@ - + - - + + - + + @@ -85,14 +90,9 @@ - + - + @@ -144,41 +144,26 @@ const initFormData: ChatPackageForm = { durationDays: undefined, status: undefined, sortOrder: undefined, - remark: undefined, -} + remark: undefined +}; const data = reactive>({ - form: {...initFormData}, + form: { ...initFormData }, queryParams: { pageNum: 1, pageSize: 10, packageName: undefined, packageContent: undefined, status: undefined, - params: { - } + params: {} }, rules: { - id: [ - { required: true, message: "主键ID不能为空", trigger: "blur" } - ], - packageName: [ - { required: true, message: "套餐名称不能为空", trigger: "blur" } - ], - packageContent: [ - { required: true, message: "套餐内容描述不能为空", trigger: "blur" } - ], - customerServiceNumber: [ - { required: true, message: "客服数量不能为空", trigger: "blur" } - ], - durationDays: [ - { required: true, message: "套餐持续时间不能为空", trigger: "blur" } - ], - status: [ - { required: true, message: "状态:0-禁用 1-启用不能为空", trigger: "change" } - ], - sortOrder: [ - { required: true, message: "排序不能为空", trigger: "blur" } - ], + id: [{ required: true, message: '主键ID不能为空', trigger: 'blur' }], + packageName: [{ required: true, message: '套餐名称不能为空', trigger: 'blur' }], + packageContent: [{ required: true, message: '套餐内容描述不能为空', trigger: 'blur' }], + customerServiceNumber: [{ required: true, message: '客服数量不能为空', trigger: 'blur' }], + durationDays: [{ required: true, message: '套餐持续时间不能为空', trigger: 'blur' }], + status: [{ required: true, message: '状态:0-禁用 1-启用不能为空', trigger: 'change' }], + sortOrder: [{ required: true, message: '排序不能为空', trigger: 'blur' }] } }); @@ -191,55 +176,55 @@ const getList = async () => { chatPackageList.value = res.rows; total.value = res.total; loading.value = false; -} +}; /** 取消按钮 */ const cancel = () => { reset(); dialog.visible = false; -} +}; /** 表单重置 */ const reset = () => { - form.value = {...initFormData}; + form.value = { ...initFormData }; chatPackageFormRef.value?.resetFields(); -} +}; /** 搜索按钮操作 */ const handleQuery = () => { queryParams.value.pageNum = 1; getList(); -} +}; /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value?.resetFields(); handleQuery(); -} +}; /** 多选框选中数据 */ const handleSelectionChange = (selection: ChatPackageVO[]) => { - ids.value = selection.map(item => item.id); + ids.value = selection.map((item) => item.id); single.value = selection.length != 1; multiple.value = !selection.length; -} +}; /** 新增按钮操作 */ const handleAdd = () => { reset(); dialog.visible = true; - dialog.title = "添加套餐"; -} + dialog.title = '添加套餐'; +}; /** 修改按钮操作 */ const handleUpdate = async (row?: ChatPackageVO) => { reset(); - const _id = row?.id || ids.value[0] + const _id = row?.id || ids.value[0]; const res = await getChatPackage(_id); Object.assign(form.value, res.data); dialog.visible = true; - dialog.title = "修改套餐"; -} + dialog.title = '修改套餐'; +}; /** 提交按钮 */ const submitForm = () => { @@ -247,32 +232,36 @@ const submitForm = () => { if (valid) { buttonLoading.value = true; if (form.value.id) { - await updateChatPackage(form.value).finally(() => buttonLoading.value = false); + await updateChatPackage(form.value).finally(() => (buttonLoading.value = false)); } else { - await addChatPackage(form.value).finally(() => buttonLoading.value = false); + await addChatPackage(form.value).finally(() => (buttonLoading.value = false)); } - proxy?.$modal.msgSuccess("操作成功"); + proxy?.$modal.msgSuccess('操作成功'); dialog.visible = false; await getList(); } }); -} +}; /** 删除按钮操作 */ const handleDelete = async (row?: ChatPackageVO) => { const _ids = row?.id || ids.value; - await proxy?.$modal.confirm('是否确认删除套餐编号为"' + _ids + '"的数据项?').finally(() => loading.value = false); + await proxy?.$modal.confirm('是否确认删除套餐编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false)); await delChatPackage(_ids); - proxy?.$modal.msgSuccess("删除成功"); + proxy?.$modal.msgSuccess('删除成功'); await getList(); -} +}; /** 导出按钮操作 */ const handleExport = () => { - proxy?.download('im/chatPackage/export', { - ...queryParams.value - }, `chatPackage_${new Date().getTime()}.xlsx`) -} + proxy?.download( + 'im/chatPackage/export', + { + ...queryParams.value + }, + `chatPackage_${new Date().getTime()}.xlsx` + ); +}; onMounted(() => { getList(); diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImChatPackageVo.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImChatPackageVo.java index 2f42158..d7e0a0b 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImChatPackageVo.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/domain/vo/ImChatPackageVo.java @@ -30,12 +30,29 @@ public class ImChatPackageVo implements Serializable { @Serial private static final long serialVersionUID = 1L; + private Long id; + /** * 套餐名称 */ @ExcelProperty(value = "套餐名称") private String packageName; + /** + * 套餐内容描述 + */ + private String packageContent; + + /** + * 排序 + */ + private Long sortOrder; + + /** + * 备注 + */ + private String remark; + /** * 客服数量 */ diff --git a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java index 9ac05f8..4e3e733 100644 --- a/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java +++ b/im-admin/ruoyi-im/src/main/java/org/dromara/im/service/impl/ImChatPackageServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.im.service.impl; +import cn.hutool.core.date.DateUtil; import com.baomidou.dynamic.datasource.annotation.DS; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; @@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.im.constant.ImConstant; import org.springframework.stereotype.Service; import org.dromara.im.domain.bo.ImChatPackageBo; @@ -90,11 +92,15 @@ public class ImChatPackageServiceImpl implements IImChatPackageService { public Boolean insertByBo(ImChatPackageBo bo) { ImChatPackage add = MapstructUtils.convert(bo, ImChatPackage.class); validEntityBeforeSave(add); - boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); + + if (add != null) { + add.setCreatedTime(DateUtil.parse(DateUtil.now())); + add.setUpdatedTime(DateUtil.parse(DateUtil.now())); + add.setCreatorId(LoginHelper.getUserId()); + add.setUpdaterId(LoginHelper.getUserId()); } - return flag; + + return baseMapper.insert(add) > 0; } /** @@ -107,6 +113,10 @@ public class ImChatPackageServiceImpl implements IImChatPackageService { public Boolean updateByBo(ImChatPackageBo bo) { ImChatPackage update = MapstructUtils.convert(bo, ImChatPackage.class); validEntityBeforeSave(update); + if (update != null) { + update.setUpdatedTime(DateUtil.parse(DateUtil.now())); + update.setUpdaterId(LoginHelper.getUserId()); + } return baseMapper.updateById(update) > 0; }