From 8eb4af1f919e4411544e8a207a00686ca6d6cbd4 Mon Sep 17 00:00:00 2001
From: 侯瑞军 <411269194@kidgrow.com>
Date: Tue, 07 Apr 2020 17:36:45 +0800
Subject: [PATCH] 1.运营中心增加用户反馈功能 2.common.js中取消对插件库的重复引用 3.运营中心配置中,增加租户业务排除用户反馈表

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml                                   |   17 ++-
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java         |    7 +
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml                                             |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java |   39 ++++++-
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html                                                                 |  156 +++++++++++++++++++++++++++++++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java   |   24 ++--
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java |   43 +++++--
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java                   |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js                                                                          |    2 
 9 files changed, 246 insertions(+), 45 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java
index 639fef6..bc8236d 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/model/SysFeedback.java
@@ -1,5 +1,6 @@
 package com.kidgrow.oprationcenter.model;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.kidgrow.common.model.SuperModel;
 import lombok.AllArgsConstructor;
@@ -66,6 +67,7 @@
     /**
      * 是否删除,1删除,0未删除
      */
+    @TableLogic
     private Boolean isDel;
     /**
      * 状态,1已查收,0未处理
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java
index 3f9f798..f7b1772 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/ISysFeedbackService.java
@@ -1,5 +1,6 @@
 package com.kidgrow.oprationcenter.service;
 
+import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.oprationcenter.model.SysFeedback;
 import com.kidgrow.common.model.PageResult;
 import com.kidgrow.common.service.ISuperService;
@@ -29,5 +30,11 @@
     * @return SysFeedback对象
     */
     SysFeedback findByObject(SysFeedback sysFeedback);
+    /**
+     * 状态变更
+     * @param params
+     * @return
+     */
+    ResultBody updateEnabled(Map<String, Object> params);
 }
 
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java
index a3ca564..8d15b25 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/java/com/kidgrow/oprationcenter/service/impl/SysFeedbackServiceImpl.java
@@ -1,18 +1,19 @@
 package com.kidgrow.oprationcenter.service.impl;
 
-import org.springframework.stereotype.Service;
-import com.kidgrow.common.model.PageResult;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
 import com.kidgrow.common.service.impl.SuperServiceImpl;
+import com.kidgrow.oprationcenter.mapper.SysFeedbackMapper;
+import com.kidgrow.oprationcenter.model.SysFeedback;
+import com.kidgrow.oprationcenter.service.ISysFeedbackService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
+import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import org.apache.commons.collections4.MapUtils;
-import lombok.extern.slf4j.Slf4j;
-
-import com.kidgrow.oprationcenter.model.SysFeedback;
-import com.kidgrow.oprationcenter.mapper.SysFeedbackMapper;
-import com.kidgrow.oprationcenter.service.ISysFeedbackService;
 
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -46,4 +47,26 @@
     public SysFeedback findByObject(SysFeedback sysFeedback){
         return baseMapper.findByObject(sysFeedback);
     }
+
+    /**
+     * 根据id和启用禁用值更新数据
+     * @param params
+     * @return ResultBody
+     */
+    @Override
+    public ResultBody updateEnabled(Map<String, Object> params) {
+        Long id = MapUtils.getLong(params, "id");
+        Boolean enabled = MapUtils.getBoolean(params, "enabled");
+
+        SysFeedback feedback = baseMapper.selectById(id);
+        if (feedback == null) {
+            return ResultBody.failed("该反馈数据不存在!");
+        }
+        feedback.setEnabled(enabled);
+        feedback.setUpdateTime(new Date());
+//        feedback.setUpdateUserId();
+//        feedback.setUpdateUserName();
+        int i = baseMapper.updateById(feedback);
+        return i > 0 ? ResultBody.ok().data(feedback).msg("更新成功") : ResultBody.failed("更新失败");
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml
index de5684f..50c3397 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-biz/src/main/resources/mapper/SysFeedbackMapper.xml
@@ -4,7 +4,13 @@
 <mapper namespace="com.kidgrow.oprationcenter.mapper.SysFeedbackMapper">
     <!--定义查询列-->
     <sql id="Column_List">
-	   *
+	    id,
+        doctor_name,
+        doctor_tel,
+        department_name,
+        hospital_name,
+        enabled,
+        create_time
 	</sql>
 
     <!--sql查询片段-->
@@ -19,7 +25,7 @@
                 and doctor_id = #{p.doctorId}
             </if>
             <if test="p.doctorName != null and p.doctorName !=''">
-                and doctor_name = #{p.doctorName}
+                and doctor_name  like concat('%', #{p.doctorName}, '%')
             </if>
             <if test="p.doctorTel != null and p.doctorTel !=''">
                 and doctor_tel = #{p.doctorTel}
@@ -57,11 +63,8 @@
             <if test="p.updateUserName != null and p.updateUserName !=''">
                 and update_user_name = #{p.updateUserName}
             </if>
-            <if test="p.createTime != null and p.createTime !=''">
-                and create_time = #{p.createTime}
-            </if>
-            <if test="p.updateTime != null and p.updateTime !=''">
-                and update_time = #{p.updateTime}
+            <if test="p.createTime != null and p.createTime !='' and p.updateTime != null and p.updateTime !=''">
+                and (create_time between #{p.createTime} and #{p.updateTime})
             </if>
         </where>
     </sql>
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java
index 5376e06..e95b416 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysFeedbackController.java
@@ -1,28 +1,24 @@
 package com.kidgrow.oprationcenter.controller;
 
-import java.util.Map;
 import com.kidgrow.common.controller.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.ObjectError;
-import org.springframework.web.bind.annotation.*;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.model.SysFeedback;
+import com.kidgrow.oprationcenter.service.ISysFeedbackService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-
-import com.kidgrow.oprationcenter.model.SysFeedback;
-import com.kidgrow.oprationcenter.service.ISysFeedbackService;
-import com.kidgrow.common.model.*;
-
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.*;
+
 import javax.validation.Valid;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 
 /**
@@ -50,12 +46,12 @@
             @ApiImplicitParam(name = "limit", value = "分页结束位置", required = true, dataType = "Integer")
     })
     @GetMapping
-    public ResultBody<PageResult> list(@RequestParam Map<String, Object> params) {
+    public PageResult list(@RequestParam Map<String, Object> params) {
         if(params.size()==0){
             params.put("page",1);
             params.put("limit",10);
         }
-        return ResultBody.ok().data(sysFeedbackService.findList(params));
+        return sysFeedbackService.findList(params);
     }
 
     /**
@@ -115,4 +111,23 @@
             return ResultBody.failed().msg("删除失败");
         }
     }
+    /**
+     * 修改状态
+     *
+     * @param params
+     * @return
+     */
+    @ApiOperation(value = "修改反馈数据状态")
+    @GetMapping("/updateEnabled")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "enabled", value = "是否启用", required = true, dataType = "Boolean")
+    })
+    public ResultBody updateEnabled(@RequestParam Map<String, Object> params) {
+        if (params.size()==0)
+        {
+            return ResultBody.failed().msg("参数异常!");
+        }
+        return sysFeedbackService.updateEnabled(params);
+    }
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java
index ee6f3b1..35c2c14 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/SysLoggerController.java
@@ -1,28 +1,24 @@
 package com.kidgrow.oprationcenter.controller;
 
-import java.util.Map;
 import com.kidgrow.common.controller.BaseController;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.ObjectError;
-import org.springframework.web.bind.annotation.*;
+import com.kidgrow.common.model.PageResult;
+import com.kidgrow.common.model.ResultBody;
+import com.kidgrow.oprationcenter.model.SysLogger;
+import com.kidgrow.oprationcenter.service.ISysLoggerService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-
-import com.kidgrow.oprationcenter.model.SysLogger;
-import com.kidgrow.oprationcenter.service.ISysLoggerService;
-import com.kidgrow.common.model.*;
-
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.BindingResult;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.annotation.*;
+
 import javax.validation.Valid;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
 
 /**
@@ -93,10 +89,10 @@
         }  else {
             boolean v= sysLoggerService.saveOrUpdate(sysLogger);
             if(v) {
-                return ResultBody.ok().data(sysLogger).msg("保存成功");
+                return ResultBody.ok().data(sysLogger).msg("反馈提交成功");
             }
             else {
-                return ResultBody.failed().msg("保存失败");
+                return ResultBody.failed().msg("信息提交失败");
             }
         }
     }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
index 0a3f8d2..dc1f9c9 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/resources/application.yml
@@ -61,6 +61,7 @@
       - sys_logger
       - data_need
       - business_records
+      - sys_feedback
     ignoreSqls:
       - com.kidgrow.usercenter.mapper.SysRoleMapper.findAll
 
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
index 8d1b993..26ee5d1 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -2,8 +2,6 @@
 layui.config({
     base: '/module/'
 }).extend({
-    formSelects: 'formSelects/formSelects-v4',
-    treetable: 'treetable-lay/treetable',
     step: 'step-lay/step'
 }).use(['layer'], function () {
     var $ = layui.jquery;
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html
new file mode 100644
index 0000000..e749314
--- /dev/null
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/feedback.html
@@ -0,0 +1,156 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">用户反馈</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#!console">首页</a>
+          <a><cite>用户反馈</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">&emsp;
+            <input id="user-search-value" class="layui-input search-input" type="text" placeholder="输入医生姓名"/>&emsp;
+            <input type="text" name="date" id="datebegin" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input search-input"> 
+            至 
+            <input type="text" name="date" id="dateend" lay-verify="date" placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input search-input"> &emsp;
+            <button id="user-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
+        </div>
+
+        <table class="layui-table" id="feedback-table" lay-filter="feedback-table"></table>
+    </div>
+</div>
+
+<!-- 表格操作列 -->
+<script type="text/html" id="feeedback-table-bar">
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看详情</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+</script>
+<!-- 表格状态列 -->
+<script type="text/html" id="user-tpl-state">
+    <input type="checkbox" lay-filter="feedback-tpl-state" value="{{d.id}}" lay-skin="switch" lay-text="未处理|已处理"
+           {{d.enabled==true?'checked':''}}/>
+</script>
+<!-- 弹窗内容 -->
+<script type="text/html" id="feedback-detail">
+    <div class="layui-card-body" id="feedback-detail-note">
+    </div>
+</script>
+<script>
+    layui.use(['form', 'table', 'util', 'config', 'admin', 'laydate'],function () {
+        let table = layui.table;
+        let config = layui.config;
+        let layer = layui.layer;
+        let util = layui.util;
+        let admin = layui.admin;
+        let form = layui.form;
+        let laydate = layui.laydate;
+
+          //日期
+        laydate.render({
+            elem: '#datebegin'
+        });
+        laydate.render({
+            elem: '#dateend'
+        });
+        // 渲染表格
+        table.render({
+            elem: '#feedback-table',
+            url: config.base_server + 'api-opration/sysfeedback',
+            method: 'GET',
+            headers:{'Authorization': 'Bearer ' + config.getToken().access_token},
+            //where: {tenantId: config.clientId},
+            page: true,
+            cols: [[
+                {field: 'doctorName',width:150, title: '医生姓名'},
+                {field: 'doctorTel',width:200, title: '联系电话'},
+                {field: 'hospitalName',width:300,  title: '医院'},
+                {field: 'departmentName',width:180, title: '科室'},
+                {field: 'enabled', width: 150,templet: '#user-tpl-state',sort: true, title: '状态'},
+                {field: 'createTime', width: 200,sort: true,title: '创建时间'},
+                {align: 'center',width:200, toolbar: '#feeedback-table-bar', title: '操作'}
+            ]]
+        });
+
+        // 修改menu状态
+        form.on('switch(feedback-tpl-state)', function (obj) {
+        layer.load(2);
+        admin.req('api-opration/sysfeedback/updateEnabled', {
+            id: obj.elem.value,
+            enabled: obj.elem.checked ? true : false
+        }, function (data) {
+            layer.closeAll('loading');
+            if (data.code == 0) {
+                layer.msg(data.msg, {icon: 1, time: 500});
+            } else {
+                layer.msg(data.msg, {icon: 2, time: 500});
+                $(obj.elem).prop('checked', !obj.elem.checked);
+                form.render('checkbox');
+            }
+        }, 'GET');
+        });
+
+        // 工具条点击事件
+        table.on('tool(feedback-table)', function (obj) {
+            if (obj.event === 'del') { // 删除
+                layer.confirm('确定要删除吗?', function (i) {
+                layer.close(i);
+                layer.load(2);
+                admin.req('api-opration/sysfeedback/'+obj.data.id, {}, function (data) {
+                    layer.closeAll('loading');
+                    layer.msg('成功', {icon: 1, time: 500});
+                    obj.del();
+                }, 'DELETE');
+            });
+            }
+            else if(obj.event=='detail')
+            {
+                $.ajax({
+                    type: "GET",
+                    url: config.base_server +"api-opration/sysfeedback/"+obj.data.id,
+                    success: function(data) {
+                    if(data!=null)
+                    {
+                        layer.open({
+                        type: 1,
+                        title: '详情',
+                        area: ['500px','300px'],
+                        offset: 'auto',
+                        content:  $("#feedback-detail").html(),
+                        success:function(obj)
+                        {
+                            $("#feedback-detail-note").html(data.data.feedbackNote);
+                        }
+                        });
+                    }
+                    else
+                    {
+                        layer.msg('未找到相关数据', {icon: 1, time: 500});
+                    }
+                    },
+                    beforeSend: function(xhr) {
+                        xhr.setRequestHeader("Authorization", "Bearer "+config.getToken().access_token);
+                        xhr.setRequestHeader("Content-Type", "application/json")
+                }
+    });
+            }
+        });
+
+        // 搜索按钮点击事件
+        $('#user-btn-search').click(function () {
+            var doctorName = $('#user-search-value').val();
+            var datebegin=$('#datebegin').val();
+            var dateend=$('#dateend').val();
+            if(strUtil.isEmpty(datebegin)&&!strUtil.isEmpty(dateend))
+            {
+                datebegin=dateUtil.getNowDate();
+                $('#datebegin').val(datebegin); 
+            }
+            if(!strUtil.isEmpty(datebegin)&&strUtil.isEmpty(dateend))
+            {
+                dateend=dateUtil.getNowDate();
+                $('#dateend').val(dateend);      
+            }
+            table.reload('feedback-table', {where: {doctorName: doctorName,createTime:datebegin,updateTime:dateend}});
+        });
+
+    });
+</script>
\ No newline at end of file

--
Gitblit v1.8.0