项目:问卷调查—人事管理系统
-
- 项目功能框架:
- 项目前后台功能展示:
- 项目整体框架:
- 配置、用户、部门、问卷主要代码部分:
-
- pom.xml:
- db.properties:
- mybatis-config.xml:
- spring-mvc.xml:
- spring-mybatis.xml:
- User :
- Dept:
- Questionnaire :
- CommonResult:
- UserMapper:
- DeptMapper :
- QuestionnaireMapper :
- UserMapper.xml:
- DeptMapper.xml:
- QuestionnaireMapper.xml:
- IUserService :
- IDeptService :
- IQuestionnaireService :
- UserServiceImpl :
- DeptServiceImpl :
- UserController :
- DeptController :
- QuestionnaireController :
- ForwardController:
- QuestionnaireServiceImpl :
- user.jsp:
- dept.jsp:
- questionnaire_manage.jsp:
- web.xml :
项目功能框架:
项目前后台功能展示:
项目整体框架:
配置、用户、部门、问卷主要代码部分:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>questionnaire</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>questionnaire Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<servlet.version>4.0.1</servlet.version>
<jsp.version>2.2</jsp.version>
<jstl.version>1.2</jstl.version>
<spring.version>5.3.14</spring.version>
<commons-dbcp.version>1.4</commons-dbcp.version>
<mybatis.version>3.4.6</mybatis.version>
<mybatis-spring.version>1.3.3</mybatis-spring.version>
<mysql-connector-java.version>8.0.11</mysql-connector-java.version>
<fastjson.version>1.2.78</fastjson.version>
</properties>
<dependencies>
<!-- 添加javaEE支持 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<!-- provided只在编译时支持,发布时不拷贝文件 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<!-- provided只在编译时支持,发布时不拷贝文件 -->
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<!-- 引入spring基础模块 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--dbcp连接池 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>${commons-dbcp.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- mybatis spring整合 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<!-- mybatis插件PageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.0</version>
</dependency>
<!--通用mapper插件-->
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>3.0.1</version>
</dependency>
<!-- mysql驱动类 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- fastjson处理json数据 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- lombok 简化实体内容 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>com.github.xuwei-k</groupId>
<artifactId>html2image</artifactId>
<version>0.1.0</version>
</dependency>
</dependencies>
</project>
db.properties:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/proj_hr?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=123456
mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 配置日志工具 -->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--配置将下划线字段转为小驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
</plugin>
<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
<!--主键自增回写方法,默认值MYSQL -->
<property name="IDENTITY" value="MYSQL" />
<!--通用Mapper默认接口 -->
<property name="mappers" value="com.github.abel533.mapper.Mapper" />
</plugin>
</plugins>
</configuration>
spring-mvc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--扫描包-->
<context:component-scan base-package="com.que.controller"/>
<!--开启注解驱动-->
<mvc:annotation-driven>
<!--配置时间转换器,将后台传到前台的日期数据格式化-->
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss"/>
</bean>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/"/>
<property name="suffix" value=".jsp"/>
</bean>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/"/>
<mvc:exclude-mapping path="/index.jsp"/>
<mvc:exclude-mapping path="/toLogin"/>
<mvc:exclude-mapping path="/user/loginSelect"/>
<mvc:exclude-mapping path="/tester/toLogin"/>
<mvc:exclude-mapping path="/tester/login"/>
<mvc:exclude-mapping path="/tester/index"/>
<mvc:exclude-mapping path="/tester/result"/>
<mvc:exclude-mapping path="/tester/analyse"/>
<mvc:exclude-mapping path="/tester/mailSend"/>
<mvc:exclude-mapping path="/tester/insertResult"/>
<mvc:exclude-mapping path="/question/query"/>
<mvc:exclude-mapping path="/assets/**"/>
<bean class="com.que.interceptor.LoginCheckInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
<!--防止静态资源被拦截-->
<mvc:default-servlet-handler/>
</beans>
spring-mybatis.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!--扫包-->
<context:component-scan base-package="com.que.service"/>
<!--配置数据库连接-->
<context:property-placeholder location="classpath:db.properties"/>
<!--配置数据库连接池-->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--配置MySQL的SQLsession对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="ds"/>
<!--配置类型别名-->
<property name="typeAliasesPackage" value="com.que.entity"/>
<!--配置mybatis主配置文件的路径,其内可以定义特定的配置-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--配置mapper文件路径-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!--配置mapper接口-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.que.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
</beans>
User :
package com.que.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/*
*@Auther jjk
*@Date 2022/8/29*
*@Description 用户表
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "tbl_user")
public class User {
@Id
@GeneratedValue(generator = "JDBC",strategy = GenerationType.IDENTITY)
private Integer userId;
private Integer deptId;
private String loginName;
private String userName;
private String email;
private String phonenumber;
private String sex;
private String avatar;
private String password;
private String salt;
private String status;
private String flag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
private String remark;
}
Dept:
package com.que.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/*
*@Auther jjk
*@Date 2022/8/29*
*@Description 部门表
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "tbl_dept")
public class Dept {
@Id
private Integer deptId;
private String deptName;
private Integer orderNum;
private String status;
private String delFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}
Questionnaire :
package com.que.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
/**
* @Author sml
* @Data 2022/8/29 11:54
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "tbl_questionnaire")
public class Questionnaire {
@Id
@GeneratedValue(generator = "JDBC",strategy = GenerationType.IDENTITY)
private Integer id;
private String title;
private String anonymous;
private String enabled;
private String deleteFlag;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
}
CommonResult:
package com.que.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/*
*@Auther jjk
*@Date 2022/8/29*
*@Description
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult {
//编码:0成功,1失败
private Integer code;
//提示消息
private String msg;
//记录数
private Integer count;
//记录数据
private Object data;
//返回查询结果的成功信息:
public static CommonResult success(Integer count, Object data){
return new CommonResult(0,"success",count,data);
}
//返回增删改的成功信息
public static CommonResult success(){
return new CommonResult(0,"success",null,null);
}
//返回失败信息
public static CommonResult fail(){
return new CommonResult(1,"fail",null,null);
}
}
UserMapper:
package com.que.mapper;
import com.github.abel533.mapper.Mapper;
import com.github.pagehelper.PageInfo;
import com.que.entity.User;
import com.que.entity.UserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface UserMapper extends Mapper<User> {
//查询(条件)
List<Map> listAll(@Param("userName") String userName,@Param("phonenumber") String phonenumber); //注意:这里返回键值对列表,不适用一对一/多关联查询
//登录查询
User loginSelect(@Param("loginName") String loginName,@Param("password") String password);
//修改密码(用户)
int updatePassword();
//插入(用户角色表)
int insertRole(UserRole userRole);
//修改(用户角色表)
int updateRole(UserRole userRole);
//删除(用户角色表)
int deleteRole(Integer userId);
//根据用户Id查询身份
List selectCheckbox(Integer userId);
//查用户名
User selectLoginName(String loginName);
//根据用户名查找用户数据
User selectUserData(Integer userId);
}
DeptMapper :
package com.que.mapper;
import com.github.abel533.mapper.Mapper;
import com.que.entity.Dept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface DeptMapper extends Mapper<Dept> {
List<Dept> deptListAll();
//条件查询
List<Dept> deptListAll1(@Param("deptName") String deptName,@Param("creatBy") String creatBy,@Param("updateBy") String updateBy);
}
QuestionnaireMapper :
package com.que.mapper;
import com.que.entity.Questionnaire;
import com.github.abel533.mapper.Mapper;
import com.que.entity.QuestionnaireResult;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/*
*@Auther jjk
*@Date 2022/9/2*
*@Description
*/
public interface QuestionnaireMapper extends Mapper<Questionnaire> {
List<Map> query(@Param("questionTitle")String questionTitle, @Param("createBy")String createBy);
List<Map> getById(Integer id);
int save(QuestionnaireResult q);
int update(@Param("id")Integer id,@Param("enabled")String checked);
}
UserMapper.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.que.mapper.UserMapper">
<!--用户和部门关联查询--> <!--定义键值对-->
<select id="listAll" resultType="map"> <!--返回一个user对象(如果在user属性中定义的有dept对象,则用一对一)-->
select
u.user_id,u.login_name,u.user_name,u.email,u.phonenumber,u.sex,u.avatar,u.password,u.status,u.create_by,u.create_time,u.update_by,u.update_time,u.remark,
d.dept_id,d.dept_name
from tbl_user u
join tbl_dept d
on u.dept_id=d.dept_id
<where>
<if test="userName!=null and userName!='' ">
and user_name like concat('%',#{userName},'%')
</if>
<if test="phonenumber!=null and phonenumber!='' ">
and phonenumber like concat('%',#{phonenumber},'%')
</if>
and u.flag = 0
</where>
</select>
<!--插入(角色角色表)-->
<insert id="insertRole" >
insert into tbl_user_role
(user_id,role_id)
values
(#{userId},#{roleId})
</insert>
<!--删除(角色角色表)-->
<delete id="deleteRole">
delete from tbl_user_role
where user_id=#{userId}
</delete>
<!--登陆查询-->
<select id="loginSelect" resultType="com.que.entity.User">
select * from tbl_user
where login_name=#{loginName} and password=#{password}
</select>
<!-- //根据用户Id查询身份-->
<select id="selectCheckbox" resultType="int">
select role_id from tbl_user_role
where user_id=#{userId}
</select>
<!-- //查用户名-->
<select id="selectLoginName" resultType="user">
select * from tbl_user
where login_name=#{loginName}
</select>
<select id="selectUserData" resultType="user">
select * from tbl_user where user_id=#{userId}
</select>
</mapper>
DeptMapper.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.que.mapper.DeptMapper">
<!--用户和部门关联查询--> <!--定义键值对-->
<select id="deptListAll" resultType="map"> <!--返回一个user对象(如果在user属性中定义的有dept对象,则用一对一)-->
select * from tbl_dept
</select>
<select id="deptListAll1" resultType="dept">
select * from tbl_dept
<where>
<if test="deptName!=null and deptName!='' ">
and dept_name like concat('%',#{deptName},'%')
</if>
<if test="creatBy!=null and creatBy!='' ">
and create_by like concat('%',#{creatBy},'%')
</if>
<if test="updateBy!=null and updateBy!='' ">
and update_by like concat('%',#{updateBy},'%')
</if>
</where>
</select>
</mapper>
QuestionnaireMapper.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.que.mapper.QuestionnaireMapper">
<insert id="save" parameterType="com.que.entity.QuestionnaireResult">
insert into tbl_questionnaire_result
(id,user_id,details_id,answer)
value
(default,#{userId},#{detailsId},#{answer})
</insert>
<update id="update">
update tbl_questionnaire set
enabled = #{enabled}
where id = #{id}
</update>
<select id="query" resultType="map">
select qn.*,count(qd.id) detailsCount,x.userCount
from tbl_questionnaire qn
left join tbl_questionnaire_details qd
on qn.id=qd.questionnaire_id
join
(
SELECT qn.id,count(qu.id) userCount
FROM tbl_questionnaire qn
LEFT JOIN tbl_questionnaire_user qu
on qu.questionnaire_id = qn.id
GROUP BY qn.id
) x
on qn.id=x.id
<where>
<if test="questionTitle != null and questionTitle != ''">
and qn.title like concat('%',#{questionTitle},'%')
</if>
<if test="createBy != null and createBy != ''">
and qn.create_by like concat('%',#{createBy},'%')
</if>
and qn.delete_flag = 0
</where>
group by qn.id
</select>
<select id="getById" resultType="Map">
select id,title
from tbl_questionnaire
where id = #{id} and delete_flag = 0
</select>
</mapper>
IUserService :
package com.que.service;
import com.github.pagehelper.PageInfo;
import com.que.entity.User;
import com.que.entity.UserRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface IUserService {
//按照条件分页查询用户列表
PageInfo<Map> listAll(Integer page, Integer limit,String userName,String phonenumber); //动态sql
//登录查询
User loginSelect(String loginName, String password);
//添加(用户表)
int insertSelective(User user);
//添加(用户角色表)
int insertRole(UserRole userRole);
//修改
int update(User user);
//删除(用户表)
int delete(Integer userId);
//删除(用户角色表)
int deleteRole(Integer userId);
//根据用户Id查询身份
List selectCheckbox(Integer userId);
//查用户名
User selectLoginName(String loginName);
//根据用户名查找用户数据
User selectUserData(Integer userId);
}
IDeptService :
package com.que.service;
import com.github.pagehelper.PageInfo;
import com.que.entity.Dept;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface IDeptService {
//查询(自定义实现)
List<Dept> deptListAll();
//按照条件分页查询部门列表(自定义实现)
PageInfo<Dept> deptListAll1(Integer page, Integer limit, String deptName, String creatBy, String updateBy);
//添加(mapper接口实现)
int deptInsert(Dept dept);
//修改(mapper接口实现)
int deptUpdate(Dept dept);
//删除(mapper接口实现)
int deptDelete(Integer deptId);
}
IQuestionnaireService :
package com.que.service;
import com.que.entity.Questionnaire;
import com.que.entity.QuestionnaireResult;
import com.que.entity.QuestionnaireUser;
import com.que.entity.Tester;
import java.util.List;
import java.util.Map;
/*
*@Auther jjk
*@Date 2022/9/2*
*@Description
*/
public interface IQuestionnaireService {
List<Map> findAll(String questionTitle,String createBy);
//插入
int questionnaireInsert(Questionnaire questionnaire);
//修改
int questionnaireUpdate(Questionnaire questionnaire);
//根据问卷id查询问卷
Questionnaire findById(Integer id);
int save(QuestionnaireResult q);
//删除
int questionnaireDelete(Integer id);
List<Map> getById(Integer id);
int updateEnabled(Integer id,String checked);
}
UserServiceImpl :
package com.que.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.que.entity.User;
import com.que.entity.UserRole;
import com.que.mapper.UserMapper;
import com.que.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public PageInfo<Map> listAll(Integer page, Integer limit, String userName, String phonenumber) {
System.out.println(page);
System.out.println(limit);
//使用分页插件,完成带条件的分页查询
PageHelper.startPage(page,limit);
//查询数据
List<Map> userList= userMapper.listAll(userName,phonenumber);
System.out.println(userList);
//构建分页数据
PageInfo<Map> pi=new PageInfo<>(userList);
return pi;
}
@Override
public User loginSelect(String loginName, String password) {
return userMapper.loginSelect(loginName, password);
}
//插入(用户表)
@Override
public int insertSelective(User user) {
return userMapper.insertSelective(user); //选择性插入
//return userMapper.insert(user); //全部插入
}
//插入(用户角色表)
@Override
public int insertRole(UserRole userRole) {
return userMapper.insertRole(userRole);
}
//修改
@Override
public int update(User user) {
// return userMapper.updateByPrimaryKey(user);
return userMapper.updateByPrimaryKeySelective(user);
}
//删除(用户表)
@Override
public int delete(Integer userId) {
return userMapper.deleteByPrimaryKey(userId);
}
@Override
public int deleteRole(Integer userId) {
return userMapper.deleteRole(userId);
}
@Override
public List selectCheckbox(Integer userId) {
return userMapper.selectCheckbox(userId);
}
@Override
public User selectLoginName(String loginName) {
return userMapper.selectLoginName(loginName);
}
@Override
public User selectUserData(Integer userId) {
return userMapper.selectUserData(userId);
}
}
DeptServiceImpl :
package com.que.service.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.que.entity.Dept;
import com.que.mapper.DeptMapper;
import com.que.service.IDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class DeptServiceImpl implements IDeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public List<Dept> deptListAll() {
return deptMapper.deptListAll();
}
@Override
public PageInfo<Dept> deptListAll1(Integer page, Integer limit,String deptName, String creatBy, String updateBy) {
System.out.println("page:"+page);
System.out.println("limit:"+limit);
//使用分页插件,完成带条件的分页查询
PageHelper.startPage(page,limit);
//查询数据
List<Dept> deptList=deptMapper.deptListAll1(deptName,creatBy,updateBy);
System.out.println("deptList1:"+deptList);
//构建分页数据
PageInfo<Dept> pageInfo=new PageInfo<>(deptList);
return pageInfo;
}
@Override
public int deptInsert(Dept dept) {
return deptMapper.insertSelective(dept);
}
@Override
public int deptUpdate(Dept dept) {
return deptMapper.updateByPrimaryKeySelective(dept);
}
@Override
public int deptDelete(Integer deptId) {
return deptMapper.deleteByPrimaryKey(deptId);
}
}
UserController :
package com.que.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.que.entity.CommonResult;
import com.que.entity.User;
import com.que.entity.UserRole;
import com.que.service.IUserService;
import com.que.utils.Md5;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService iUserService; //接口
//查询1
@RequestMapping("/listAll1")
public CommonResult listAll1(Integer page, Integer limit, String userName, String phonenumber){
System.out.println("======listAll1========");
PageInfo pageInfo=iUserService.listAll(page,limit,userName,phonenumber);
return CommonResult.success((int)pageInfo.getTotal(),pageInfo.getList());
//这里的日期格式定义为全局 在spring-mvc.xml中<!-- 配置时间转换器 -->
}
//插入
@RequestMapping("/insert")
public int insert(@RequestParam("user") String jsonStr,HttpSession session){
System.out.println(jsonStr);
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//System.out.println((String) jsonObject.get("login_name"));
//创建用户对象
User user=new User();
//这里不需要set id,插入用户表之后,通过自增主键直接user.get id即可
//登录时间 未set
user.setLoginName((String) jsonObject.get("login_name"));
user.setUserName((String) jsonObject.get("user_name"));
user.setEmail((String) jsonObject.get("email"));
user.setPhonenumber((String) jsonObject.get("phonenumber"));
user.setSex((String) jsonObject.get("sex"));
//头像 未set
user.setPassword(Md5.encode((String) jsonObject.get("password")));
user.setStatus((String) jsonObject.get("status"));
//System.out.println(jsonObject.get("deptId"));
user.setDeptId(Integer.valueOf((String) jsonObject.get("dept_id")));
user.setCreateBy(((User)session.getAttribute("user")).getLoginName());
user.setUpdateBy(((User)session.getAttribute("user")).getLoginName());
user.setCreateTime(new Date()); //创建时间
user.setUpdateTime(new Date()); //修改时间
//修改人 修改时间 未set 修改时再set
user.setRemark((String) jsonObject.get("remark"));
//插入(用户表)
int iUS=iUserService.insertSelective(user);
int iRS=0;
int a=0;
for (int i = 0; i < 3; i++) {
if(jsonObject.get("roles"+i)==null){
a++;
continue;
}
Integer role = Integer.valueOf((String) jsonObject.get("roles"+i));
UserRole userRole=new UserRole(user.getUserId(),role);
//插入(用户角色表)
int count=iUserService.insertRole(userRole);
iRS=count+iRS;
}
//判断两次插入的次数
if(iUS==1 && iRS==3-a){
return 0;
}else {
return 1;
}
}
//修改
@RequestMapping("/update")
public int update(@RequestParam("user") String jsonStr,HttpSession session){
System.out.println("======update========");
System.out.println(jsonStr);
JSONObject jsonObject=JSONObject.parseObject(jsonStr);
User user=new User();
user.setUserId(Integer.valueOf((String) jsonObject.get("user_id")));
user.setLoginName((String) jsonObject.get("login_name"));
user.setUserName((String) jsonObject.get("user_name"));
user.setEmail((String) jsonObject.get("email"));
user.setPhonenumber((String) jsonObject.get("phonenumber"));
user.setSex((String) jsonObject.get("sex"));
//头像 未set
//user.setPassword(Md5.encode((String) jsonObject.get("password")));
user.setStatus((String) jsonObject.get("status"));
user.setDeptId(Integer.valueOf((String) jsonObject.get("dept_id")));
//创建人 未set
user.setUpdateTime(new Date());
user.setUpdateBy(((User)session.getAttribute("user")).getLoginName());
user.setRemark((String) jsonObject.get("remark"));
//修改(用户表)
int iUS= iUserService.update(user);
//删除(用户角色表)
int Del=iUserService.deleteRole(user.getUserId());
//插入(用户角色表)
int iRS=0;
int a=0;
for (int i = 0; i < 3; i++) {
if(jsonObject.get("roles"+i)==null){
a++;
continue;
}
Integer role = Integer.valueOf((String) jsonObject.get("roles"+i));
UserRole userRole=new UserRole(user.getUserId(),role);
//插入(用户角色表)
int count=iUserService.insertRole(userRole);
iRS=count+iRS;
}
//判断修改、插入、删除的次数
if(iUS==1 && Del==1 && iRS==3-a){
return 0;
}else {
return 1;
}
}
//修改
@RequestMapping("/passwordUpdate")
public int passwordUpdate(@RequestParam("userPw") String jsonStr){
System.out.println("======passwordUpdate========");
System.out.println("jsonStr:"+jsonStr);
JSONObject jsonObject=JSONObject.parseObject(jsonStr);
User user=new User();
user.setUserId(Integer.valueOf((String) jsonObject.get("user_id")));
user.setPassword((String) jsonObject.get("password"));
//修改(用户表)
int iUS= iUserService.update(user);
//判断修改的次数
if(iUS==1){
return 0;
}else {
return 1;
}
}
//删除
@RequestMapping("/delete")
public CommonResult delete(@RequestParam("idList")String idList){
System.out.println("======delete========");
//System.out.println(idList);
int count =0;
//int count1=0;
JSONArray jsonArray = JSONArray.parseArray(idList);
System.out.println(jsonArray);
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Integer userId = (Integer)jsonObject.get("userId");
//count = iUserService.delete(userId);
User user=new User();
user.setUserId(userId);
user.setFlag("2");
count=iUserService.update(user);
//count1=iUserService.deleteRole(userId); //保留数据,不做删除
}
//return count==1&&count1==1?CommonResult.success():CommonResult.fail();
return count==1?CommonResult.success():CommonResult.fail();
}
//登陆查询
@RequestMapping("/loginSelect")
public CommonResult loginSelect(String username,String password,HttpSession session){
System.out.println(username+" ======================= "+password);
User user1 = iUserService.selectLoginName(username);
if(user1!=null){
User user2 = iUserService.loginSelect(username,Md5.encode(password));
if(user2!=null){
session.setAttribute("user",user2);
return new CommonResult(0,"success",null,user2);
}
else {
return new CommonResult(1,"fail",null,null);
}
}
return new CommonResult(2,"fail",null,null);
}
//根据用户Id查询身份权限
@RequestMapping("/selectCheckbox")
public List selectCheckbox(Integer userId){
List selectCheckbox = iUserService.selectCheckbox(userId);
return selectCheckbox;
}
@RequestMapping("/selectUserData")
public User selectUserData(Integer userId){
User user = iUserService.selectUserData(userId);
return user;
}
}
DeptController :
package com.que.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.que.entity.CommonResult;
import com.que.entity.Dept;
import com.que.entity.User;
import com.que.entity.UserRole;
import com.que.service.IDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/dept")
public class DeptController {
@Autowired
private IDeptService iDeptService;
@RequestMapping("/deptListAll")
public List<Dept> deptListAll(){
return iDeptService.deptListAll();
}
@RequestMapping("/deptListAll1")
public CommonResult deptListAll1(Integer page,Integer limit,String deptName, String creatBy, String updateBy){
System.out.println("=====deptListAll1========");
System.out.println("page:"+page);
System.out.println("limit:"+limit);
PageInfo pageInfo=iDeptService.deptListAll1(page,limit,deptName,creatBy,updateBy);
System.out.println("pageInfo:"+pageInfo);
return CommonResult.success((int) pageInfo.getTotal(),pageInfo.getList());
}
@RequestMapping("/deptInsert")
public int insert(@RequestParam("dept") String jsonStr, HttpSession session){
System.out.println("=====deptInsert========");
System.out.println(jsonStr);
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//System.out.println((String) jsonObject.get("loginName"));
//创建用户对象
Dept dept=new Dept();
dept.setDeptName((String) jsonObject.get("deptName"));
dept.setCreateBy(((User)session.getAttribute("user")).getLoginName());
dept.setUpdateBy(((User)session.getAttribute("user")).getLoginName());
dept.setOrderNum(Integer.valueOf((String) jsonObject.get("orderNum")));
dept.setStatus((String) jsonObject.get("status"));
//dept.setCreateBy((String) jsonObject.get("createBy"));
dept.setCreateTime(new Date()); //创建时间
dept.setUpdateTime(new Date()); //修改时间 修改时UpdateTime还会再次更新
System.out.println(dept);
//插入(用户表)
int iDS=iDeptService.deptInsert(dept);
if(iDS==1){
return 0;
}else {
return 1;
}
}
//修改
@RequestMapping("/deptUpdate")
public int update(@RequestParam("dept") String jsonStr,HttpSession session){
System.out.println("======update========");
System.out.println("jsonStr"+jsonStr);
JSONObject jsonObject=JSONObject.parseObject(jsonStr);
Dept dept=new Dept();
dept.setDeptId(Integer.valueOf((String) jsonObject.get("deptId")));
dept.setDeptName((String) jsonObject.get("deptName"));
dept.setUpdateBy(((User)session.getAttribute("user")).getLoginName());
dept.setOrderNum(Integer.valueOf((String) jsonObject.get("orderNum")));
dept.setStatus((String) jsonObject.get("status"));
//dept.setCreateBy((String) jsonObject.get("create_by"));
dept.setUpdateTime(new Date()); //修改时间 修改时UpdateTime还会再次更新
//修改(用户表)
int iDS= iDeptService.deptUpdate(dept);
//判断
if(iDS==1){
return 0;
}else {
return 1;
}
}
//删除
@RequestMapping("/deptDelete")
public CommonResult delete(@RequestParam("idList")String idList){
System.out.println("======deptDelete========");
System.out.println("idList:::::"+idList);
int count =0;
JSONArray jsonArray = JSONArray.parseArray(idList);
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Integer deptId = (Integer)jsonObject.get("deptId");
Dept dept=new Dept();
dept.setDeptId(deptId);
dept.setDelFlag("2");
//count = iUserService.delete(userId);
//count=iDeptService.deptDelete(deptId);
count=iDeptService.deptUpdate(dept);
}
return count==1?CommonResult.success():CommonResult.fail();
}
}
QuestionnaireController :
package com.que.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.que.entity.*;
import com.que.service.IQuestionnaireDetailsService;
import com.que.service.IQuestionnaireService;
import com.que.service.IQuestionnaireUserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
import java.util.Map;
/*
*@Auther jjk
*@Date 2022/9/2*
*@Description
*/
@Controller
@RequestMapping("/questionnaire")
public class QuestionnaireController {
@Resource
private IQuestionnaireService questionnaireService;
@Resource
private IQuestionnaireDetailsService questionnaireDetailsService;
@Resource
private IQuestionnaireUserService questionnaireUserService;
//查询
@ResponseBody
@RequestMapping("/query")
public CommonResult query(Integer page,Integer limit,String questionTitle,String createBy){
PageHelper.startPage(page,limit);
List<Map> all = questionnaireService.findAll(questionTitle,createBy);
PageInfo pageInfo = new PageInfo(all);
System.out.println(pageInfo.getList());
return CommonResult.success((int) pageInfo.getTotal(),pageInfo.getList());
}
//插入
@ResponseBody
@RequestMapping("/questionnaireInsert")
public CommonResult questionnaireInsert(@RequestParam("questionnaire") String jsonStr, HttpSession session){
System.out.println("=====questionnaireInsert========");
System.out.println("jsonStr:"+jsonStr);
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//创建用户对象
User user = (User) session.getAttribute("user");
Questionnaire questionnaire=new Questionnaire();
questionnaire.setTitle((String) jsonObject.get("title"));
questionnaire.setAnonymous((String) jsonObject.get("anonymous"));
questionnaire.setCreateBy(user.getLoginName());
questionnaire.setCreateTime(new Date());
questionnaire.setUpdateBy(user.getLoginName());
questionnaire.setUpdateTime(new Date());
questionnaire.setEnabled("1");
questionnaire.setDeleteFlag("0");
System.out.println(questionnaire);
//插入
int qNS= questionnaireService.questionnaireInsert(questionnaire);
System.out.println(qNS);
return qNS==1?CommonResult.success():CommonResult.fail();
}
//修改
@ResponseBody
@RequestMapping("/questionnaireUpdate")
public CommonResult questionnaireUpdate(@RequestParam("questionnaire") String jsonStr,HttpSession session){
System.out.println("======questionnaireUpdate========");
//System.out.println(jsonStr);
JSONObject jsonObject=JSONObject.parseObject(jsonStr);
Questionnaire questionnaire=new Questionnaire();
questionnaire.setId(Integer.valueOf((String)jsonObject.get("id")));
questionnaire.setTitle((String) jsonObject.get("title"));
questionnaire.setAnonymous((String) jsonObject.get("anonymous"));
questionnaire.setUpdateBy(((User)session.getAttribute("user")).getLoginName());
questionnaire.setUpdateTime(new Date());
//修改
int qNS=questionnaireService.questionnaireUpdate(questionnaire);
//判断修改、插入、删除的次数
return qNS==1?CommonResult.success():CommonResult.fail();
}
//删除
@ResponseBody
@RequestMapping("/questionnaireDelete")
public CommonResult questionnaireDelete(@RequestParam("idList") String idList){
System.out.println("======questionnaireDelete========");
//System.out.println(idList);
int count =0;
JSONArray jsonArray = JSONArray.parseArray(idList);
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Integer questionnaireId = (Integer)jsonObject.get("id");
Questionnaire questionnaire=new Questionnaire();
questionnaire.setId(questionnaireId);
questionnaire.setDeleteFlag("1");
//count = iUserService.delete(userId);
//这里是修改delete_flag的值 0存在 1删除
count=questionnaireService.questionnaireUpdate(questionnaire);
}
return count==1?CommonResult.success():CommonResult.fail();
}
@ResponseBody
@RequestMapping("/login")
public CommonResult login(QuestionnaireUser questionnaireUser){
System.out.println(questionnaireUser);
//判断是否做过问卷
QuestionnaireUser register = questionnaireUserService.findByPhone(questionnaireUser.getPhone(), questionnaireUser.getQuestionnaireId());
//没做过
if(register==null){
questionnaireUser.setCreateTime(new Date());
int count = questionnaireUserService.save(questionnaireUser);
QuestionnaireUser q = questionnaireUserService.findByPhone(questionnaireUser.getPhone(), questionnaireUser.getQuestionnaireId());
return count==1?CommonResult.success(count,q):CommonResult.fail();
}else {
int flag = questionnaireUserService.count(register.getId());
return flag==0?CommonResult.success(1,register):CommonResult.success(0,register);
}
}
@ResponseBody
@RequestMapping("/insert")
public CommonResult insertResult(@RequestParam("list") String jsonStr){
JSONArray jsonArray = JSONArray.parseArray(jsonStr);
int count = 0;
for(int i=0;i<jsonArray.size();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
Integer userId = jsonObject.getInteger("userId");
Integer detailsId = jsonObject.getInteger("detailsId");
String answer = jsonObject.getString("answer");
QuestionnaireResult qr = new QuestionnaireResult();
qr.setUserId(userId);
qr.setAnswer(answer);
qr.setDetailsId(detailsId);
count += questionnaireService.save(qr);
}
return count==jsonArray.size()?CommonResult.success():CommonResult.fail();
}
@ResponseBody
@RequestMapping("/copyQuestionnaire")
public CommonResult copyQuestionnaire(@RequestParam("questionnaire")String jsonStr){
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
Integer id = jsonObject.getInteger("id");
String anonymous = jsonObject.getString("anonymous");
String title = jsonObject.getString("title");
Questionnaire q = questionnaireService.findById(id);
q.setId(null);
q.setTitle(title);
q.setAnonymous(anonymous);
int count = questionnaireService.questionnaireInsert(q);
Integer qId = q.getId();
List<QuestionnaireDetails> list = questionnaireDetailsService.getById(id);
int num = 0;
for(QuestionnaireDetails qd : list){
qd.setId(null);
qd.setQuestionnaireId(qId);
num += questionnaireDetailsService.insert(qd);
}
return count==1&&num==list.size()?CommonResult.success():CommonResult.fail();
}
@ResponseBody
@RequestMapping("/updataEnabled")
public CommonResult updateEnabled(String id,String checked){
Integer uid = Integer.valueOf(id);
if("false".equals(checked)){
checked = "0";
}else {
checked = "1";
}
System.out.println(uid+" "+checked);
int count = questionnaireService.updateEnabled(uid,checked);
return count==1?CommonResult.success():CommonResult.fail();
}
}
ForwardController:
package com.que.controller;
import com.que.entity.*;
import com.que.service.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.que.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.ui.Model;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.util.*;
@Controller
public class ForwardController {
@Resource
private IRoleService roleService;
@Resource
private IMenuCollectionService menuCollectionService;
@Resource
private IQuestionnaireService questionnaireService;
@Autowired
private IQuestionnaireDetailsService service;
//用户管理页面
@Autowired
private IQuestionService questionService;
@Autowired
private IQuestionnaireDetailsService detailsService;
@Autowired
private IQuestionnaireUserService questionnaireUserService;
@RequestMapping("/user/toUser")
public String user(){
return "/admin/user";
}
//跳转到问题管理页面
//题目管理
@RequestMapping("/question/toShowQuestion")
public String question(){
return "/admin/question";
}
//
@RequestMapping("/tester/toLogin")
public String toLogin(){
return "/tester/login";
}
//
@RequestMapping("/tester/index")
public String index(Integer testerId, Model model){
model.addAttribute("testerId",testerId);
return "/tester/test";
}
//测试管理
//跳转到测试管理页面
@RequestMapping("/tester/toShowTester")
public String testerManage(){
return "/admin/testerManage";
}
//跳转到报表统计页面
//报表统计
@RequestMapping("/test/toMyBigShow")
public String dailyTestNumber(){
return "/admin/charts";
}
//跳转到结果页
@RequestMapping("/tester/result")
public String testResult(Integer testerId,Model model){
System.out.println(testerId);
model.addAttribute("testerId",testerId);
return "/tester/result";
}
//日志管理页面
@RequestMapping("/log/toShowLog")
public String toLog(){
return "/admin/log";
}
//部门管理页面
@RequestMapping("/dept/toDept")
public String dept(){
return "/admin/dept";
}
//问卷管理
@RequestMapping("/questionnaire/toQuestionnaire")
public String questionnaire(){
return "/admin/questionnaire_manage";
}
@RequestMapping("/toLogin")
public String login(){
return "/admin/login";
}
@RequestMapping("/toHome")
public String home(Integer userId,Model model){
model.addAttribute("userId",userId);
UserRole byUserId = roleService.findByUserId(userId);
List<MenuTree> treeList = menuCollectionService.findById(byUserId.getRoleId());
model.addAttribute("treeList",treeList);
return "/admin/menu";
}
/**
* 问卷管理-添加题目
* @param id
* @param model
* @return
*/
@RequestMapping("/toQuestionnaireDetails/{id}")
public String toQuestionnaireDetails(@PathVariable("id") Integer id,Model model){
model.addAttribute("id",id);
return "/admin/questionnaireDetails";
}
//问卷预览页面
@RequestMapping("/toQuestionnairePreview/{id}")
public String toQuestionnairePreview(@PathVariable("id") Integer id, Model model){
List<QuestionnaireDetails> tqd = detailsService.getById(id);
List<Map> tq = questionnaireService.getById(id);
model.addAttribute("tqd",tqd);
model.addAttribute("tq",tq);
return "/admin/questionnairePreview";
}
//问卷结果页面
@RequestMapping("/toQuestionnaireResult/{id}")
public String toQuestionnaireResult(@PathVariable("id") Integer id, Model model){
List<QuestionnaireDetails> tqd = detailsService.getById(id);
List<Map> tq = questionnaireService.getById(id);
List<Map> tqu = questionnaireUserService.getByQid(id);
model.addAttribute("tqd",tqd);
model.addAttribute("tq",tq);
model.addAttribute("tqu",tqu);
return "/admin/questionnaireResult";
}
//用户管理页面
@RequestMapping("/menu/toMenu")
public String menu(){
return "/admin/menu_manager";
}
//角色管理页面
@RequestMapping("/role/toRole")
public String role(){
return "/admin/role";
}
//退出登录
@RequestMapping("/user/logOut")
public String logOut(HttpSession session){
session.invalidate();
return "/admin/login";
}
@RequestMapping("/questionnaire/login/{id}")
public String toLogin(@PathVariable("id")Integer id,Model model){
System.out.println(id);
Questionnaire que = questionnaireService.findById(id);
model.addAttribute("questionnaire",que);
return "/tester/questionnaire_login";
}
@RequestMapping("/questionnaire/index")
public String toIndex(Integer userId,Integer questionnaireId,Model model){
System.out.println(userId+" "+questionnaireId);
Questionnaire questionnaire = questionnaireService.findById(questionnaireId);
PageHelper.startPage(1,20);
List<QuestionnaireDetails> list = service.getById(questionnaireId);
PageInfo pi = new PageInfo(list);
model.addAttribute("userId",userId);
model.addAttribute("questionnaire",questionnaire);
model.addAttribute("questionList",pi);
System.out.println(pi.getList());
return "/tester/questionnaire_test";
}
}
QuestionnaireServiceImpl :
package com.que.service.impl;
import com.que.entity.Questionnaire;
import com.que.entity.QuestionnaireResult;
import com.que.entity.QuestionnaireUser;
import com.que.mapper.QuestionnaireMapper;
import com.que.service.IQuestionnaireService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/*
*@Auther jjk
*@Date 2022/9/2*
*@Description
*/
@Service
public class QuestionnaireServiceImpl implements IQuestionnaireService {
@Resource
private QuestionnaireMapper questionnaireMapper;
@Override
public List<Map> findAll(String questionTitle,String createBy) {
return questionnaireMapper.query(questionTitle,createBy);
}
@Override
public int questionnaireInsert(Questionnaire questionnaire) {
return questionnaireMapper.insert(questionnaire);
}
@Override
public int questionnaireUpdate(Questionnaire questionnaire) {
return questionnaireMapper.updateByPrimaryKeySelective(questionnaire);
}
@Override
public Questionnaire findById(Integer id) {
return questionnaireMapper.selectByPrimaryKey(id);
}
@Override
public int save(QuestionnaireResult q) {
return questionnaireMapper.save(q);
}
@Override
public int questionnaireDelete(Integer id) {
return questionnaireMapper.deleteByPrimaryKey(id);
}
@Override
public List<Map> getById(Integer id) {
return questionnaireMapper.getById(id);
}
@Override
public int updateEnabled(Integer id, String checked) {
return questionnaireMapper.update(id,checked);
}
}
user.jsp:
<%--
Created by IntelliJ IDEA.
User: 33154
Date: 2022/8/29
Time: 15:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户管理</title>
<!-- 引入 layui.css -->
<%-- <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/assets/plugins/layui-v2.6.8/layui/css/layui.css?t=<%=Math.random()%>"/>--%>
<!-- 引入 layui.css -->
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
</head>
<body>
<form class="layui-form" action="" style="margin-top: 20px">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">真实姓名:</label>
<div class="layui-input-inline">
<input type="text" name="userName" placeholder="请输入姓名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">手机号:</label>
<div class="layui-input-inline">
<input type="text" name="phonenumber" placeholder="请输入手机号" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="formDemo">查询</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</div>
</form>
<!--要渲染的数据表格-->
<table id="user" lay-filter="user"></table>
<!--弹出表单-->
<form class="layui-form" action="" style="display: none;margin:10px" id="userFrm" lay-filter="userFrm">
<!--用户编号,修改的时候,需要传这个值-->
<input type="hidden" id="user_id" name="user_id"/>
<input type="hidden" id="creat_by" name="creat_by"/>
<input type="hidden" id="update_by" name="update_by"/>
<!--设置提交的地址-->
<input type="hidden" id="action" name="action">
<div class="layui-form-item">
<label class="layui-form-label">登录名</label>
<div class="layui-input-block">
<input type="text" name="login_name" lay-verify="required|login_name" placeholder="请输入登录名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="required|number" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">真实姓名</label>
<div class="layui-input-block">
<input type="text" name="user_name" lay-verify="required" placeholder="请输入真实姓名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" lay-verify="required|email" placeholder="请输入邮箱" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电话</label>
<div class="layui-input-block">
<input type="text" name="phonenumber" lay-verify="required|phone" placeholder="请输入电话" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">部门</label>
<div class="layui-input-block">
<select name="dept_id" id="dept_id" lay-verify="required">
<option value=""></option>
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性别</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="男" title="男">
<input type="radio" name="sex" value="女" title="女" checked>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="checkbox" checked="" name="status" value="1" lay-skin="switch" lay-filter="switchTest" lay-text="启用|禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<input type="text" name="remark" lay-verify="required" placeholder="请输入备注" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item" pane="">
<label class="layui-form-label">原始复选框</label>
<div class="layui-input-block">
<input type="checkbox" name="roles1" value="1" lay-skin="primary" title="管理员" >
<input type="checkbox" name="roles2" value="2" lay-skin="primary" title="普通角色" >
<input type="checkbox" name="roles3" value="3" lay-skin="primary" title="测试人员" >
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="userBtnSubmit">立即提交</button>
</div>
</div>
</form>
<%--弹出密码表单--%>
<form class="layui-form" action="" style="display: none;margin:10px" id="userPwFrm" lay-filter="userPwFrm">
<!--用户编号,修改的时候,需要传这个值-->
<input type="hidden" name="user_id"/>
<!--设置提交的地址-->
<input type="hidden" id="actionPw" name="actionPw">
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="userPwBtnSubmit">提交</button>
</div>
</div>
</form>
<!--定义表格工具条-->
<script type="text/html" id="userBar">
<div class="layui-btn-container">
<!--lay-event:用于设置一个按钮的特定事件,事件名字自己定义-->
<button type="button" class="layui-btn" lay-event="userAdd">添加</button>
<button type="button" class="layui-btn layui-btn-danger" lay-event="userBatchDel">批量删除</button>
</div>
</script>
<script type="text/html" id="userRowBar">
<div class="layui-btn-container">
<!--lay-event:用于设置一个按钮的特定事件,事件名字自己定义-->
<button type="button" class="layui-btn layui-btn-primary" lay-event="userReset">重置密码</button>
<button type="button" class="layui-btn layui-btn-sm" lay-event="userEdit">编辑</button>
<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" lay-event="userDel">删除</button>
</div>
</script>
<%--<script type="text/javascript" src="${pageContext.request.contextPath}/assets/plugins/layui-v2.6.8/layui/layui.js?t=<%=Math.random()%>"></script>--%>
<!-- 引入 layui.js -->
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<script>
layui.use(['table','layer','laydate','form'], function(){
var table = layui.table //表格组件
,layer=layui.layer //弹出层
,laydate=layui.laydate //日期
,form=layui.form //表单
,$ = layui.$; //jq
//加载部门下拉框
loadDeptInfo();
form.on('submit(formDemo)',function (data) {
console.log(data);
//对表格进行重载
table.reload('user', {
where: { //设定异步数据接口的额外参数,任意设
userName: data.field.userName,
phonenumber: data.field.phonenumber
},
page: {
curr: 1 //重新从第 1 页开始
}
})
})
form.verify({
login_name : function(value, item){ //value:表单的值、item:表单的DOM对象
if(!new RegExp("^[a-zA-Z0-9_\u4e00-\u9fa5\\s·]+$").test(value)){
return '用户名不能有特殊字符';
}
if(/(^\_)|(\__)|(\_+$)/.test(value)){
return '用户名首尾不能出现下划线\'_\'';
}
if(/^\d+\d+\d$/.test(value)){
return '用户名不能全为数字';
}
//如果不想自动弹出默认提示框,可以直接返回 true,这时你可以通过其他任意方式提示(v2.5.7 新增)
if(value === 'xxx'){
alert('用户名不能为敏感词');
return true;
}
}
//我们既支持上述函数式的方式,也支持下述数组的形式
//数组的两个值分别代表:[正则匹配、匹配不符时的提示文字]
,pass: [
/^[\S]{6,12}$/
,'密码必须6到12位,且不能出现空格'
]
});
//渲染表格数据
table.render({
elem: '#user' //渲染的目标元素
,url: '${pageContext.request.contextPath}/user/listAll1' //发送请求获取数据
//,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
,toolbar:"#userBar" //设置表格工具条
//,defaultToolbar: ['filter']
,page:true //启用分页
,limit:20 //每页条数
,limits:[5,10,20,30] //可选条数
,cols: [[ //表格列的定义
{title:"全选",type:"checkbox"}
,{field:'user_id', title: 'ID', sort: true}
,{field:'login_name' ,width:100 , title: '登录名'}
,{field:'user_name',width:100, title: '真实姓名'}
,{field:'email' ,width:100, title: '邮箱'}
,{field:'password',width:100, title: '密码',hide:true}
,{field:'phonenumber',width:100,title: '电话'}
,{field:'sex', title: '性别', sort: true,templet:function (d){
//console.log(d);
if(d.sex==0)
return "<font color='blue'>男</font>";
else
return "<font color='red'>女</font>";
}}
,{field:'avatar',width:100, title: '头像'}
,{field:'status', title: '状态', sort: true,templet:function (d){
//console.log(d);
if(d.status==0)
return "<font color='blue'>在线</font>";
else
return "<font color='red'>离线</font>";
}}
,{field:'dept_name',width:100, title: '部门'}
,{field:'dept_id', title: '部门编号'}
,{field:'create_time',width:180 , title: '创建时间'}
,{field:'create_by',width:100, title: '创建人'}
,{field:'update_by',width:100, title: '修改人'}
,{field:'update_time', width:180, title: '修改时间'}
,{field:'remark', title: '备注'}
,{title:"操作",width:250,fixed:"right",toolbar:"#userRowBar"}
]]
});
//通过table组件监听表格头部工具条触发的事件
table.on("toolbar(user)",function (obj){
console.log(obj);
//根据触发的事件做特定处理
switch (obj.event){
case "userAdd":
//表单重置
clearFrm();
//弹出表单
$("#action").val("${pageContext.request.contextPath}/user/insert");
showUserFrm();
break;
case "userBatchDel":
//点击批量删除,获取当前选中行的信息
var checkStatus = table.checkStatus('user'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length==0){
layer.msg("请先选中一行");
return;
}
var ids = [];
for(var i=0;i<checkStatus.data.length;i++){
ids.push({userId: checkStatus.data[i].user_id});
}
//拼接数组中的id: 3,4,5,6
delUser(ids);
break;
}
})
//通过table组件,监听行工具条事件
table.on("tool(user)",function (obj){
console.log(obj);
//判断点击按钮的事件
switch (obj.event){
case "userEdit":
clearFrm();
//弹出表单
$("#action").val("${pageContext.request.contextPath}/user/update");
showUserFrm();
//为表单设值
console.log(obj.data);
form.val("userFrm",obj.data);
selectCheckbox(obj.data.user_id);
break;
case "userReset":
clearPwFrm();
$("#actionPw").val("${pageContext.request.contextPath}/user/passwordUpdate");
showUserPwFrm();
form.val("userPwFrm",obj.data);
break;
case "userDel":
layer.confirm("确定要删除么?",function (index){
console.log(obj)
var ids = [] ;
ids.push({userId:obj.data.user_id});
delUser(ids);
//关闭确认框
layer.close(index);
})
break;
}
})
//获取复选框数据
function selectCheckbox(userId) {
$.ajax({
url:"${pageContext.request.contextPath}/user/selectCheckbox",
type:"get",
data:{userId},
dataType:"json",
success:function (res) {
// $("#userFrm input[type='checkbox'][name='"+res+"']").val(true);
// form.val("userFrm",{"roles[1]": true});
$('#userFrm input[type="checkbox"][name="roles'+res+'"]').prop('checked', true);
}
})
}
//绑定表单中,提交按钮的提交事件
form.on("submit(userBtnSubmit)",function (obj){
console.log(obj);
$.ajax({
url:$("#action").val(),
type:"post",
data:{"user":JSON.stringify(obj.field)}, //表单数据
dataType:"json",
success:function (res){
console.log("从contorller返回的int:"+res);
if(res==0){
layer.msg("操作成功",{icon:6});
//关闭表单
layer.close(userFrmIndex);
//表单重置
//$("#userFrm")[0].reset();
clearFrm();
//刷新表格
table.reload('user', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("添加失败",{icon:5});
}
}
})
})
//绑定密码表单中,提交按钮的提交事件
form.on("submit(userPwBtnSubmit)",function (obj){
console.log(obj);
$.ajax({
url:$("#actionPw").val(),
type:"post",
data:{"userPw":JSON.stringify(obj.field)}, //表单数据
dataType:"json",
success:function (res){
console.log("从contorller返回的int:"+res);
if(res==0){
layer.msg("修改成功",{icon:6});
//关闭表单
layer.close(userPwFrmIndex);
//表单重置
clearPwFrm();
//刷新表格
table.reload('user', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("添加失败",{icon:5});
}
}
})
})
//删除用户
function delUser(ids){
console.log(ids)
$.ajax({
url:"${pageContext.request.contextPath}/user/delete",
data:{"idList":JSON.stringify(ids)},
type:"post",
dataType:"json",
success:function (res){
console.log(res);
if(res.code==0){
layer.msg("删除成功!",{icon:6});
//重新加载表格
//刷新表格
table.reload('user', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("删除失败!",{icon:5})
}
}
})
}
//加载部门数据
function loadDeptInfo(){
$.ajax({
url:"${pageContext.request.contextPath}/dept/deptListAll",
// data: {"page":1,"limit":20},
type: "get",
// dataType:"json",
success:function (res){
console.log(res);
//循环数据,将班级添加到下拉框中
for(var i=0;i<res.length;i++){
var user = res[i];
$("#dept_id").append("<option value='"+user.dept_id+"'>"+user.dept_name+"</option>")
}
//重新渲染下拉框
form.render('select')
}
})
}
//表单重置
function clearFrm(){
$("#userFrm")[0].reset();
}
//密码表单重置
function clearPwFrm(){
$("#userPwFrm")[0].reset();
}
var userFrmIndex;
//定义函数弹出学生表单
function showUserFrm(){
//页面层
userFrmIndex=layer.open({
type: 1,
area: ['600px',"400px"],
title:"用户信息",
content: $('#userFrm') //弹出页面元素
});
}
var userPwFrmIndex;
//定义函数弹出学生密码空表单
function showUserPwFrm(){
//页面层
userPwFrmIndex=layer.open({
type: 1,
area: ['600px',"400px"],
title:"重置密码",
content: $('#userPwFrm') //弹出页面元素
});
}
});
</script>
</body>
</html>
dept.jsp:
<%--
Created by IntelliJ IDEA.
User: 33154
Date: 2022/9/2
Time: 9:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>部门管理</title>
<!-- 引入 layui.css -->
<%-- <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/assets/plugins/layui-v2.6.8/layui/css/layui.css?t=<%=Math.random()%>"/>--%>
<!-- 引入 layui.css -->
<link rel="stylesheet" href="//unpkg.com/layui@2.6.8/dist/css/layui.css">
</head>
<body>
<form class="layui-form" action="" style="margin-top: 20px">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">部门名称:</label>
<div class="layui-input-inline">
<input type="text" name="deptName" placeholder="部门名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">创建人:</label>
<div class="layui-input-inline">
<input type="text" name="creatBy" placeholder="创建人" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">修改人:</label>
<div class="layui-input-inline">
<input type="text" name="updateBy" placeholder="修改人" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="formDemo">查询</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</div>
</form>
<!--要渲染的数据表格-->
<table id="dept" lay-filter="dept"></table>
<!--弹出表单-->
<form class="layui-form" action="" style="display: none;margin:10px" id="deptFrm" lay-filter="deptFrm">
<!--学生编号,修改的时候,需要传这个值-->
<%-- <input type="hidden" id="studentId" name="studentId"/>--%>
<input type="hidden" id="deptId" name="deptId"/>
<input type="hidden" id="createBy" name="createBy" value="wwb" /> <!--默认为我自己,后期进行修改-->
<input type="hidden" id="updateBy" name="updateBy" value="wwb"/> <!--默认为我自己,后期进行修改-->
<!--设置提交的地址-->
<input type="hidden" id="action" name="action">
<div class="layui-form-item">
<label class="layui-form-label">部门名称</label>
<div class="layui-input-block">
<input type="text" name="deptName" lay-verify="required" placeholder="请输入部门名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<input type="text" name="orderNum" lay-verify="required" placeholder="请输入排序" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="checkbox" checked="" name="status" value="0" lay-skin="switch" lay-filter="switchTest" lay-text="可用|不可用">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="deptBtnSubmit">立即提交</button>
<button type="reset" class="layui-btn" lay-filter="deptBtnReset">重置</button>
</div>
</div>
</form>
<!--定义表格工具条-->
<script type="text/html" id="deptBar">
<div class="layui-btn-container">
<!--lay-event:用于设置一个按钮的特定事件,事件名字自己定义-->
<button type="button" class="layui-btn" lay-event="deptAdd">添加</button>
<button type="button" class="layui-btn layui-btn-danger" lay-event="deptBatchDel">批量删除</button>
</div>
</script>
<script type="text/html" id="deptRowBar">
<div class="layui-btn-container">
<!--lay-event:用于设置一个按钮的特定事件,事件名字自己定义-->
<button type="button" class="layui-btn layui-btn-sm" lay-event="deptEdit">编辑</button>
<button type="button" class="layui-btn layui-btn-sm layui-btn-danger" lay-event="deptDel">删除</button>
</div>
</script>
<!-- 引入 layui.js -->
<script src="//unpkg.com/layui@2.6.8/dist/layui.js"></script>
<script>
layui.use(['table','layer','laydate','form'], function(){
var table = layui.table //表格组件
,layer=layui.layer //弹出层
,laydate=layui.laydate //日期
,form=layui.form //表单
,$ = layui.$; //jq
form.on('submit(formDemo)',function (data) {
console.log(data);
table.reload('dept', {
where: { //设定异步数据接口的额外参数,任意设
deptName: data.field.deptName,
creatBy: data.field.creatBy,
updateBy:data.field.updateBy
},
page: {
curr: 1 //重新从第 1 页开始
}
})
})
//渲染表格数据
table.render({
elem: '#dept' //渲染的目标元素
,url: '${pageContext.request.contextPath}/dept/deptListAll1' //发送请求获取数据
,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
,toolbar:"#deptBar" //设置表格工具条
,defaultToolbar: ['filter']
//,width:1000 //生成的表格,显示的宽度将被固定为1000
,page:true //启用分页
,limit:20 //每页条数
,limits:[5,10,20,30] //可选条数
,cols: [[ //表格列的定义
{title:"全选",type:"checkbox"}
//传进来的数据是dept对象,field用实体类中的属性(小驼峰)
,{field:'deptId', title: '编号', sort: true}
,{field:'deptName', width:100, title: '部门名称'}
,{field:'orderNum', title: '排序',sort:true}
,{field:'status', width:100, title: '状态',templet:function (d){
//console.log(d);
if(d.status==0)
return '<button type="button" class="layui-btn layui-btn-sm">正常</button>';
else
return '<button type="button" class="layui-btn layui-btn-sm">异常</button>';
}}
,{field:'createBy', width:80, title: '创建人',sort: true}
,{field:'createTime', width:180, title: '创建时间',sort: true}
,{field:'updateBy', width:80, title: '修改人'}
,{field:'updateTime', width:180, title: '修改时间',sort: true}
,{title:"操作",width:150,fixed:"right",toolbar:"#deptRowBar"}
]]
});
//通过table组件监听表格头部工具条触发的事件
table.on("toolbar(dept)",function (obj){
console.log(obj);
//根据触发的事件做特定处理
switch (obj.event){
case "deptAdd":
//弹出表单
$("#action").val("${pageContext.request.contextPath}/dept/deptInsert");
showDeptFrm();
break;
case "deptBatchDel":
//点击批量删除,获取当前选中行的信息
var checkStatus = table.checkStatus('dept'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length==0){
layer.msg("请先选中一行");
return;
}
var ids = [];
for(var i=0;i<checkStatus.data.length;i++){
ids.push({deptId: checkStatus.data[i].deptId});
}
//拼接数组中的id: 3,4,5,6
delDept(ids);
break;
}
})
//通过table组件,监听行工具条事件
table.on("tool(dept)",function (obj){
console.log(obj);
//判断点击按钮的事件
switch (obj.event){
case "deptEdit":
//弹出表单
$("#action").val("${pageContext.request.contextPath}/dept/deptUpdate");
showDeptFrm();
//为表单设值
console.log(obj);
form.val("deptFrm",obj.data);
break;
case "deptDel":
layer.confirm("确定要删除么?",function (index){
var ids = [] ;
ids.push({deptId:obj.data.deptId});
delDept(ids);
//关闭确认框
layer.close(index);
})
break;
}
})
//绑定表单中,提交按钮的提交事件
form.on("submit(deptBtnSubmit)",function (obj){
console.log(obj);
if(obj.field.status==null){
obj.field.status='1';
}
$.ajax({
url:$("#action").val(),
type:"post",
data:{"dept":JSON.stringify(obj.field)}, //表单数据
dataType:"json",
success:function (res){
console.log("从contorller返回的int:"+res);
if(res==0){
layer.msg("添加成功",{icon:6});
//关闭表单
layer.close(deptFrmIndex);
//表单重置
$("#deptFrm")[0].reset();
//刷新表格
table.reload('dept', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("添加失败",{icon:5});
}
}
})
})
//删除用户
function delDept(ids){
console.log(ids)
$.ajax({
url:"${pageContext.request.contextPath}/dept/deptDelete",
data:{"idList":JSON.stringify(ids)},
type:"post",
dataType:"json",
success:function (res){
console.log(res);
if(res.code==0){
layer.msg("删除成功!",{icon:6});
//重新加载表格
//刷新表格
table.reload('dept', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("删除失败!",{icon:5})
}
}
})
}
var deptFrmIndex;
//定义函数弹出学生表单
function showDeptFrm(){
//页面层
deptFrmIndex=layer.open({
type: 1,
area: ['600px',"400px"],
title:"添加部门",
content: $('#deptFrm') //弹出页面元素
});
}
});
</script>
</body>
</html>
questionnaire_manage.jsp:
<%--
Created by IntelliJ IDEA.
User: jjk
Date: 2022/9/2
Time: 9:01
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>question</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/assets/layui/css/layui.css"/>
<script rel="script" type="text/javascript" src="${pageContext.request.contextPath}/assets/layui/layui.js"></script>
<script rel="script" type="text/javascript" src="${pageContext.request.contextPath}/assets/jq/jquery-1.12.4.min.js"></script>
<script rel="script" type="text/javascript" src="${pageContext.request.contextPath}/assets/jq/jquery.qrcode.min.js"></script>
</head>
<body>
<form class="layui-form" action="" id="addQuestionsFrm" lay-filter="addQuestionsFrm" style="display: none">
<input type="hidden" id="id" name="id"/>
<input type="hidden" id="enabled" name="enabled"/>
<input type="hidden" id="action" name="action"/>
<div class="layui-form-item">
<label class="layui-form-label">问卷标题</label>
<div class="layui-input-inline">
<input type="text" name="title" lay-verify="title" placeholder="请输入问卷标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">记名/匿名</label>
<div class="layui-input-inline">
<input type="checkbox" name="anonymous" id="anonymous" lay-skin="switch" lay-text="记名|匿名" checked>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="questionBtnSubmit">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary" lay-filter="deptBtnReset">重置</button>
</div>
</div>
</form>
<form class="layui-form" action="" id="selFrm" lay-event="selFrm" style="margin-top: 20px">
<div class="layui-form-item">
<label class="layui-form-label">问卷标题:</label>
<div class="layui-input-inline">
<input type="text" name="questionTitle" id="questionTitle" placeholder="请输入问卷标题" autocomplete="off" class="layui-input">
</div>
<label class="layui-form-label">创建人:</label>
<div class="layui-input-inline">
<input type="text" name="createBy" id="createBy" placeholder="请输入创建者" autocomplete="off" class="layui-input">
</div>
<div class="layui-input-inline">
<button type="button" class="layui-btn" lay-submit lay-filter="selFrm" id="search">搜索</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
<%--表格--%>
<table id="questionnaires" lay-filter="questionnaires"></table>
<%--二维码--%>
<div id="div1" lay-filter="div1" style="display:none">
<input cols="20" rows="10" id="url" value="" style="margin-left: 33px" />
<input id="copyBtn" type="button" class="layui-btn layui-btn-xs" value="复制链接" />
<div id="div2" lay-event="div2" style="padding-left: 50px;margin-top: 10px"></div>
</div>
<script type="text/html" id="questionsBar" lay-filter="questionsBar">
<div>
<button type="button" class="layui-btn" id="btnAdd" lay-event="questionsAdd"><i class="layui-icon layui-icon-add-1"></i>添加问卷</button>
<button type="button" class="layui-btn layui-btn-primary" id="questionCopy" lay-event="questionCopy"><i class="layui-icon layui-icon-add-1"></i>复制问卷</button>
<button type="button" class="layui-btn layui-btn-warm" id="questionPreview" lay-event="questionPreview"><i class="layui-icon layui-icon-layer"></i>预览问卷</button>
<button type="button" class="layui-btn layui-btn-normal" id="checkResult" lay-event="checkResult"><i class="layui-icon layui-icon-layer"></i>查看结果</button>
<button type="button" class="layui-btn layui-btn-danger" id="testDelSel" lay-event="questionsDelSel"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
</div>
</script>
<script type="text/html" id="questionsTool" lay-filter="questionsTool">
<button type="button" class="layui-btn layui-btn-xs" lay-event="questionsUpd">修改</button>
<button type="button" class="layui-btn layui-btn-normal layui-btn-xs" lay-event="addQuestions">添加题目</button>
<button type="button" class="layui-btn layui-btn-warm layui-btn-xs" lay-event="relQuestion">发布问卷</button>
<button type="button" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="questionsDel">删除</button>
</script>
<script rel="script" type="text/javascript">
layui.use(['table','layer','laydate','form'],function (){
var table = layui.table,
$ = layui.jquery,
layer = layui.layer,
form = layui.form;
form.on('submit(selFrm)',function (data) {
console.log(data);
table.reload('questionnaires', {
where: { //设定异步数据接口的额外参数,任意设
questionTitle: data.field.questionTitle,
createBy: data.field.createBy
},
page: {
curr: 1 //重新从第 1 页开始
}
})
})
//渲染表格
table.render({
elem:'#questionnaires',
height:500,
url:'${pageContext.request.contextPath}/questionnaire/query',
page:true,
limit:10,
limits:[5,10,20,50,100],
even: true,
toolbar:"#questionsBar",
cols:[[
{title: "全选",type:"checkbox" , fixed: 'left'}
, {field: 'id', title: '编号', sort: true, align: 'center', width: 80 , fixed: 'left'}
, {field: 'title', title: '问卷标题', width: 120}
//, {field: 'anonymous', title: '记名/匿名', width: 120}
,{field:'anonymous', title: '记名/匿名', sort: true,templet:function (d){
//console.log(d);
if(d.anonymous==0)
return '匿名';
else
return '记名';
}}
,{field:'enabled', title: '启用|禁用',width: 120, sort: true,templet:function (d){
//console.log(d);
if(d.enabled==0)
return ' <input type="checkbox" name="close" lay-filter="switchTest" lay-skin="switch" lay-text="ON|OFF">';
else
return '<input type="checkbox" checked name="open" lay-skin="switch" lay-filter="switchTest" lay-text="ON|OFF">';
}}
//, {field: 'enabled', title: '启用|禁用', width: 120}
, {field: 'detailsCount', title: '题目数', width: 120,sort: true}//题目数
, {field: 'userCount', title: '人数', width: 120,sort: true}//用户数
, {field: 'create_by', title: '创建人', width: 120}
, {field: 'create_time', title: '创建时间', width: 160,sort: true}
, {field: 'update_by', title: '修改人', width: 120}
, {field: 'update_time', title: '修改时间', width: 120,sort: true}
, {title: '操作', width: 360, toolbar: '#questionsTool', fixed: 'right'}
]],
initSort: {
field: 'id'//排序字段,对应 cols 设定的各字段名
, type: 'asc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
}
})
form.on('switch(switchTest)',function (data) {
//console.log();
var id = data.elem.parentElement.parentElement.parentElement.children[1].children[0].innerText;
var checked = data.elem.checked;
console.log(id+" "+checked);
$.ajax({
url:"${pageContext.request.contextPath}/questionnaire/updataEnabled",
method:'post',
data:{"id":id,"checked":checked},
dataType:'json',
success:function (res) {
console.log(res.code);
table.reload('questionnaires', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}
})
})
//通过table组件监听表格头部工具条触发的事件
table.on('toolbar(questionnaires)',function (obj) {
console.log(obj);
var e = obj.event;
switch (e) {
case "questionsAdd":
clearFrm();
$("#action").val("${pageContext.request.contextPath}/questionnaire/questionnaireInsert");
showFrm();
break;
case "questionCopy":
var checkStatus = table.checkStatus('questionnaires'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length!=1){
layer.msg("需要选中一行");
return;
}
clearFrm();
$("#action").val("${pageContext.request.contextPath}/questionnaire/copyQuestionnaire");
console.log(checkStatus.data);
form.val("addQuestionsFrm",checkStatus.data[0]);
showFrm();
break;
case "questionPreview":
var checkStatus = table.checkStatus('questionnaires'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length!=1){
layer.msg("需要选中一行");
return;
}
var id = checkStatus.data[0].id;
window.location.href="${pageContext.request.contextPath}/toQuestionnairePreview/"+id;
break;
case "checkResult":
var checkStatus = table.checkStatus('questionnaires'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length!=1){
layer.msg("需要选中一行");
return;
}
var id = checkStatus.data[0].id;
window.location.href="${pageContext.request.contextPath}/toQuestionnaireResult/"+id;
break;
case "questionsDelSel":
//点击批量删除,获取当前选中行的信息
var checkStatus = table.checkStatus('questionnaires'); //idTest 即为基础参数 id 对应的值
//判断当前是否有选中行
if(checkStatus.data.length==0){
layer.msg("请先选中一行");
return;
}
layer.confirm("确定删除吗?", function () {
var ids = [];
for(var i=0;i<checkStatus.data.length;i++){
ids.push({id: checkStatus.data[i].id});
}
//拼接数组中的id: 3,4,5,6
delUser(ids);
})
break;
}
})
var id;
//通过table组件监听表格右侧工具条触发的事件
table.on('tool(questionnaires)',function (obj){
// console.log(obj);
var e = obj.event;
switch(e){
case "questionsUpd":
clearFrm();
//弹出表单
$("#action").val("${pageContext.request.contextPath}/questionnaire/questionnaireUpdate");
showFrm();
//为表单设值
console.log(obj.data);
form.val("addQuestionsFrm",obj.data);
break;
case "questionsDel":
layer.confirm("确定要删除么?",function (index){
var ids = [] ;
ids.push({id:obj.data.id});
delUser(ids);
//关闭确认框
layer.close(index);
})
break;
case "addQuestions":
id = obj.data.id;
window.location.href = "${pageContext.request.contextPath}/toQuestionnaireDetails/"+id;
break;
case "relQuestion":
var enabled = obj.data.enabled;
console.log(obj.data);
console.log(obj);
if(enabled==0){
layer.msg('该问卷已被禁用',{icon:5});
return;
}
id=obj.data.id;
showDivFrm();
break;
}
})
//绑定表单中,提交按钮的提交事件
form.on("submit(questionBtnSubmit)",function (obj){
if($('#anonymous').is(":checked")){
obj.field.anonymous='1';
}else {
obj.field.anonymous='0';
}
console.log(obj);
$.ajax({
url:$("#action").val(),
type:"post",
data:{"questionnaire":JSON.stringify(obj.field)}, //表单数据
dataType:"json",
success:function (res){
console.log("从contorller返回的int:"+res);
if(res.code==0){
layer.msg("操作成功",{icon:6});
//关闭表单
layer.close(indexFrm);
//表单重置
//$("#deptFrm")[0].reset();
clearFrm();
//刷新表格
table.reload('questionnaires', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("操作失败",{icon:5});
}
}
})
})
//删除用户
function delUser(ids){
console.log(ids)
$.ajax({
url:"${pageContext.request.contextPath}/questionnaire/questionnaireDelete",
data:{"idList":JSON.stringify(ids)},
type:"post",
dataType:"json",
success:function (res){
console.log(res);
if(res.code==0){
layer.msg("删除成功!",{icon:6});
//重新加载表格
//刷新表格
table.reload('questionnaires', {
page: {
curr: 1 //重新从第 1 页开始
}
});
}else{
layer.msg("删除失败!",{icon:5})
}
}
})
}
//表单重置
function clearFrm(){
$("#addQuestionsFrm")[0].reset();
}
//复制粘贴函数
$("#copyBtn").on('click',function (obj){
console.log(obj);
var Url=document.getElementById("url");
Url.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
alert("已复制好,可贴粘。");
})
//显示表单
var indexFrm;
function showFrm(){
// $('#addQuestionsFrm').show();
indexFrm = layer.open({
type: 1,
title: '添加问卷',
// offset:['50px','200px'],
// offset: 't',
area: ['400px','300px'],
content: $("#addQuestionsFrm"),
// content: $("#questionsDiv"),
})
}
//显示发布问卷表单
function showDivFrm(){
$('#url').val("http://localhost:8080${pageContext.request.contextPath}/questionnaire/login/"+id);
//准备二维码的规格对象(JSON)
var config = {
width:200,//值是number类型, 表示的单位是px 必须传递
height:200,//值是number类型, 表示的单位是px 必须传递
text:$("#url").val(),//text就表示二维码中存储的数据 必须传递
correctLevel:0,//取值为0|1|2|3 表示二维码的纠错级别0:L/1:M/2:Q/3:H ,默认0 可选参数
// background:"#rrggbb",//默认白色, 表示二维码的后景颜色 可选参数
// foreground:"#rrggbb",//默认黑色, 表示二维码的前景颜色 可选参数
render:"table"//取值:table/canvas , 默认table 可选参数
};
// 通过选择器, 查找到上述的div ,得到Jquery对象, 通过jquery对象的qrcode函数生成二维码
$("#div2").qrcode(config);
indexFrm = layer.open({
type: 1,
title: '添加问卷',
// offset:['50px','200px'],
// offset: 't',
area: ['300px','300px'],
content: $("#div1"),
// content: $("#questionsDiv"),
})
}
function valFrm(data){
form.val('addQuestionsFrm',data);
form.val('addQuestionsFrm', {
"status":data.status==0?true:false,
});
}
})
</script>
</body>
</html>
web.xml :
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--监听项目启动加载mybatis容器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
</context-param>
<!--字符过滤器-->
<filter>
<filter-name>charactorEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>charactorEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
// A code block
var foo = 'bar';
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118035.html