Search in sources :

Example 1 with LoginUser

use of org.jeecg.common.system.vo.LoginUser in project jeecg-boot by jeecgboot.

the class JeecgController method exportXlsSheet.

/**
 * 根据每页sheet数量导出多sheet
 *
 * @param request
 * @param object 实体类
 * @param clazz 实体类class
 * @param title 标题
 * @param exportFields 导出字段自定义
 * @param pageNum 每个sheet的数据条数
 * @param request
 */
protected ModelAndView exportXlsSheet(HttpServletRequest request, T object, Class<T> clazz, String title, String exportFields, Integer pageNum) {
    // Step.1 组装查询条件
    QueryWrapper<T> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
    LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
    // Step.2 计算分页sheet数据
    double total = service.count();
    int count = (int) Math.ceil(total / pageNum);
    // Step.3 多sheet处理
    List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
    for (int i = 1; i <= count; i++) {
        Page<T> page = new Page<T>(i, pageNum);
        IPage<T> pageList = service.page(page, queryWrapper);
        List<T> records = pageList.getRecords();
        List<T> exportList = null;
        // 过滤选中数据
        String selections = request.getParameter("selections");
        if (oConvertUtils.isNotEmpty(selections)) {
            List<String> selectionList = Arrays.asList(selections.split(","));
            exportList = records.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList());
        } else {
            exportList = records;
        }
        Map<String, Object> map = new HashMap<String, Object>();
        ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title + i, upLoadPath);
        exportParams.setType(ExcelType.XSSF);
        // map.put("title",exportParams);//表格Title
        // 表格Title
        map.put(NormalExcelConstants.PARAMS, exportParams);
        // 表格对应实体
        map.put(NormalExcelConstants.CLASS, clazz);
        // 数据集合
        map.put(NormalExcelConstants.DATA_LIST, exportList);
        listMap.add(map);
    }
    // Step.4 AutoPoi 导出Excel
    ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
    // 此处设置的filename无效 ,前端会重更新设置一下
    mv.addObject(NormalExcelConstants.FILE_NAME, title);
    mv.addObject(NormalExcelConstants.MAP_LIST, listMap);
    return mv;
}
Also used : JeecgEntityExcelView(org.jeecgframework.poi.excel.view.JeecgEntityExcelView) ModelAndView(org.springframework.web.servlet.ModelAndView) Page(com.baomidou.mybatisplus.extension.plugins.pagination.Page) IPage(com.baomidou.mybatisplus.core.metadata.IPage) LoginUser(org.jeecg.common.system.vo.LoginUser) ExportParams(org.jeecgframework.poi.excel.entity.ExportParams)

Example 2 with LoginUser

use of org.jeecg.common.system.vo.LoginUser in project jeecg-boot by jeecgboot.

the class MybatisInterceptor method intercept.

@Override
public Object intercept(Invocation invocation) throws Throwable {
    MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
    String sqlId = mappedStatement.getId();
    log.debug("------sqlId------" + sqlId);
    SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
    Object parameter = invocation.getArgs()[1];
    log.debug("------sqlCommandType------" + sqlCommandType);
    if (parameter == null) {
        return invocation.proceed();
    }
    if (SqlCommandType.INSERT == sqlCommandType) {
        LoginUser sysUser = this.getLoginUser();
        Field[] fields = oConvertUtils.getAllFields(parameter);
        for (Field field : fields) {
            log.debug("------field.name------" + field.getName());
            try {
                if ("createBy".equals(field.getName())) {
                    field.setAccessible(true);
                    Object local_createBy = field.get(parameter);
                    field.setAccessible(false);
                    if (local_createBy == null || local_createBy.equals("")) {
                        if (sysUser != null) {
                            // 登录人账号
                            field.setAccessible(true);
                            field.set(parameter, sysUser.getUsername());
                            field.setAccessible(false);
                        }
                    }
                }
                // 注入创建时间
                if ("createTime".equals(field.getName())) {
                    field.setAccessible(true);
                    Object local_createDate = field.get(parameter);
                    field.setAccessible(false);
                    if (local_createDate == null || local_createDate.equals("")) {
                        field.setAccessible(true);
                        field.set(parameter, new Date());
                        field.setAccessible(false);
                    }
                }
                // 注入部门编码
                if ("sysOrgCode".equals(field.getName())) {
                    field.setAccessible(true);
                    Object local_sysOrgCode = field.get(parameter);
                    field.setAccessible(false);
                    if (local_sysOrgCode == null || local_sysOrgCode.equals("")) {
                        // 获取登录用户信息
                        if (sysUser != null) {
                            field.setAccessible(true);
                            field.set(parameter, sysUser.getOrgCode());
                            field.setAccessible(false);
                        }
                    }
                }
            } catch (Exception e) {
            }
        }
    }
    if (SqlCommandType.UPDATE == sqlCommandType) {
        LoginUser sysUser = this.getLoginUser();
        Field[] fields = null;
        if (parameter instanceof ParamMap) {
            ParamMap<?> p = (ParamMap<?>) parameter;
            // update-begin-author:scott date:20190729 for:批量更新报错issues/IZA3Q--
            if (p.containsKey("et")) {
                parameter = p.get("et");
            } else {
                parameter = p.get("param1");
            }
            // update-begin-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
            if (parameter == null) {
                return invocation.proceed();
            }
            // update-end-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
            fields = oConvertUtils.getAllFields(parameter);
        } else {
            fields = oConvertUtils.getAllFields(parameter);
        }
        for (Field field : fields) {
            log.debug("------field.name------" + field.getName());
            try {
                if ("updateBy".equals(field.getName())) {
                    // 获取登录用户信息
                    if (sysUser != null) {
                        // 登录账号
                        field.setAccessible(true);
                        field.set(parameter, sysUser.getUsername());
                        field.setAccessible(false);
                    }
                }
                if ("updateTime".equals(field.getName())) {
                    field.setAccessible(true);
                    field.set(parameter, new Date());
                    field.setAccessible(false);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    return invocation.proceed();
}
Also used : Field(java.lang.reflect.Field) ParamMap(org.apache.ibatis.binding.MapperMethod.ParamMap) SqlCommandType(org.apache.ibatis.mapping.SqlCommandType) MappedStatement(org.apache.ibatis.mapping.MappedStatement) LoginUser(org.jeecg.common.system.vo.LoginUser) Date(java.util.Date)

Example 3 with LoginUser

use of org.jeecg.common.system.vo.LoginUser in project jeecg-boot by jeecgboot.

the class ShiroRealm method checkUserTokenIsEffect.

/**
 * 校验token的有效性
 *
 * @param token
 */
public LoginUser checkUserTokenIsEffect(String token) throws AuthenticationException {
    // 解密获得username,用于和数据库进行对比
    String username = JwtUtil.getUsername(token);
    if (username == null) {
        throw new AuthenticationException("token非法无效!");
    }
    // 查询用户信息
    log.debug("———校验token是否有效————checkUserTokenIsEffect——————— " + token);
    LoginUser loginUser = commonAPI.getUserByName(username);
    if (loginUser == null) {
        throw new AuthenticationException("用户不存在!");
    }
    // 判断用户状态
    if (loginUser.getStatus() != 1) {
        throw new AuthenticationException("账号已被锁定,请联系管理员!");
    }
    // 校验token是否超时失效 & 或者账号密码是否错误
    if (!jwtTokenRefresh(token, username, loginUser.getPassword())) {
        throw new AuthenticationException(CommonConstant.TOKEN_IS_INVALID_MSG);
    }
    // update-begin-author:taoyan date:20210609 for:校验用户的tenant_id和前端传过来的是否一致
    String userTenantIds = loginUser.getRelTenantIds();
    if (oConvertUtils.isNotEmpty(userTenantIds)) {
        String contextTenantId = TenantContext.getTenant();
        if (oConvertUtils.isNotEmpty(contextTenantId) && !"0".equals(contextTenantId)) {
            // update-begin-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞
            String[] arr = userTenantIds.split(",");
            if (!oConvertUtils.isIn(contextTenantId, arr)) {
                throw new AuthenticationException("用户租户信息变更,请重新登陆!");
            }
        // update-end-author:taoyan date:20211227 for: /issues/I4O14W 用户租户信息变更判断漏洞
        }
    }
    // update-end-author:taoyan date:20210609 for:校验用户的tenant_id和前端传过来的是否一致
    return loginUser;
}
Also used : AuthenticationException(org.apache.shiro.authc.AuthenticationException) LoginUser(org.jeecg.common.system.vo.LoginUser)

Example 4 with LoginUser

use of org.jeecg.common.system.vo.LoginUser in project jeecg-boot by jeecgboot.

the class SysPositionController method exportXls.

/**
 * 导出excel
 *
 * @param request
 * @param response
 */
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
    // Step.1 组装查询条件
    QueryWrapper<SysPosition> queryWrapper = null;
    try {
        String paramsStr = request.getParameter("paramsStr");
        if (oConvertUtils.isNotEmpty(paramsStr)) {
            String deString = URLDecoder.decode(paramsStr, "UTF-8");
            SysPosition sysPosition = JSON.parseObject(deString, SysPosition.class);
            queryWrapper = QueryGenerator.initQueryWrapper(sysPosition, request.getParameterMap());
        }
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    // Step.2 AutoPoi 导出Excel
    ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
    List<SysPosition> pageList = sysPositionService.list(queryWrapper);
    LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
    // 导出文件名称
    mv.addObject(NormalExcelConstants.FILE_NAME, "职务表列表");
    mv.addObject(NormalExcelConstants.CLASS, SysPosition.class);
    mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("职务表列表数据", "导出人:" + user.getRealname(), "导出信息"));
    mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
    return mv;
}
Also used : SysPosition(org.jeecg.modules.system.entity.SysPosition) ExportParams(org.jeecgframework.poi.excel.entity.ExportParams) JeecgEntityExcelView(org.jeecgframework.poi.excel.view.JeecgEntityExcelView) ModelAndView(org.springframework.web.servlet.ModelAndView) UnsupportedEncodingException(java.io.UnsupportedEncodingException) LoginUser(org.jeecg.common.system.vo.LoginUser)

Example 5 with LoginUser

use of org.jeecg.common.system.vo.LoginUser in project jeecg-boot by jeecgboot.

the class SysRoleController method exportXls.

/**
 * 导出excel
 * @param request
 */
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(SysRole sysRole, HttpServletRequest request) {
    // Step.1 组装查询条件
    QueryWrapper<SysRole> queryWrapper = QueryGenerator.initQueryWrapper(sysRole, request.getParameterMap());
    // Step.2 AutoPoi 导出Excel
    ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
    List<SysRole> pageList = sysRoleService.list(queryWrapper);
    // 导出文件名称
    mv.addObject(NormalExcelConstants.FILE_NAME, "角色列表");
    mv.addObject(NormalExcelConstants.CLASS, SysRole.class);
    LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
    mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("角色列表数据", "导出人:" + user.getRealname(), "导出信息"));
    mv.addObject(NormalExcelConstants.DATA_LIST, pageList);
    return mv;
}
Also used : ExportParams(org.jeecgframework.poi.excel.entity.ExportParams) JeecgEntityExcelView(org.jeecgframework.poi.excel.view.JeecgEntityExcelView) SysRole(org.jeecg.modules.system.entity.SysRole) ModelAndView(org.springframework.web.servlet.ModelAndView) LoginUser(org.jeecg.common.system.vo.LoginUser) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

LoginUser (org.jeecg.common.system.vo.LoginUser)136 Result (org.jeecg.common.api.vo.Result)43 Page (com.baomidou.mybatisplus.extension.plugins.pagination.Page)29 ExportParams (org.jeecgframework.poi.excel.entity.ExportParams)28 JeecgEntityExcelView (org.jeecgframework.poi.excel.view.JeecgEntityExcelView)28 ModelAndView (org.springframework.web.servlet.ModelAndView)28 LambdaQueryWrapper (com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper)27 IPage (com.baomidou.mybatisplus.core.metadata.IPage)22 JSONObject (com.alibaba.fastjson.JSONObject)19 Date (java.util.Date)12 ApiOperation (io.swagger.annotations.ApiOperation)10 AuthenticationException (org.apache.shiro.authc.AuthenticationException)10 IOException (java.io.IOException)9 EncryptedString (org.jeecg.common.util.encryption.EncryptedString)9 SysAnnouncementSend (org.jeecg.modules.system.entity.SysAnnouncementSend)9 HttpServletRequest (javax.servlet.http.HttpServletRequest)8 java.util (java.util)7 Slf4j (lombok.extern.slf4j.Slf4j)7 SecurityUtils (org.apache.shiro.SecurityUtils)7 Autowired (org.springframework.beans.factory.annotation.Autowired)7