Commit aeef9ca8 by Wangmin

Merge remote-tracking branch 'origin/master'

parents ddc84c18 f7907f27
package com.ruoyi.web.controller.system;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.collection.CollUtil;
import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysMenu;
......@@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -134,6 +136,9 @@ public class SysLoginController {
public R<Map<String, Object>> getInfo() {
LoginUser loginUser = LoginHelper.getLoginUser();
SysUser user = userService.selectUserById(loginUser.getUserId());
if(StringUtils.isNotEmpty(user.getDeptList())){
user.setDeptListArray(CollUtil.newArrayList(user.getDeptList().split(",")));
}
Map<String, Object> ajax = new HashMap<>();
ajax.put("user", user);
ajax.put("roles", loginUser.getRolePermission());
......
......@@ -23,6 +23,7 @@ import com.ruoyi.common.utils.StreamUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.system.domain.vo.SysUserExportVo;
import com.ruoyi.system.domain.vo.SysUserImportNewVo;
import com.ruoyi.system.domain.vo.SysUserImportVo;
import com.ruoyi.system.listener.SysUserImportListener;
import com.ruoyi.system.service.ISysDeptService;
......@@ -119,6 +120,53 @@ public class SysUserController extends BaseController {
}
/**
* 获取导入模板
*/
@PostMapping("/importTemplateNew")
public void importTemplateNew(HttpServletResponse response) {
ExcelUtil.exportExcel(new ArrayList<>(), "用户数据", SysUserImportNewVo.class, response);
}
/**
* 导入数据
*
* @param file 导入文件
* @param updateSupport 是否更新已存在数据
*/
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@PostMapping(value = "/importDataNew", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public R<Void> importDataNew(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
List<SysUserImportNewVo> sysUserImportNewVos = ExcelUtil.importExcel(file.getInputStream(), SysUserImportNewVo.class);
if(CollUtil.isNotEmpty(sysUserImportNewVos)){
sysUserImportNewVos.forEach(sui->{
SysUser sysUser = userService.selectUserByUserName(sui.getUserName());
if(BeanUtil.isNotEmpty(sysUser) || StringUtils.isEmpty(sui.getNickName()) || StringUtils.isEmpty(sui.getUserName()) || StringUtils.isEmpty(sui.getSex()) || StringUtils.isEmpty(sui.getPassword()) ){
//存在该用户无需导入
return;
}
SysUser usi=new SysUser();
usi.setNickName(sui.getNickName());
usi.setUserName(sui.getUserName());
if(sui.getSex().equals("老师")){
usi.setSex("1");
}
if(sui.getSex().equals("学生")){
usi.setSex("0");
}
usi.setStatus("0");
usi.setRemark("系统导入用户数据");
usi.setPassword(BCrypt.hashpw(usi.getPassword()));
Long[] role=new Long[1];
role[0]=new Long(2);
usi.setRoleIds(role);
userService.insertUser(usi);
});
}
return R.ok();
}
/**
* 根据用户编号获取详细信息
*
* @param userId 用户ID
......@@ -133,6 +181,9 @@ public class SysUserController extends BaseController {
ajax.put("posts", postService.selectPostAll());
if (ObjectUtil.isNotNull(userId)) {
SysUser sysUser = userService.selectUserById(userId);
if(StringUtils.isNotEmpty(sysUser.getDeptList())){
sysUser.setDeptListArray(CollUtil.newArrayList(sysUser.getDeptList().split(",")));
}
ajax.put("user", sysUser);
ajax.put("postIds", postService.selectPostListByUserId(userId));
ajax.put("roleIds", StreamUtils.toList(sysUser.getRoles(), SysRole::getRoleId));
......@@ -147,6 +198,30 @@ public class SysUserController extends BaseController {
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
public R<Void> add(@Validated @RequestBody SysUser user) {
//新增逻辑处理
if(CollUtil.isNotEmpty(user.getDeptInsetArray())){
//判断是否为父级
List<String> colList = user.getDeptInsetArray();
List<String> uio=new ArrayList<>();
colList.forEach(syu->{
List<SysDept> sysDep = deptService.selectDeptListByDeID(new Long(syu));
if(CollUtil.isNotEmpty(sysDep)){
sysDep.forEach(ss->{
uio.add(String.valueOf(ss.getDeptId()));
});
return;
}
uio.add(syu);
});
// 设置list
if(CollUtil.isNotEmpty(uio)){
user.setDeptList(CollUtil.join(uio, ","));
}
}
Long[] role=new Long[1];
role[0]=new Long(2);
user.setRoleIds(role);
if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {
return R.fail("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber())
......@@ -167,6 +242,26 @@ public class SysUserController extends BaseController {
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping
public R<Void> edit(@Validated @RequestBody SysUser user) {
//修改用户逻辑
if(CollUtil.isNotEmpty(user.getDeptInsetArray())){
//判断是否为父级
List<String> colList = user.getDeptInsetArray();
List<String> uio=new ArrayList<>();
colList.forEach(syu->{
List<SysDept> sysDep = deptService.selectDeptListByDeID(new Long(syu));
if(CollUtil.isNotEmpty(sysDep)){
sysDep.forEach(ss->{
uio.add(String.valueOf(ss.getDeptId()));
});
return;
}
uio.add(syu);
});
// 设置list
if(CollUtil.isNotEmpty(uio)){
user.setDeptList(CollUtil.join(uio, ","));
}
}
userService.checkUserAllowed(user);
userService.checkUserDataScope(user.getUserId());
if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user))) {
......@@ -178,6 +273,7 @@ public class SysUserController extends BaseController {
&& UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
return toAjax(userService.updateUser(user));
}
......
......@@ -158,6 +158,19 @@ public class SysUser extends BaseEntity {
*/
@TableField(exist = false)
private String deptListStr;
/**
* 班级数组
*/
@TableField(exist = false)
private List<String> deptListArray;
/**
* 班级数组
*/
@TableField(exist = false)
private List<String> deptInsetArray;
public SysUser(Long userId) {
this.userId = userId;
......
package com.ruoyi.system.domain.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.ruoyi.common.annotation.ExcelDictFormat;
import com.ruoyi.common.convert.ExcelDictConvert;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 用户对象导入VO
*
* @author Lion Li
*/
@Data
@NoArgsConstructor
// @Accessors(chain = true) // 导入不允许使用 会找不到set方法
public class SysUserImportNewVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户账号
*/
@ExcelProperty(value = "学号")
private String userName;
/**
* 密码
*/
@ExcelProperty(value = "密码")
private String password;
/**
* 用户昵称
*/
@ExcelProperty(value = "用户昵称")
private String nickName;
/**
* 用户性别
*/
@ExcelProperty(value = "用户身份")
private String sex;
}
......@@ -36,6 +36,14 @@ public interface SysDeptMapper extends BaseMapperPlus<SysDeptMapper, SysDept, Sy
List<SysDept> selectDeptListNew(@Param("deptList") List<Long> deptList);
/**
* 查询部门管理数据
*
* @param deptList 查询条件
* @return 部门信息集合
*/
List<SysDept> selectDeptListDeId(@Param("deptList") Long deptList);
/**
* 根据角色ID查询部门树信息
*
* @param roleId 角色ID
......
......@@ -28,6 +28,15 @@ public interface ISysDeptService {
*/
List<SysDept> selectDeptListByList(List<Long> deptList);
/**
* 根据父类id查询所有子类
*
* @param deptList 部门信息
* @return 部门信息集合
*/
List<SysDept> selectDeptListByDeID(Long deptList);
/**
* 查询部门树结构信息
*
......
......@@ -48,6 +48,8 @@ public interface ISysUserService {
*/
SysUser selectUserByUserName(String userName);
/**
* 通过手机号查询用户
*
......
......@@ -63,6 +63,10 @@ public class SysDeptServiceImpl implements ISysDeptService {
return baseMapper.selectDeptListNew(deptList);
}
@Override
public List<SysDept> selectDeptListByDeID(Long deptList) {
return baseMapper.selectDeptListDeId(deptList);
}
/**
* 查询部门树结构信息
*
......
......@@ -27,6 +27,7 @@ import com.ruoyi.system.mapper.*;
import com.ruoyi.system.service.ISysUserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.javassist.runtime.Desc;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -82,6 +83,7 @@ public class SysUserServiceImpl implements ISysUserService {
.eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId())
.like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName())
.eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus())
.eq(StringUtils.isNotBlank(user.getSex()), "u.sex", user.getSex())
.like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber())
.between(params.get("beginTime") != null && params.get("endTime") != null,
"u.create_time", params.get("beginTime"), params.get("endTime"))
......
......@@ -51,6 +51,15 @@
</foreach>
</select>
<select id="selectDeptListDeId" resultMap="SysDeptResult">
SELECT *
FROM
sys_dept
where del_flag='0'
AND parent_id =#{deptList}
</select>
<select id="selectDeptListByRoleId" resultType="Long">
select d.dept_id
from sys_dept d
......
......@@ -126,6 +126,7 @@
sys_user u
left join sys_dept d on u.dept_id = d.dept_id
${ew.getCustomSqlSegment}
order by u.user_id DESC
</select>
<select id="selectUserList" resultMap="SysUserResult">
......@@ -164,7 +165,7 @@
where u.del_flag = '0' and u.phonenumber = #{phonenumber}
</select>
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult">
<select id="selectUserById" parameterType="Long" resultMap="SysUserResult12">
<include refid="selectUserVo"/>
where u.del_flag = '0' and u.user_id = #{userId}
</select>
......
......@@ -15,6 +15,7 @@ import com.ruoyi.school.paper.domain.bo.DbQuestionBankBo;
import com.ruoyi.school.paper.domain.bo.QuestionBankAndAnswerBo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankAndAnswerVo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankVo;
import com.ruoyi.school.paper.domain.vo.MyErrorTopicListVo;
import com.ruoyi.school.paper.service.IDbQuestionBankService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
......@@ -50,6 +51,15 @@ public class DbQuestionBankController extends BaseController {
}
/**
* 【小程序】查询典例精讲列表
*/
@GetMapping("/exampleList")
public TableDataInfo<MyErrorTopicListVo> exampleList(DbQuestionBankBo bo, PageQuery pageQuery) {
return iDbQuestionBankService.exampleList(bo, pageQuery);
}
/**
* [PC端]导出题库主列表
*/
@Log(title = "题库主", businessType = BusinessType.EXPORT)
......
package com.ruoyi.school.paper.domain.vo;
import com.ruoyi.school.paper.domain.DbQuestionBankAnswerTestPaper;
import com.sun.org.apache.xpath.internal.objects.XString;
import lombok.Data;
import java.io.Serializable;
......@@ -37,6 +38,16 @@ public class MyErrorTopicListVo implements Serializable {
private Long questionBankId;
/**
* 解答思路
*/
private String resolveCourse;
/**
* 解答视频
*/
private String resolveVideo;
/**
* 选项标签集合
*/
private List<DbQuestionBankAnswerTestPaper> options;
......
package com.ruoyi.school.paper.mapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.school.paper.domain.DbQuestionBank;
import com.ruoyi.school.paper.domain.bo.DbQuestionBankBo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankAndAnswerVo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankVo;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.school.paper.domain.vo.MyErrorTopicListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.io.Serializable;
import java.util.List;
/**
* 题库主Mapper接口
......@@ -24,4 +29,9 @@ public interface DbQuestionBankMapper extends BaseMapperPlus<DbQuestionBankMappe
* @return 题目详细信息
*/
DbQuestionBankAndAnswerVo selectDetailById(Serializable id);
/**
* 典例精讲列表
*/
Page<MyErrorTopicListVo> getExampleList(Page<Object> build, @Param("bo") DbQuestionBankBo bo);
}
......@@ -6,6 +6,7 @@ import com.ruoyi.school.paper.domain.bo.DbQuestionBankBo;
import com.ruoyi.school.paper.domain.bo.QuestionBankAndAnswerBo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankAndAnswerVo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankVo;
import com.ruoyi.school.paper.domain.vo.MyErrorTopicListVo;
import java.util.Collection;
import java.util.List;
......@@ -71,4 +72,12 @@ public interface IDbQuestionBankService {
* 初始化题库到缓存
*/
void init();
/**
* 典例精讲
* @param bo 搜索条件
* @param pageQuery 分页参数
* @return
*/
TableDataInfo<MyErrorTopicListVo> exampleList(DbQuestionBankBo bo, PageQuery pageQuery);
}
......@@ -17,6 +17,7 @@ import com.ruoyi.school.paper.domain.bo.DbQuestionBankBo;
import com.ruoyi.school.paper.domain.bo.QuestionBankAndAnswerBo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankAndAnswerVo;
import com.ruoyi.school.paper.domain.vo.DbQuestionBankVo;
import com.ruoyi.school.paper.domain.vo.MyErrorTopicListVo;
import com.ruoyi.school.paper.mapper.DbQuestionBankAnswerMapper;
import com.ruoyi.school.paper.mapper.DbQuestionBankMapper;
import com.ruoyi.school.paper.service.IDbQuestionBankService;
......@@ -213,4 +214,13 @@ public class DbQuestionBankServiceImpl implements IDbQuestionBankService {
List<DbQuestionBank> dbQuestionBanks = baseMapper.selectList(Wrappers.<DbQuestionBank>lambdaQuery().eq(DbQuestionBank::getStatus, 0));
RedisUtils.setCacheObject("question_bank:default_question_bank", JsonUtils.toJsonString(dbQuestionBanks));
}
/**
* 典例精讲
*/
@Override
public TableDataInfo<MyErrorTopicListVo> exampleList(DbQuestionBankBo bo, PageQuery pageQuery) {
Page<MyErrorTopicListVo> result = baseMapper.getExampleList(pageQuery.build(), bo);
return TableDataInfo.build(result);
}
}
......@@ -73,5 +73,40 @@
where bank.id = #{id}
</select>
<resultMap id="MyErrorTopicListVo" type="com.ruoyi.school.paper.domain.vo.MyErrorTopicListVo">
<result property="questionBankId" column="question_bank_id"/>
<result property="topic" column="topic"/>
<result property="resolveCourse" column="resolve_course"/>
<result property="resolveVideo" column="resolve_video"/>
<collection property="options" javaType="java.util.List" resultMap="DbQuestionBankAnswerResult"/>
</resultMap>
<resultMap type="com.ruoyi.school.paper.domain.DbQuestionBankAnswer" id="DbQuestionBankAnswerResult">
<result property="id" column="id"/>
<result property="questionBankId" column="question_bank_id"/>
<result property="optionTag" column="option_tag"/>
<result property="optionContent" column="option_content"/>
<result property="remark" column="remark"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<select id="getExampleList" resultMap="MyErrorTopicListVo">
select qb.id as question_bank_id,
qb.topic as topic,
qb.resolve_course,
qb.resolve_video,
dqba.*
from db_question_bank qb
left join db_question_bank_answer dqba on qb.id = dqba.question_bank_id
where type = 1
<if test="bo.categoryId != null">
and qb.category_id = #{bo.categoryId}
</if>
<if test="bo.species != null">
and qb.species = #{bo.species}
</if>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment