Merge remote-tracking branch 'origin/master' into group2

# Conflicts:
#	src/main/java/cn/stylefeng/guns/modular/login/PositionViewController.java
pull/65/head
chenjinlong 2020-12-30 17:01:49 +08:00
commit 680c697d4b
17 changed files with 218 additions and 107 deletions

View File

@ -1,7 +1,7 @@
package cn.stylefeng.guns.core.listener;
import cn.stylefeng.guns.core.consts.ProjectConstants;
import cn.stylefeng.guns.modular.service.InitAdminService;
import cn.stylefeng.guns.modular.index.service.InitAdminService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;

View File

@ -0,0 +1,41 @@
package cn.stylefeng.guns.modular.blackboard;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:29
*/
@Controller
@Slf4j
@ApiResource(name = "工作台和分析页面")
public class BlackboardViewController {
/**
*
*
* @author fengshuonan
* @date 2018/12/24 22:43
*/
@GetResource(name = "工作台", path = "/blackboard/platform", requiredPermission = false)
public String platform() {
return "/modular/blackboard/board_platform.html";
}
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:27
*/
@GetResource(name = "分析页面", path = "/blackboard/analyse", requiredPermission = false)
public String analyse() {
return "/modular/blackboard/board_analyse.html";
}
}

View File

@ -1,68 +0,0 @@
package cn.stylefeng.guns.modular.controller;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
import cn.stylefeng.roses.kernel.file.FileOperatorApi;
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import javax.annotation.Resource;
import java.util.List;
/**
*
*
* @author fengshuonan
* @date 2020/12/27 16:23
*/
@Controller
@Slf4j
@ApiResource(name = "首页相关的界面渲染")
public class IndexViewController {
@Resource
private SysMenuService sysMenuService;
@Resource
private SysUserService sysUserService;
/**
*
*
* @author fengshuonan
* @date 2020/12/13 17:19
*/
@GetResource(name = "首页界面", path = "/", requiredPermission = false, requiredLogin = false)
public String indexView(Model model) {
// 当前用户已经登录,跳转到首页
if (LoginContext.me().hasLogin()) {
LoginUser loginUser = LoginContext.me().getLoginUser();
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
// 渲染首页的菜单
List<LayuiAppIndexMenus> layuiAppIndexMenus = sysMenuService.getLayuiIndexMenus();
model.addAttribute("layuiAppIndexMenus", layuiAppIndexMenus);
// 获取首页的头像
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
// 获取人员姓名
model.addAttribute("name", simpleUserInfo.getRealName());
return "/index.html";
}
// 当前用户没有登录,跳转到登录页面
return "/login.html";
}
}

View File

@ -0,0 +1,142 @@
package cn.stylefeng.guns.modular.index.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
import cn.stylefeng.roses.kernel.system.modular.organization.entity.HrOrganization;
import cn.stylefeng.roses.kernel.system.modular.organization.service.HrOrganizationService;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import javax.annotation.Resource;
import java.util.List;
/**
*
*
* @author fengshuonan
* @date 2020/12/27 16:23
*/
@Controller
@Slf4j
@ApiResource(name = "首页相关的界面渲染")
public class IndexViewController {
@Resource
private SysMenuService sysMenuService;
@Resource
private SysUserService sysUserService;
@Resource
private HrOrganizationService hrOrganizationService;
/**
*
*
* @author fengshuonan
* @date 2020/12/13 17:19
*/
@GetResource(name = "首页界面", path = "/", requiredLogin = false, requiredPermission = false)
public String indexView(Model model) {
// 当前用户已经登录,跳转到首页
if (LoginContext.me().hasLogin()) {
LoginUser loginUser = LoginContext.me().getLoginUser();
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
// 渲染首页的菜单
List<LayuiAppIndexMenus> layuiAppIndexMenus = sysMenuService.getLayuiIndexMenus();
model.addAttribute("layuiAppIndexMenus", layuiAppIndexMenus);
// 获取首页的头像
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
// 获取人员姓名
model.addAttribute("name", simpleUserInfo.getRealName());
return "/index.html";
}
// 当前用户没有登录,跳转到登录页面
return "/login.html";
}
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:53
*/
@GetResource(name = "个人中心界面", path = "/personal", requiredLogin = false)
public String personal(Model model) {
LoginUser loginUser = LoginContext.me().getLoginUser();
// 用户基本信息
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
model.addAllAttributes(BeanUtil.beanToMap(simpleUserInfo));
// 角色名称
List<SimpleRoleInfo> simpleRoleInfoList = loginUser.getSimpleRoleInfoList();
if (ObjectUtil.isNotEmpty(simpleRoleInfoList)) {
String roleName = simpleRoleInfoList.get(0).getRoleName();
model.addAttribute("roleName", roleName);
}
// 组织机构名称
Long organizationId = loginUser.getOrganizationId();
HrOrganization hrOrganization = hrOrganizationService.getById(organizationId);
if (hrOrganization != null) {
model.addAttribute("orgName", hrOrganization.getOrgName());
}
// 渲染头像的url
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
return "/modular/index/personal_info.html";
}
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:34
*/
@GetResource(name = "锁屏界面", path = "/lock", requiredPermission = false)
public String lock() {
return "/modular/index/lock_screen.html";
}
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:42
*/
@GetResource(name = "主题切换界面", path = "/theme", requiredPermission = false)
public String theme() {
return "/modular/index/theme.html";
}
/**
*
*
* @author fengshuonan
* @date 2020/12/29 21:42
*/
@GetResource(name = "修改密码界面", path = "/changePassword", requiredPermission = false)
public String changePassword() {
return "/modular/index/change_password.html";
}
}

View File

@ -1,4 +1,4 @@
package cn.stylefeng.guns.modular.service;
package cn.stylefeng.guns.modular.index.service;
import org.springframework.stereotype.Service;

View File

@ -1,4 +1,4 @@
package cn.stylefeng.guns.modular.service;
package cn.stylefeng.guns.modular.index.service;
import cn.stylefeng.guns.core.consts.ProjectConstants;
import cn.stylefeng.roses.kernel.resource.modular.entity.SysResource;

View File

@ -1,4 +1,4 @@
package cn.stylefeng.guns.modular.controller;
package cn.stylefeng.guns.modular.login;
import cn.stylefeng.roses.kernel.auth.api.AuthServiceApi;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
@ -11,7 +11,6 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
@ -19,7 +18,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
/**
*
*
*
* @author fengshuonan
* @date 2020/12/27 16:23
@ -67,7 +66,7 @@ public class LoginViewController {
* @author majianguo
* @date 2020/12/4 9:05
*/
@GetResource(name = "登出接口", path = "/logout", requiredPermission = false)
@PostResource(name = "登出接口", path = "/logout", requiredPermission = false)
@ResponseBody
public ResponseData logoutPage() {
authServiceApi.logout();

View File

@ -95,15 +95,12 @@
// 修改密码点击事件
$('#setPsw').click(function () {
//获取多语言
var langs = layui.data('system').lang;
admin.open({
id: 'pswForm',
type: 2,
title: langs.MENU_CHANGE_PASSWORD,
title: "修改密码",
shade: 0,
content: '${ctxPath}/system/user_chpwd'
content: '${ctxPath}/changePassword'
});
});

View File

@ -29,16 +29,16 @@
<a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>
</li>
<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a ew-event="lockScreen" title="锁屏" data-url="${ctxPath}/system/lock"><i class="layui-icon layui-icon-password"></i></a>
<a ew-event="lockScreen" title="锁屏" data-url="${ctxPath}/lock"><i class="layui-icon layui-icon-password"></i></a>
</li>
<li class="layui-nav-item" lay-unselect>
<a>
<img src="${avatar!}" class="layui-nav-img">
<cite>写死的用户</cite>
<cite>${name!"用户"}</cite>
</a>
<dl class="layui-nav-child">
<dd lay-unselect>
<a ew-href="${ctxPath}/system/user_info">个人中心</a>
<a ew-href="${ctxPath}/personal">个人中心</a>
</dd>
<dd lay-unselect>
<a id="setPsw">修改密码</a>
@ -52,7 +52,7 @@
</dl>
</li>
<li class="layui-nav-item" lay-unselect>
<a ew-event="theme" title="主题" data-url="${ctxPath}/system/theme"><i class="layui-icon layui-icon-more-vertical"></i></a>
<a ew-event="theme" title="主题" data-url="${ctxPath}/theme"><i class="layui-icon layui-icon-more-vertical"></i></a>
</li>
</ul>
</div>

View File

@ -1,21 +1,21 @@
@layout("/layout/_container.html",{title:"修改密码",bg:"bg-white",js:["/assets/modular/frame/password.js"]}){
@layout("/layout/_container.html", {title:"修改密码", bg:"bg-white", js:["/assets/modular/frame/password.js"]}){
<div class="layui-form model-form" id="form-psw">
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_OLD_PASSWORD","旧密码")}:</label>
<label class="layui-form-label">旧密码:</label>
<div class="layui-input-block">
<input type="password" name="oldPassword" placeholder="请输入原始密码" class="layui-input"
lay-verType="tips" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_NEW_PASSWORD","新密码")}:</label>
<label class="layui-form-label">新密码:</label>
<div class="layui-input-block">
<input type="password" name="newPassword" placeholder="请输入新密码" class="layui-input"
lay-verType="tips" lay-verify="required|psw" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_RE_PASSWORD","确认密码")}:</label>
<label class="layui-form-label">确认密码:</label>
<div class="layui-input-block">
<input type="password" name="repeatPassword" placeholder="请再次输入新密码" class="layui-input"
lay-verType="tips" lay-verify="required|repsw" required/>
@ -23,8 +23,8 @@
</div>
<div class="layui-form-item">
<div class="layui-input-block text-right">
<button class="layui-btn" lay-filter="submit-psw" lay-submit>${lang.get("BTN_SAVE","保存")}</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">${lang.get("BTN_CANCEL","取消")}</button>
<button class="layui-btn" lay-filter="submit-psw" lay-submit>保存</button>
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
</div>
</div>
</div>

View File

@ -1,9 +1,9 @@
@layout("/layout/_container.html",{title:"个人中心",css:["/assets/modular/frame/user_info.css"],js:["/assets/modular/frame/user_info.js"]}){
@layout("/layout/_container.html", {title:"个人中心", css:["/assets/modular/frame/user_info.css"], js:["/assets/modular/frame/user_info.js"]}){
<div class="layui-body-header">
<span class="layui-body-header-title">${lang.get("MENU_PERSONAL_INFO","个人信息")}</span>
<span class="layui-body-header-title">个人信息</span>
<span class="layui-breadcrumb pull-right">
<a href="${ctxPath}/system/console">${lang.get("MENU_INDEX","首页")}</a>
<a><cite>${lang.get("MENU_PERSONAL_INFO","个人中心")}</cite></a>
<a href="${ctxPath}/system/console">首页</a>
<a><cite>个人中心</cite></a>
</span>
</div>
@ -18,18 +18,18 @@
<div class="user-info-head" id="imgHead">
<img id="avatarPreview" src="${avatar}"/>
</div>
<h2 style="padding-top: 20px;">${name}</h2>
<p style="padding-top: 8px;">${roleName!} ${deptName!}</p>
<h2 style="padding-top: 20px;">${realName!靓仔}</h2>
<p style="padding-top: 8px;">${roleName!角色空} ${orgName!组织机构空}</p>
</div>
<div class="layui-text" style="padding-top: 30px;">
<div class="info-list-item">
<i class="layui-icon layui-icon-notice"></i>
<p>${email!}</p>
<p>${email!'sn93@qq.com'}</p>
</div>
<div class="info-list-item">
<i class="layui-icon layui-icon-cellphone"></i>
<p>${phone!}</p>
<p>${phone!18200000000}</p>
</div>
<div class="info-list-item">
<i class="layui-icon layui-icon-location"></i>
@ -52,46 +52,46 @@
<div class="layui-tab layui-tab-brief" lay-filter="userInfoTab">
<ul class="layui-tab-title">
<li class="layui-this">${lang.get("MENU_BASE_INFO","基本信息")}</li>
<li>${lang.get("MENU_OTHER","其他")}</li>
<li class="layui-this">基本信息</li>
<li>其他</li>
</ul>
<div class="layui-tab-content">
<div class="layui-form layui-tab-item layui-show" lay-filter="userInfoForm">
<input type="hidden" name="userId"/>
<div class="layui-form user-info-form" style="max-width: 400px;padding-top: 25px;">
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_ACCOUNT","账号")}:</label>
<label class="layui-form-label">账号:</label>
<div class="layui-input-block">
<input type="text" name="account" class="layui-input layui-disabled" lay-verify="required" disabled/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_SEX","性别")}:</label>
<label class="layui-form-label">性别:</label>
<div class="layui-input-block">
<input type="radio" name="sex" value="M" title="男">
<input type="radio" name="sex" value="F" title="女">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_EMAIL","邮箱")}:<span style="color: red;">*</span></label>
<label class="layui-form-label">邮箱:<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="email" name="email" class="layui-input" lay-verify="required|email" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_NAME","姓名")}:<span style="color: red;">*</span></label>
<label class="layui-form-label">姓名:<span style="color: red;">*</span></label>
<div class="layui-input-block">
<input type="text" name="name" class="layui-input" lay-verify="required" required/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_BIRTHDAY","生日")}:</label>
<label class="layui-form-label">生日:</label>
<div class="layui-input-block">
<input type="text" id="birthday" name="birthday" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">${lang.get("FIELD_PHONE","电话")}:</label>
<label class="layui-form-label">电话:</label>
<div class="layui-input-block">
<input type="text" name="phone" class="layui-input"/>
</div>
@ -99,7 +99,7 @@
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-filter="userInfoSubmit" lay-submit>
${lang.get("BTN_UPDATE_INFO","更新基本信息")}
更新基本信息
</button>
</div>
</div>