From df998a061e22b13297e02eee97e2418e4bbeaa1a Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 23 Oct 2023 10:25:57 +0800
Subject: [PATCH] 版本管理

---
 src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java             |    4 
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java |   26 +++
 src/main/java/cc/mrbird/febs/mall/entity/ChatVersion.java                |   43 ++++++
 src/main/java/cc/mrbird/febs/mall/mapper/ChatVersionMapper.java          |    7 +
 src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java         |    4 
 src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java     |   27 +++
 src/main/java/cc/mrbird/febs/mall/vo/AdminVersionVo.java                 |   20 ++
 src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java    |   21 ++
 src/main/resources/templates/febs/views/modules/chat/versionEdit.html    |  112 ++++++++++++++++
 src/main/resources/templates/febs/views/modules/chat/versionList.html    |  109 +++++++++++++++
 src/main/resources/mapper/modules/ChatUserMapper.xml                     |   13 +
 11 files changed, 377 insertions(+), 9 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
index 3f31982..d4bd762 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminChatController.java
@@ -11,6 +11,7 @@
 import cc.mrbird.febs.mall.service.IAdminChatService;
 import cc.mrbird.febs.mall.vo.AdminGroupInfoVo;
 import cc.mrbird.febs.mall.vo.AdminRegisterMemberVo;
+import cc.mrbird.febs.mall.vo.AdminVersionVo;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.validation.annotation.Validated;
@@ -206,11 +207,20 @@
     }
 
     /**
-     * 会员充值
+     * 群组管理
      */
     @GetMapping("groupList")
     public FebsResponse groupList(ChatUser chatUser, QueryRequest request) {
         Map<String, Object> data = getDataTable(iAdminChatService.getGroupList(chatUser, request));
+        return new FebsResponse().success().data(data);
+    }
+
+    /**
+     * 版本管理
+     */
+    @GetMapping("versionTable")
+    public FebsResponse versionTable(ChatUser chatUser, QueryRequest request) {
+        Map<String, Object> data = getDataTable(iAdminChatService.getVersionList(chatUser, request));
         return new FebsResponse().success().data(data);
     }
 
@@ -268,6 +278,15 @@
     public FebsResponse updateGroupInfo(AdminGroupInfoVo adminGroupInfoVo) {
         return iAdminChatService.updateGroupInfo(adminGroupInfoVo);
     }
+
+    /**
+     * 版本管理-更新
+     */
+    @PostMapping("updateVersionInfo")
+    @ControllerEndpoint(operation = "版本管理-更新", exceptionMessage = "操作失败")
+    public FebsResponse updateVersionInfo(AdminVersionVo adminVersionVo) {
+        return iAdminChatService.updateVersionInfo(adminVersionVo);
+    }
     /**
      * 添加会员
      */
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java b/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
index 3e61cde..94ad52e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/ViewChatController.java
@@ -12,10 +12,7 @@
 import cc.mrbird.febs.mall.mapper.ChatUserMapper;
 import cc.mrbird.febs.mall.mapper.DataDictionaryMapper;
 import cc.mrbird.febs.mall.service.IAdminMallMemberService;
-import cc.mrbird.febs.mall.vo.AdminChatWalletVo;
-import cc.mrbird.febs.mall.vo.AdminGroupInfoVo;
-import cc.mrbird.febs.mall.vo.AdminRegisterMemberVo;
-import cc.mrbird.febs.mall.vo.MallMemberVo;
+import cc.mrbird.febs.mall.vo.*;
 import com.alibaba.fastjson.JSONObject;
 import lombok.RequiredArgsConstructor;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -134,6 +131,16 @@
     }
 
     /**
+     * 版本管理
+     * @return
+     */
+    @GetMapping("versionList")
+    @RequiresPermissions("versionList:view")
+    public String versionList() {
+        return FebsUtil.view("modules/chat/versionList");
+    }
+
+    /**
      * 群组管理-详情
      * @return
      */
@@ -146,6 +153,18 @@
     }
 
     /**
+     * 群组管理-详情
+     * @return
+     */
+    @GetMapping("versionInfo/{id}")
+    @RequiresPermissions("versionInfo:info")
+    public String versionInfo(@PathVariable long id, Model model) {
+        AdminVersionVo data = chatUserMapper.getVersionInfoById(id);
+        model.addAttribute("versionInfo", data);
+        return FebsUtil.view("modules/chat/versionEdit");
+    }
+
+    /**
      * 红包列表
      * @return
      */
diff --git a/src/main/java/cc/mrbird/febs/mall/entity/ChatVersion.java b/src/main/java/cc/mrbird/febs/mall/entity/ChatVersion.java
new file mode 100644
index 0000000..299d109
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/entity/ChatVersion.java
@@ -0,0 +1,43 @@
+package cc.mrbird.febs.mall.entity;
+
+import cc.mrbird.febs.common.entity.BaseEntity;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 版本实体类
+ * q3z3
+ * </p>
+ */
+@Data
+@TableName("chat_version")
+public class ChatVersion implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 版本
+     */
+    private String version;
+    /**
+     * 地址
+     */
+    private String url;
+    /**
+     * 内容
+     */
+    private String content;
+
+    private String descr;
+
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
index 0140916..361a1bc 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ChatUserMapper.java
@@ -43,10 +43,14 @@
 
     IPage<AdminGroupVo> selectGroupListInPage(Page<AdminGroupVo> page, @Param("record")ChatUser chatUser);
 
+    IPage<AdminVersionVo> selectVersionListInPage(Page<AdminVersionVo> page,  @Param("record")ChatUser chatUser);
+
     void updateIsRobotByGroupId(@Param("id")String id, @Param("useRobot")int i);
 
     AdminGroupInfoVo getGroupInfoById(@Param("id")long id);
 
+    AdminVersionVo getVersionInfoById(@Param("id")long id);
+
     void updateAutoSendByGroupId(@Param("id")String id, @Param("autoSend")int i);
 
     IPage<AdminRedBagVo> selectRedBagListInPage(Page<AdminRedBagVo> page, @Param("record")ChatUser chatUser);
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/ChatVersionMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/ChatVersionMapper.java
new file mode 100644
index 0000000..36d8704
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/ChatVersionMapper.java
@@ -0,0 +1,7 @@
+package cc.mrbird.febs.mall.mapper;
+
+import cc.mrbird.febs.mall.entity.ChatVersion;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+public interface ChatVersionMapper extends BaseMapper<ChatVersion> {
+}
diff --git a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
index 5d6fb39..8701469 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/IAdminChatService.java
@@ -36,12 +36,16 @@
 
     IPage<AdminGroupVo> getGroupList(ChatUser chatUser, QueryRequest request);
 
+    IPage<AdminVersionVo> getVersionList(ChatUser chatUser, QueryRequest request);
+
     FebsResponse closeSwitchUseRobot(String id);
 
     FebsResponse openSwitchUseRobot(String id);
 
     FebsResponse updateGroupInfo(AdminGroupInfoVo adminGroupInfoVo);
 
+    FebsResponse updateVersionInfo(AdminVersionVo adminVersionVo);
+
     FebsResponse registerMember();
 
     FebsResponse openModelType(String userId);
diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
index 70d34c3..286ef51 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminChatServiceImpl.java
@@ -6,10 +6,7 @@
 import cc.mrbird.febs.mall.YesOrNoEnum;
 import cc.mrbird.febs.mall.dto.AdminSystemPayDto;
 import cc.mrbird.febs.mall.entity.*;
-import cc.mrbird.febs.mall.mapper.ChatAmountFlowMapper;
-import cc.mrbird.febs.mall.mapper.ChatGroupMapper;
-import cc.mrbird.febs.mall.mapper.ChatUserMapper;
-import cc.mrbird.febs.mall.mapper.DataDictionaryMapper;
+import cc.mrbird.febs.mall.mapper.*;
 import cc.mrbird.febs.mall.service.IAdminChatService;
 import cc.mrbird.febs.mall.vo.*;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
@@ -35,6 +32,7 @@
     private final ChatAmountFlowMapper chatAmountFlowMapper;
     private final DataDictionaryMapper dataDictionaryMapper;
     private final ChatGroupMapper chatGroupMapper;
+    private final ChatVersionMapper chatVersionMapper;
     private final AgentProducer agentProducer;
     private final RedisUtils redisUtils;
 
@@ -196,6 +194,12 @@
     }
 
     @Override
+    public IPage<AdminVersionVo> getVersionList(ChatUser chatUser, QueryRequest request) {
+        Page<AdminVersionVo> page = new Page<>(request.getPageNum(), request.getPageSize());
+        return this.baseMapper.selectVersionListInPage(page, chatUser);
+    }
+
+    @Override
     public FebsResponse closeSwitchUseRobot(String id) {
         this.baseMapper.updateIsRobotByGroupId(id,0);
         return new FebsResponse().success();
@@ -222,6 +226,20 @@
     }
 
     @Override
+    public FebsResponse updateVersionInfo(AdminVersionVo adminVersionVo) {
+        ChatVersion chatVersion = chatVersionMapper.selectById(adminVersionVo.getId());
+        if(ObjectUtil.isEmpty(chatVersion)) {
+            return new FebsResponse().fail().message("信息不存在");
+        }
+        chatVersion.setVersion(adminVersionVo.getVersion());
+        chatVersion.setContent(adminVersionVo.getContent());
+        chatVersion.setUrl(adminVersionVo.getUrl());
+        chatVersion.setDescr(adminVersionVo.getDescr());
+        chatVersionMapper.updateById(chatVersion);
+        return new FebsResponse().success();
+    }
+
+    @Override
     public FebsResponse registerMember() {
         agentProducer.sendAddRobotMsg("20845477");
         return new FebsResponse().success();
diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminVersionVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminVersionVo.java
new file mode 100644
index 0000000..a6c35f4
--- /dev/null
+++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminVersionVo.java
@@ -0,0 +1,20 @@
+package cc.mrbird.febs.mall.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class AdminVersionVo {
+
+    private Long id;
+
+    private String version;
+
+    private String url;
+
+    private String content;
+
+    private String descr;
+}
diff --git a/src/main/resources/mapper/modules/ChatUserMapper.xml b/src/main/resources/mapper/modules/ChatUserMapper.xml
index 7f16fce..a9c4960 100644
--- a/src/main/resources/mapper/modules/ChatUserMapper.xml
+++ b/src/main/resources/mapper/modules/ChatUserMapper.xml
@@ -203,6 +203,12 @@
         order by a.create_time desc
     </select>
 
+    <select id="selectVersionListInPage" resultType="cc.mrbird.febs.mall.vo.AdminVersionVo">
+        select
+        a.*
+        from chat_version a
+    </select>
+
     <update id="updateIsRobotByGroupId">
         update chat_group
         set
@@ -226,6 +232,13 @@
         where id = #{id}
     </select>
 
+    <select id="getVersionInfoById" resultType="cc.mrbird.febs.mall.vo.AdminVersionVo">
+        select
+            a.*
+        from chat_version a
+        where id = #{id}
+    </select>
+
     <update id="updateAutoSendByGroupId">
         update chat_group
         set
diff --git a/src/main/resources/templates/febs/views/modules/chat/versionEdit.html b/src/main/resources/templates/febs/views/modules/chat/versionEdit.html
new file mode 100644
index 0000000..869b72e
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/chat/versionEdit.html
@@ -0,0 +1,112 @@
+<style>
+    #febs-version-edit {
+        padding: 20px 25px 25px 0;
+    }
+
+    #febs-version-edit .layui-treeSelect .ztree li a, .ztree li span {
+        margin: 0 0 2px 3px !important;
+    }
+    #febs-version-edit #data-permission-tree-block {
+        border: 1px solid #eee;
+        border-radius: 2px;
+        padding: 3px 0;
+    }
+    #febs-version-edit .layui-treeSelect .ztree li span.button.switch {
+        top: 1px;
+        left: 3px;
+    }
+    #febs-version-edit img{
+        max-width:100px
+    }
+
+</style>
+<div class="layui-fluid" id="febs-version-edit">
+    <form class="layui-form" action="" lay-filter="febs-version-edit-form">
+        <div class="layui-form-item febs-hide">
+            <label class="layui-form-label febs-form-item-require">id:</label>
+            <div class="layui-input-block">
+                <input type="text" name="id" data-th-value="${versionInfo.id}">
+            </div>
+        </div>
+        <blockquote class="layui-elem-quote blue-border">基本信息</blockquote>
+
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label febs-form-item-require">版本:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="version" autocomplete="off" class="layui-input">
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label febs-form-item-require">地址:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="url" autocomplete="off" class="layui-input">
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label febs-form-item-require">内容:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="content" autocomplete="off" class="layui-input">
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-row layui-col-space10 layui-form-item">
+            <div class="layui-col-lg6">
+                <label class="layui-form-label febs-form-item-require">描述:</label>
+                <div class="layui-input-block">
+                    <input type="text" name="descr" autocomplete="off" class="layui-input">
+                </div>
+            </div>
+        </div>
+
+        <div class="layui-form-item febs-hide">
+            <button class="layui-btn" lay-submit="" lay-filter="febs-version-edit-form-submit" id="submit"></button>
+        </div>
+    </form>
+</div>
+
+<script data-th-inline="javascript">
+    layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree','layedit', 'laydate', 'upload'], function () {
+        var $ = layui.$,
+            febs = layui.febs,
+            layer = layui.layer,
+            upload = layui.upload,
+            formSelects = layui.formSelects,
+            form = layui.form,
+            laydate = layui.laydate,
+            layedit = layui.layedit,
+            versionInfo = [[${versionInfo}]],
+            $view = $('#febs-version-edit');
+
+        initVersionInfoValue();
+
+        form.render();
+
+        formSelects.render();
+        form.on('submit(febs-version-edit-form-submit)', function (data) {
+            febs.post(ctx + 'admin/chat/updateVersionInfo', data.field, function () {
+                layer.closeAll();
+                febs.alert.success('操作成功');
+                $('#febs-version-list').find('#reset').click();
+            });
+            return false;
+        });
+
+        function initVersionInfoValue() {
+            form.val("febs-version-edit-form", {
+                "id": versionInfo.id,
+                "version": versionInfo.version,
+                "url": versionInfo.url,
+                "content": versionInfo.content,
+                "descr": versionInfo.descr,
+            });
+        }
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/febs/views/modules/chat/versionList.html b/src/main/resources/templates/febs/views/modules/chat/versionList.html
new file mode 100644
index 0000000..3dbd307
--- /dev/null
+++ b/src/main/resources/templates/febs/views/modules/chat/versionList.html
@@ -0,0 +1,109 @@
+<div class="layui-fluid layui-anim febs-anim" id="febs-version-list" lay-title="版本管理">
+    <div class="layui-row febs-container">
+        <div class="layui-col-md12">
+            <div class="layui-card">
+                <div class="layui-card-body febs-table-full">
+                    <form class="layui-form layui-table-form" lay-filter="group-table-form">
+                        <div class="layui-row">
+                            <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area">
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query">
+                                    <i class="layui-icon">&#xe848;</i>
+                                </div>
+                                <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset">
+                                    <i class="layui-icon">&#xe79b;</i>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                    <table lay-filter="versionTable" lay-data="{id: 'versionTable'}"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<style>
+    .layui-form-onswitch {
+        background-color: #5FB878 !important;
+    }
+</style>
+<!-- 表格操作栏 end -->
+<script data-th-inline="none" type="text/javascript">
+    // 引入组件并初始化
+    layui.use([ 'jquery', 'form', 'table', 'febs'], function () {
+        var $ = layui.jquery,
+            febs = layui.febs,
+            form = layui.form,
+            table = layui.table,
+            $view = $('#febs-version-list'),
+            $query = $view.find('#query'),
+            $reset = $view.find('#reset'),
+            $searchForm = $view.find('form'),
+            sortObject = {field: 'phone', type: null},
+            tableIns;
+
+        form.render();
+        let currPageGroup = 1;//首先默认值为1,防止出错
+        //获取当前页
+        currPageGroup = $view.find(".layui-laypage-em").next().html();
+
+        // 表格初始化
+        initTable();
+        table.on('tool(versionTable)', function (obj) {
+            var data = obj.data,
+                layEvent = obj.event;
+            if (layEvent === 'editVersion') {
+                febs.modal.open('编辑', 'modules/chat/versionInfo/' + data.id, {
+                    btn: ['提交', '取消'],
+                    // area:['100%','100%'],
+                    yes: function (index, layero) {
+                        $('#febs-version-edit').find('#submit').trigger('click');
+                    },
+                    btn2: function () {
+                        layer.closeAll();
+                    }
+                });
+            }
+        });
+
+        // 查询按钮
+        $query.on('click', function () {
+            var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type});
+            tableIns.reload({where: params, page: {curr: 1}});
+        });
+
+        // 刷新按钮
+        $reset.on('click', function () {
+            $searchForm[0].reset();
+            sortObject.type = 'null';
+            tableIns.reload({where: getQueryParams(), page: {curr: currPageGroup}, initSort: sortObject});
+        });
+
+        // 获取查询参数
+        function getQueryParams() {
+            return {
+                name: $searchForm.find('input[name="name"]').val().trim(),
+            };
+        }
+
+        function initTable() {
+            tableIns = febs.table.init({
+                elem: $view.find('table'),
+                id: 'versionTable',
+                url: ctx + 'admin/chat/versionTable',
+                cols: [[
+                    {field: 'id', title: '编号', minWidth: 100,align:'center'},
+                    {field: 'version', title: '名称', minWidth: 150,align:'center'},
+                    {field: 'url', title: '地址', minWidth: 150,align:'center'},
+                    {field: 'content', title: '内容', minWidth: 150,align:'center'},
+                    {field: 'descr', title: '描述', minWidth: 100,align:'center'},
+                    {title: '操作',
+                        templet: function (d) {
+                            return '<button class="layui-btn layui-btn-normal layui-btn-xs layui-btn-success" lay-event="editVersion" shiro:hasPermission="editVersion:info">编辑</button>'
+                        },minWidth: 150,align:'center'}
+                ]]
+            });
+        }
+
+
+    })
+</script>
\ No newline at end of file

--
Gitblit v1.9.1