# 智慧社区管理系统-核心业务管理-03投诉信息

news2024/7/6 20:45:36

一 后端

1:entity

package com.woniu.community.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Complaint {
    private int  id;
    private int comId;
    private String comDate;
    private int ownerId;
    private Integer status;
    private String clr;
    private String remarks;
    private String  userName;
    private String name;
    private  String endDate;

}

2:ComplaintMapper

package com.woniu.community.mapper;

import com.woniu.community.entity.Complaint;
import com.woniu.community.entity.PropertyInfo;

import java.util.List;

public interface ComplaintMapper {
    List<Complaint> selectAll(int start, int size , String name, Integer status);
    int  count(String name,Integer status);
    int  insertComplaint(Complaint complaint);
    int  deleteComplaint(int id);
    int updateComplaint(Complaint complaint);



}

3:IComplaintService

package com.woniu.community.service;

import com.woniu.community.entity.Complaint;
import com.woniu.community.entity.HttpResult;



public interface IComplaintService {
   HttpResult selectAll(int pageIndex, int pageSize , String name, Integer status);
    HttpResult  insertComplaint(Complaint complaint);
    HttpResult  deleteComplaint(int id);
    HttpResult updateComplaint(Complaint complaint);
}

4:ComplaintServiceImpl

package com.woniu.community.service.impl;

import com.woniu.community.entity.CarCharge;
import com.woniu.community.entity.Complaint;
import com.woniu.community.entity.HttpResult;
import com.woniu.community.mapper.ComplaintMapper;
import com.woniu.community.service.ICarChargeService;
import com.woniu.community.service.IComplaintService;
import org.apache.tomcat.util.http.parser.HttpParser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ComplaintServiceImpl implements IComplaintService {
    @Autowired(required = false)
    private ComplaintMapper complaintMapper;

    @Override
    public HttpResult selectAll(int pageIndex, int pageSize, String name, Integer status) {
        HttpResult result=null;
        List<Complaint> complaints = complaintMapper.selectAll((pageIndex - 1) * pageSize, pageSize, name, status);
        int count = complaintMapper.count(name, status);
        if (complaints!=null&&complaints.size()>0){
            result =new HttpResult(complaints,count,200,null);
        }else{
            result =new HttpResult(null,0,500,"没有更多数据");

        }

        return result;
    }

    @Override
    public HttpResult insertComplaint(Complaint complaint) {
        HttpResult result=null;
        int count = complaintMapper.insertComplaint(complaint);
        if (count>0){
            result=new HttpResult(null,0,200,"添加成功");
        }else{
            result=new HttpResult(null,0,500,"添加失败");

        }
        return result;
    }

    @Override
    public HttpResult deleteComplaint(int id) {
        int count = complaintMapper.deleteComplaint(id);
        HttpResult result=null;
        if (count>0){
            result=new HttpResult(null,0,200,"删除成功");
        }else{
            result=new HttpResult(null,0,500,"删除失败");

        }
        return result;
    }

    @Override
    public HttpResult updateComplaint(Complaint complaint) {
        HttpResult  result=null;
        int count = complaintMapper.updateComplaint(complaint);
        if (count>0){
            result=new HttpResult(null,0,200,"修改成功");
        }else{
            result=new HttpResult(null,0,500,"修改失败");

        }
        return result;
    }
}

5:ComplaintController

package com.woniu.community.controller;

import com.woniu.community.entity.Complaint;
import com.woniu.community.entity.HttpResult;
import com.woniu.community.service.IComplaintService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/complaint")
@CrossOrigin(origins = "*")
public class ComplaintController {
    @Autowired
    private IComplaintService iComplaintService;

    @RequestMapping("/list")
    HttpResult selectAll(int pageIndex, int pageSize , String name, Integer status){
        return  iComplaintService.selectAll(pageIndex,pageSize,name,status);
    }
    @RequestMapping("/add")
    HttpResult  insertComplaint(Complaint complaint){
        return iComplaintService.insertComplaint(complaint);
    }
    @RequestMapping("/delete")
    HttpResult  deleteComplaint(int id){
        return  iComplaintService.deleteComplaint(id);
    }
    @RequestMapping("/update")
    HttpResult updateComplaint(Complaint complaint){
        return iComplaintService.updateComplaint(complaint);
    }
}

6:ComplaintMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.woniu.community.mapper.ComplaintMapper">
    <resultMap id="comMap" type="Complaint">
        <result column="id" property="id"/>
        <result column="com_id" property="comId"/>
        <result column="com_date" property="comDate"/>
        <result column="owner_id" property="ownerId"/>
        <result column="status" property="status"/>
        <result column="clr" property="clr"/>
        <result column="remarks" property="remarks"/>
        <result column="username" property="userName"/>
        <result column="name" property="name"/>
        <result column="end_date" property="endDate"/>
    </resultMap>
    <select id="selectAll" resultMap="comMap">
        select
               co.name,o.username,c.*
        from
             complaint c left  join  owner o  on
            c.owner_id=o.id
                left  join  complaint_type co  on
            c.com_id=co.id
        <where>
            <if test="name!=null and  name!='' and name!='null'">
               and co.name=#{name}
            </if>
            <if test="status!=null">
                and  c.status=#{status}
            </if>
        </where>
        limit #{start},#{size}
    </select>
    <select id="count" resultType="int">
        select
        count(c.id)
        from
        complaint c left  join  owner o  on
        c.owner_id=o.id
        left  join  complaint_type co  on
        c.com_id=co.id
        <where>
            <if test="name!=null and  name!='' and name!='null'">
                and co.name=#{name}
            </if>
            <if test="status!=null">
                and  c.status=#{status}
            </if>
        </where>
    </select>

    <insert id="insertComplaint">
        insert  into complaint(com_id,remarks,owner_id,com_date,status,clr,end_date)
                values (#{comId},#{remarks},#{ownerId},#{comDate},#{status},#{clr},#{endDate})
    </insert>

    <delete id="deleteComplaint">
        delete  from  complaint where id=#{id}
    </delete>

    <update id="updateComplaint">
        update  complaint set status=#{status} where id=#{id}
    </update>

</mapper>

2 前端代码


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="assets/css/right.css" rel="stylesheet">
    <script src="assets/jquery-3.5.1.min.js"></script>
    <script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script src="assets/vue.min-v2.5.16.js"></script>
    <script src="assets/vue-router.min-2.7.0.js"></script>
    <script src="assets/axios.min.js"></script>
</head>
<body>
<div id="app" class="container">
    <div class="row">
        <div class="col-md-12" style="height: 80px; line-height: 50px;">
            <div class="row">
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px;">
                    投诉类型:<select style="width: 150px;" v-model="name">
                    <option >垃圾乱放</option>
                    <option >绿植太差</option>
                </select>
                </div>
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px;">
                    缴费状态:<select style="width: 150px;" v-model="status">
                    <option value="1">已处理</option>
                    <option value="0">未处理</option>
                </select>
                </div>
                <div class="col-md-3" style="height: 20px;margin-bottom: 15px">
                    <button class="btn btn-primary" @click="doQuery">搜索</button>

                </div>
            </div>
            <button class="btn btn-info" @click="doAdd">新增</button>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <table class="table table-striped">
            <caption>投诉管理</caption>
                <thead>
                    <tr>
                        <th>投诉类型</th>
                        <th>投诉内容</th>
                        <th>投诉人</th>
                        <th>投诉时间</th>
                        <th>处理状态</th>
                        <th>处理人</th>
                        <th>处理时间</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for=" c in complaint">
                        <td>{{c.comId}}</td>
                        <td>{{c.name}}</td>
                        <td>{{c.userName}}</td>
                        <td>{{c.comDate}}</td>
                        <td>{{c.status==1?"已处理":"未处理"}}</td>
                        <td>{{c.clr}}</td>
                        <td>{{c.endDate}}</td>
                        <td v-if="c.status==1">
                            <button class="btn btn-danger" @click="doDelete(c.id)">删除</button>
                        </td>
                        <td v-else="c.status==0">
                            <button class="btn btn-primary" @click="doUpdate(c.id)">处理</button>
                            <button class="btn btn-danger" @click="doDelete(c.id)">删除</button>

                        </td>
                    </tr>
                </tbody>
            </table>
            <ul class="pagination" v-for="p in pageNum">
                <li v-if="p==pageIndex" class="active"><a @click="doGO(p)">{{p}}</a></li>
                <li v-else="p==pageIndex"><a @click="doGO(p)">{{p}}</a></li>
            </ul>
        </div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            complaint:null,
            pageIndex:1,
            pageSize:4,
            pageTotal:0,
            pageNum:0,
            name:'',
            status:'',
        },
        methods: {
            requestComplaintList(url){
                axios.get(url).then(response=>{
                    this.complaint=response.data.data;
                    this.pageTotal = response.data.pageTotal; //给总条数赋值

                    this.pageNum = Math.ceil(this.pageTotal / this.pageSize);
                })
            },
            doQuery(){
                this.doGO(1);
            },
            doGO(p) {
                this.pageIndex = p;
                var  url="http://localhost:8080/complaint/list?pageIndex="+p+"&pageSize="+this.pageSize+"&name="+this.name+"&status="+this.status;
                this.  requestComplaintList(url);
            },
            doAdd(){
                window.parent.main_right.location.href = "complaint_add_update.html";

            },
            doUpdate(id){
                var  url="http://localhost:8080/complaint/update?status=1&id="+id;
                axios.get(url).then(response=>{
                    if (response.data.code==200){
                        var  url="http://localhost:8080/complaint/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
                        this.  requestComplaintList(url);
                    }else{
                        alert(response.date.msg);
                    }
                })
            },
            doDelete(id){
            var  url="http://localhost:8080/complaint/delete?id="+id;
                axios.get(url).then(response=>{
                    if (response.data.code==200){
                        var  url="http://localhost:8080/complaint/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
                        this.  requestComplaintList(url);
                    }else{
                        alert(response.data.msg)
                    }
                })
            },
        },
        created: function () {
            var  url="http://localhost:8080/complaint/list?pageIndex="+this.pageIndex+"&pageSize="+this.pageSize;
            this.  requestComplaintList(url);
        }
    });
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="assets/bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="assets/css/right.css" rel="stylesheet">
    <script src="assets/jquery-3.5.1.min.js"></script>
    <script src="assets/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    <script src="assets/vue.min-v2.5.16.js"></script>
    <script src="assets/vue-router.min-2.7.0.js"></script>
    <script src="assets/axios.min.js"></script>
    <script src="assets/date_picker.js"></script>
</head>
<body>
<div id="app" class="container">
    <div class="row">
        <div class="col-md-8 col-md-offset-2">
            <div class="row">
                <div class="col-md-12" style="text-align: center; font-weight: bold; font-size: 18px; height: 80px; line-height: 80px;">
                    {{title}}
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 col-md-offset-3" style="height: 260px;">
                    投诉类型:<select style="width: 150px;" v-model="comId">
                    <option value="1">垃圾乱放</option>
                    <option value="2">绿植太差</option>
                </select><br>
                    <label>投诉内容</label>
                    <input type="text" v-model="remarks"><br>
                    投诉人:<select v-model="ownerId">
                    <option v-for="o in ownerList":value="o.id">{{o.userName}}</option>
                </select><br>
                    <label>投诉时间:</label>
                    <input type="date" class="form-control" v-model="comDate"/><br>
                    处理状态:<select v-model="status">
                    <option value="1">已处理</option>
                    <option value="0">未处理</option>
                </select><br>
                    <label>处理人</label>
                    <input type="text" v-model="clr">
                    <br>
                    <label>处理时间:</label>
                    <input type="date" class="form-control" v-model="endDate"/><br>
                </div>
            </div>
            <div class="row">
                <div class="col-md-6 col-md-offset-3" style="height: 80px;">
                    <button class="btn btn-primary" @click="doSave">保存</button>
                    <button class="btn btn-default" @click="doNot">取消</button>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
    new Vue({
        el: '#app',
        data: {
            title: null,
            remarks:null,

            ownerId:null,
            ownerList:null,
            comDate:null,
            status:null,
            clr:null,
            comId:null,
            endDate:null,
        },
        methods: {
            requestOwnerList(){
                var url="http://localhost:8080/owner/list?pageIndex=1&pageSize=100";
                axios.get(url).then(response=>{
                    this.ownerList=response.data.data;
                })
            },
            doSave(){
            this.title="添加投诉信息"
                var  url="http://localhost:8080/complaint/add?comId="+this.comId+"&remarks="+this.remarks+"&ownerId="+this.ownerId+"&comDate="+this.comDate+"&status="+this.status+"&clr="+this.clr+"&endDate="+this.endDate;
                console.log(url)
                axios.get(url).then(response=>{
                    if (response.data.code==200){
                        window.parent.main_right.location.href = "complaint_list.html";

                    }else{
                        alert(response.data.msg)
                    }

                })
            },
            doNot(){
               history.go(-1);
            },
        },
        created: function () {
            this. requestOwnerList();
            this.title="添加投诉信息";

        }
    });
</script>
</body>
</html>

3页面效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/58891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多功能跑步机外观及结构设计

目 录 摘 要 I Abstract II 第1章 绪论 1 1.1背景及意义 1 1.2国内外发展情况 2 1.3研究主要内容 3 第2章 多功能跑步机结构设计 5 2.1 传动机构设计 5 2.1.1 设计步骤及参数选择 5 2.1.2多楔带带轮结构和尺寸选择 8 2.2 电动机类型与参数的选择 10 2.2.1类型功率选择 10 2.2.2…

连连看核心算法与基本思想(附全部项目代码链接与代码详细注释)

文章目录0.说明1.基本要求2.思路分析(加入核心代码)2.1 游戏初始化局面2.2 两点是否可连2.3 游戏是否结束2.4 判断死锁3.注意事项与全部代码0.说明 对于数据结构和算法&#xff0c;我并不是很精通&#xff08;真的很一般&#xff09;&#xff0c;因此在这里只是做一个自己的简…

以太网 TCP协议(数据交互过程、窗口机制)

2.7.1 以太网 TCP协议&#xff08;数据交互过程、窗口机制&#xff09; 环境介绍&#xff1a; 1、客户端访问FTP服务器进行下载文件&#xff0c;由于FTP是基于TCP协议进行工作的&#xff0c;所以客户端在访问FTP服务器时必然会进行建立TCP连接。 2、通过在交换机上对任意端口进…

Bootstrap5 网格系统

Bootstrap 提供了一套响应式、移动设备优先的流式网格系统&#xff0c;随着屏幕或视口&#xff08;viewport&#xff09;尺寸的增加&#xff0c;系统会自动分为最多 12 列。 我们也可以根据自己的需要&#xff0c;定义列数&#xff1a; 111111111111444486612 Bootstrap 5 的…

Java项目:ssm客户关系管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 客户关系管理系统主要功能包括&#xff1a; 系统管理&#xff1a; 用户管理 日志管理 权限管理 角色管理 系统信息 客户管理 我的客户 联系跟进…

音视频学习(十三)——flv详解

简介 全称FLASHVIDEO&#xff0c;是一种新的视频格式&#xff0c;主要的特点是文件小、加载速度快。 结构 flv的结构相对简单&#xff0c;可以通过下图来初步了解其组成&#xff1a; flv flv header(9字节) flv bodyflv header Signature(3字节) Version(1字节) Flags(…

rocketmq消息过滤

1、目的 消费者订阅了某个主题后&#xff0c;Apache RocketMQ 会将该主题中的所有消息投递给消费者。若消费者只需要关注部分消息&#xff0c;可通过设置过滤条件在 Apache RocketMQ 服务端进行过滤&#xff0c;只获取到需要关注的消息子集&#xff0c;避免接收到大量无效的消…

51单片机学习笔记5 流水灯实现及蜂鸣器控制

51单片机学习笔记5 流水灯实现及蜂鸣器控制一、流水灯1. 硬件电路2. 代码实现&#xff08;1&#xff09; 点亮一个LED的基本操作&#xff08;2&#xff09; 使用算术左移实现流水灯&#xff08;3&#xff09; 使用库文件左移函数二、蜂鸣器1. 蜂鸣器介绍2. 硬件电路原理图ULN20…

唯愿山城无恙-烟火寻常--爱摸鱼的美工(五)

-----------作者&#xff1a;天涯小Y 非常时期的非常生活&#xff01; 今天是承上启下的一天 无论好坏&#xff0c;本月都收官了 洗去一身的疲惫 大脑放空&#xff0c;搓澡 热衷搓澡的程度&#xff0c;简直不像南方人 收拾一下,迎接新的开始 原本一年之中&#xff0c;我最爱几…

搜索与图论-DFS

文章目录一、DFS1. DFS 简介2. DFS 的实现步骤3. DFS 实际演示二、DFS 例题——排列数字具体实现1. 样例演示2. 实现思路3. 代码注解4. 实现代码三、DFS 例题—— n-皇后问题&#xff08;经典&#xff09;具体实现——按行进行枚举1. 样例演示2. 实现思路3. 代码注解4. 实现代码…

微服务框架 SpringCloud微服务架构 9 初识 Docker 9.4 Docker 的安装

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构9 初识 Docker9.4 Docker 的安装9.4.1 安装Docker9.4.2 启动Docker9.4.3 配…

verilog练习——时序逻辑

目录 VL21 根据状态转移表实现时序电路 VL22 根据状态转移图实现时序电路 VL23 ROM的简单实现 VL24 边沿检测 VL21 根据状态转移表实现时序电路 题目分析&#xff1a; 1、使用三段式状态机&#xff0c;实现更为方便和简洁。 2、三段式和&#xff08;一段式、二段式&#x…

C++GUI之wxWidgets(2)-hello,world

目录wxWidgets的头文件事件main入口函数状态栏事件处理程序wxWidgets的头文件 首先必须包含wxWidgets的头文件。 1、可以在一个文件一个文件的基础上完成(如wx/window.h) 2、使用一个全局包含(wx/wx.h)&#xff0c;其中包括大多数常用的头文件(虽然不是所有的头文件&#xff0…

单变量微积分重点(1)

1.单调有界定理 若数列递增有上界&#xff0c;则数列收敛&#xff08;递减同样&#xff09; 2.海涅定理&#xff08;归结原则&#xff09; 说明&#xff1a;对于任何的属于空心邻域的数列&#xff0c;而且这些数列的极限都是x0. 3.两个重要极限&#xff1a; 4.11个重要极限 导…

基于PHP+MySQL托管中心管理系统的设计与实现

随着在校学生人数的不断增加,学生的数量也在不断的增加,但是很多时候因为父母工作忙没时间,以及一些其他的原因没办法对学生间辅导,这就诞生了托管中心这一行业,但是传统的托管中心多是人工手动的模式进行管理的,这很不科学也不合理,为了改变这一现状,我们开发了托管中心管理系…

SpringBoot_整合Mybatis-plus

一、入门案例 1.准备表结构和数据 准备如下的表结构和相关数据 DROP TABLE IF EXISTS user; ​ CREATE TABLE user (id BIGINT(20) NOT NULL COMMENT 主键ID,name VARCHAR(30) NULL DEFAULT NULL COMMENT 姓名,age INT(11) NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50) …

Java项目:SSM的KTV管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 主要功能包括&#xff1a; 登陆页,房间信息,房间管理,开取房间,房间查询,会员管理,食物管理,查看订单,查询订单,查看房间消费使用情况等功能。…

随笔荟萃 | sincerity

我们在第一学期中&#xff0c;有一堂经济政治与社会课上&#xff0c;老师给我们讲到共建社会主义和谐社会时&#xff0c;我们现在的社会需要更多的人参与&#xff0c;我又想起班主任陆坚老师对我们全班同学所说的话就是&#xff1a;“我们先做人后做事。”我们如何做人、做人的…

7.7 网络(一)

目录 一 网络是个什么玩意 1 网络很重要&#xff0c;发展很迅速 2 网络是一个很泛的概念 3 我们介绍什么 二 网络技术 1 网络架构 2 网络传输 3 网络安全与管理 网络是操作系统中很重要的一个模块&#xff0c;特别是在现代操作系统中。另外&#xff0c;网络也是软件开发人员必须…

基于PHP+MySQL简历模板下载管理系统

随着时代的发展和进步&#xff0c;互联网络日益成为大众生活的发展方向&#xff0c;每年都有大量的毕业生需要求职&#xff0c;在求职的过程中简历是必不可少的一个环节&#xff0c;但是很多时候求职人员不知道如何更好的制作一份简历&#xff0c;这个情况就需要到网上寻找对应…