若依开源1.1.3发布

This commit is contained in:
RuoYi
2018-05-13 15:10:15 +08:00
parent 20070163c2
commit 784c020fbd
154 changed files with 2243 additions and 2155 deletions

View File

@ -1,8 +1,9 @@
# 项目名称、版本、版权年份
ruoyi:
name: RuoYi
version: 1.1.2
version: 1.1.3
copyrightYear: 2018
profile: D:/profile/
#开发环境配置
server:
@ -64,6 +65,19 @@ shiro:
unauthorizedUrl: /unauth
# 首页地址
indexUrl: /index
# 验证码开关
captchaEbabled: true
# 验证码类型 math 数组计算 char 字符
captchaType: math
cookie:
# 设置Cookie的域名 默认空,即当前访问的域名
domain:
# 设置cookie的有效访问路径
path: /
# 设置HttpOnly属性
httpOnly: true
# 设置Cookie的过期时间天为单位
maxAge: 30
session:
# Session超时时间默认30分钟
expireTime: 30

View File

@ -1,5 +1,6 @@
#错误消息
not.null=* 必须填写
user.jcaptcha.error=验证码错误
user.not.exists=用户不存在/密码错误
user.password.not.match=用户不存在/密码错误
user.password.retry.limit.count=密码输入错误{0}次,{1}
@ -13,8 +14,6 @@ length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.jcaptcha.error=验证码错误
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.job.dao.IJobLogDao">
<mapper namespace="com.ruoyi.project.monitor.job.mapper.JobLogMapper">
<resultMap type="JobLog" id="JobLogResult">
<id property="jobLogId" column="job_log_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.job.dao.IJobDao">
<mapper namespace="com.ruoyi.project.monitor.job.mapper.JobMapper">
<resultMap type="Job" id="JobResult">
<id property="jobId" column="job_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.logininfor.dao.ILogininforDao">
<mapper namespace="com.ruoyi.project.monitor.logininfor.mapper.LogininforMapper">
<resultMap type="Logininfor" id="LogininforResult">
<id property="infoId" column="info_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.online.dao.IUserOnlineDao">
<mapper namespace="com.ruoyi.project.monitor.online.mapper.UserOnlineMapper">
<resultMap type="UserOnline" id="UserOnlineResult">
<id property="sessionId" column="sessionId" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.monitor.operlog.dao.IOperLogDao">
<mapper namespace="com.ruoyi.project.monitor.operlog.mapper.OperLogMapper">
<resultMap type="OperLog" id="OperLogResult">
<id property="operId" column="oper_id" />

View File

@ -11,16 +11,4 @@ PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
<setting name="logImpl" value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
</settings>
<typeAliases>
<!-- 分页 -->
<typeAlias type="com.ruoyi.framework.web.page.PageUtilEntity" alias="PageUtilEntity"/>
</typeAliases>
<plugins>
<plugin interceptor="com.ruoyi.framework.mybatis.ExecutorPageMethodInterceptor">
<property name="dialect" value="mysql" />
<property name="pageSqlId" value=".*pageInfoQuery.*" />
</plugin>
</plugins>
</configuration>

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.dept.dao.IDeptDao">
<mapper namespace="com.ruoyi.project.system.dept.mapper.DeptMapper">
<resultMap type="Dept" id="DeptResult">
<id property="deptId" column="dept_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.dict.dao.IDictDataDao">
<mapper namespace="com.ruoyi.project.system.dict.mapper.DictDataMapper">
<resultMap type="DictData" id="DictDataResult">
<id property="dictCode" column="dict_code" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.dict.dao.IDictTypeDao">
<mapper namespace="com.ruoyi.project.system.dict.mapper.DictTypeMapper">
<resultMap type="DictType" id="DictTypeResult">
<id property="dictId" column="dict_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.menu.dao.IMenuDao">
<mapper namespace="com.ruoyi.project.system.menu.mapper.MenuMapper">
<resultMap type="Menu" id="MenuResult">
<id property="menuId" column="menu_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.post.dao.IPostDao">
<mapper namespace="com.ruoyi.project.system.post.mapper.PostMapper">
<resultMap type="Post" id="PostResult">
<id property="postId" column="post_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.role.dao.IRoleDao">
<mapper namespace="com.ruoyi.project.system.role.mapper.RoleMapper">
<resultMap type="Role" id="RoleResult">
<id property="roleId" column="role_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.role.dao.IRoleMenuDao">
<mapper namespace="com.ruoyi.project.system.role.mapper.RoleMenuMapper">
<resultMap type="RoleMenu" id="RoleMenuResult">
<result property="roleId" column="role_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.user.dao.IUserDao">
<mapper namespace="com.ruoyi.project.system.user.mapper.UserMapper">
<resultMap type="User" id="UserResult">
<id property="userId" column="user_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.user.dao.IUserPostDao">
<mapper namespace="com.ruoyi.project.system.user.mapper.UserPostMapper">
<resultMap type="UserPost" id="UserPostResult">
<result property="userId" column="user_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.system.user.dao.IUserRoleDao">
<mapper namespace="com.ruoyi.project.system.user.mapper.UserRoleMapper">
<resultMap type="UserRole" id="UserRoleResult">
<result property="userId" column="user_id" />

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.project.tool.gen.dao.IGenDao">
<mapper namespace="com.ruoyi.project.tool.gen.mapper.GenMapper">
<resultMap type="TableInfo" id="TableInfoResult">
<id property="tableName" column="table_name" />

View File

@ -0,0 +1,128 @@
@charset "utf-8";
.container {
margin: 10px auto 0 auto;
position: relative;
font-family: ;
font-size: 12px;
}
.container p {
line-height: 12px;
line-height: 0px;
height: 0px;
margin: 10px;
color: #bbb
}
.action {
width: 400px;
height: 30px;
margin: 10px 0;
}
.cropped {
position: absolute;
left: 500px;
top: 0;
width: 200px;
border: 1px #ddd solid;
height: 440px;
padding: 4px;
box-shadow: 0px 0px 12px #ddd;
text-align: center;
}
.imageBox {
position: relative;
height: 400px;
width: 400px;
border: 1px solid #aaa;
background: #fff;
overflow: hidden;
background-repeat: no-repeat;
cursor: move;
box-shadow: 4px 4px 12px #B0B0B0;
}
.imageBox .thumbBox {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
height: 200px;
margin-top: -100px;
margin-left: -100px;
box-sizing: border-box;
border: 1px solid rgb(102, 102, 102);
box-shadow: 0 0 0 1000px rgba(0, 0, 0, 0.5);
background: none repeat scroll 0% 0% transparent;
}
.imageBox .spinner {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
text-align: center;
line-height: 400px;
background: rgba(0,0,0,0.7);
}
.Btnsty_peyton{ float: right;
width: 46px;
display: inline-block;
margin-bottom: 10px;
height: 37px;
line-height: 37px;
font-size: 14px;
color: #FFFFFF;
margin:0px 2px;
background-color: #f38e81;
border-radius: 3px;
text-decoration: none;
cursor: pointer;
box-shadow: 0px 0px 5px #B0B0B0;
border: 0px #fff solid;}
/*选择文件上传*/
.new-contentarea {
width: 165px;
overflow:hidden;
margin: 0 auto;
position:relative;float:left;
}
.new-contentarea label {
width:100%;
height:100%;
display:block;
}
.new-contentarea input[type=file] {
width:188px;
height:60px;
background:#333;
margin: 0 auto;
position:absolute;
right:50%;
margin-right:-94px;
top:0;
right/*\**/:0px\9;
margin-right/*\**/:0px\9;
width/*\**/:10px\9;
opacity:0;
filter:alpha(opacity=0);
z-index:2;
}
a.upload-img{
width:165px;
display: inline-block;
margin-bottom: 10px;
height:37px;
line-height: 37px;
font-size: 14px;
color: #FFFFFF;
background-color: #f38e81;
border-radius: 3px;
text-decoration:none;
cursor:pointer;
border: 0px #fff solid;
box-shadow: 0px 0px 5px #B0B0B0;
}
a.upload-img:hover{
background-color: #ec7e70;
}
.tc{text-align:center;}
/*www.jq22.com*/

View File

@ -0,0 +1,141 @@
/**
* Created by ezgoing on 14/9/2014.
*/
"use strict";
(function (factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery'], factory);
} else {
factory(jQuery);
}
}(function ($) {
var cropbox = function(options, el){
var el = el || $(options.imageBox),
obj =
{
state : {},
ratio : 1,
options : options,
imageBox : el,
thumbBox : el.find(options.thumbBox),
spinner : el.find(options.spinner),
image : new Image(),
getDataURL: function ()
{
var width = this.thumbBox.width(),
height = this.thumbBox.height(),
canvas = document.createElement("canvas"),
dim = el.css('background-position').split(' '),
size = el.css('background-size').split(' '),
dx = parseInt(dim[0]) - el.width()/2 + width/2,
dy = parseInt(dim[1]) - el.height()/2 + height/2,
dw = parseInt(size[0]),
dh = parseInt(size[1]),
sh = parseInt(this.image.height),
sw = parseInt(this.image.width);
canvas.width = width;
canvas.height = height;
var context = canvas.getContext("2d");
context.drawImage(this.image, 0, 0, sw, sh, dx, dy, dw, dh);
var imageData = canvas.toDataURL('image/png');
return imageData;
},
getBlob: function()
{
var imageData = this.getDataURL();
var b64 = imageData.replace('data:image/png;base64,','');
var binary = atob(b64);
var array = [];
for (var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: 'image/png'});
},
zoomIn: function ()
{
this.ratio*=1.1;
setBackground();
},
zoomOut: function ()
{
this.ratio*=0.9;
setBackground();
}
},
setBackground = function()
{
var w = parseInt(obj.image.width)*obj.ratio;
var h = parseInt(obj.image.height)*obj.ratio;
var pw = (el.width() - w) / 2;
var ph = (el.height() - h) / 2;
el.css({
'background-image': 'url(' + obj.image.src + ')',
'background-size': w +'px ' + h + 'px',
'background-position': pw + 'px ' + ph + 'px',
'background-repeat': 'no-repeat'});
},
imgMouseDown = function(e)
{
e.stopImmediatePropagation();
obj.state.dragable = true;
obj.state.mouseX = e.clientX;
obj.state.mouseY = e.clientY;
},
imgMouseMove = function(e)
{
e.stopImmediatePropagation();
if (obj.state.dragable)
{
var x = e.clientX - obj.state.mouseX;
var y = e.clientY - obj.state.mouseY;
var bg = el.css('background-position').split(' ');
var bgX = x + parseInt(bg[0]);
var bgY = y + parseInt(bg[1]);
el.css('background-position', bgX +'px ' + bgY + 'px');
obj.state.mouseX = e.clientX;
obj.state.mouseY = e.clientY;
}
},
imgMouseUp = function(e)
{
e.stopImmediatePropagation();
obj.state.dragable = false;
},
zoomImage = function(e)
{
e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0 ? obj.ratio*=1.1 : obj.ratio*=0.9;
setBackground();
}
obj.spinner.show();
obj.image.onload = function() {
obj.spinner.hide();
setBackground();
el.bind('mousedown', imgMouseDown);
el.bind('mousemove', imgMouseMove);
$(window).bind('mouseup', imgMouseUp);
el.bind('mousewheel DOMMouseScroll', zoomImage);
};
obj.image.src = options.imgSrc;
el.on('remove', function(){$(window).unbind('mouseup', imgMouseUp)});
return obj;
};
jQuery.fn.cropbox = function(options){
return new cropbox(options, this);
};
}));
/*www.jq22.com*/

View File

@ -14,20 +14,33 @@
cursor: pointer;
}
.icheckbox_square-green {
.icheckbox_square-green-login{
display: inline-block;
*display: inline;
vertical-align: middle;
margin: 0;
padding: 0;
width: 22px;
height: 22px;
background: url(green-login.png) no-repeat;
border: none;
cursor: pointer;
}
.icheckbox_square-green,.icheckbox_square-green-login {
background-position: 0 0;
}
.icheckbox_square-green.hover {
.icheckbox_square-green.hover,.icheckbox_square-green-login.hover {
background-position: -24px 0;
}
.icheckbox_square-green.checked {
.icheckbox_square-green.checked,.icheckbox_square-green-login.checked {
background-position: -48px 0;
}
.icheckbox_square-green.disabled {
.icheckbox_square-green.disabled,.icheckbox_square-green.disabled-login {
background-position: -72px 0;
cursor: default;
}
.icheckbox_square-green.checked.disabled {
.icheckbox_square-green.checked.disabled,.icheckbox_square-green-login.checked.disabled {
background-position: -96px 0;
}
@ -50,7 +63,7 @@
/* HiDPI support */
@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) {
.icheckbox_square-green,
.icheckbox_square-green,.icheckbox_square-green-login,
.iradio_square-green {
background-image: url(green%402x.png);
-webkit-background-size: 240px 24px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@ -1,205 +1,86 @@
html{
height: 100%;
font-family: PingFangSC-Light,'helvetica neue','hiragino sans gb',arial,'microsoft yahei ui','microsoft yahei',simsun,sans-serif;
font-size: 14px;
html {
height:100%
}
body.signin {
background: #18c8f6;
height: auto;
background:url("../img/backg02.jpg") no-repeat center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
color: rgba(255,255,255,.95);
height:auto;
background:url(../img/login-background.jpg) no-repeat center fixed;
-webkit-background-size:cover;
-moz-background-size:cover;
-o-background-size:cover;
background-size:cover;
color:rgba(255,255,255,.95)
}
.logopanel h1{
font-size: 40px;
}
.signin-info h3{
font-size: 24px;
}
.signinpanel {
width: 912px;
margin: 7% auto 0 auto;
}
.btn-login{
border: 1px solid #00a3ff;
background-color: #00A3FF;
color: #fff;
border-radius: 2px;
}
.btn-login:hover{
color: #fff;
background-color: #0097ee;
border: 1px solid #0097ee;
width:750px;
margin:10% auto 0
}
.signinpanel .logopanel {
float: none;
width: auto;
padding: 0;
background: none;
float:none;
width:auto;
padding:0;
background:0 0
}
.signinpanel .signin-info ul {
list-style: none;
padding: 0;
margin: 20px 0;
font-size: 20px;
list-style:none;
padding:0;
margin:20px 0
}
.signinpanel .form-control {
display: block;
margin-top: 15px;
display:block;
margin-top:15px
}
.signinpanel .uname {
background: #fff url(../img/user.png) no-repeat 95% center;color:#333;
background:#fff url(../img/user.png) no-repeat 95% center;
color:#333
}
.signinpanel .pword {
background: #fff url(../img/locked.png) no-repeat 95% center;color:#333;
background:#fff url(../img/locked.png) no-repeat 95% center;
color:#333
}
.signinpanel .code {
background: #fff no-repeat 95% center;color:#333; margin:0 0 15px 0;
}
.signinpanel .btn {
margin-top: 15px;
margin-top:15px
}
.signinpanel form {
background: #fff;
border: 1px solid rgba(255,255,255,.3);
-moz-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
-webkit-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03);
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 30px;
color:#666;
background:rgba(255,255,255,.2);
border:1px solid rgba(255,255,255,.3);
-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);
-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);
box-shadow:0 3px 0 rgba(12,12,12,.03);
-moz-border-radius:3px;
-webkit-border-radius:3px;
border-radius:3px;
padding:30px
}
.signinpanel form >h3{
color: #333333;
font-size: 24px;
font-family: "microsoft yahei";
font-weight: 400;
.signup-footer {
border-top:solid 1px rgba(255,255,255,.3);
margin:20px 0;
padding-top:15px
}
.signup-footer{border-top: solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top: 15px;}
.outside-login{
border-top: #dcdee3 1px solid;
padding: 7% 0 0;
text-align: center;
position: relative;
margin: 9% 0% 0;
border-radius: 0 0 1% 1%;
@media screen and (max-width:768px) {
.signinpanel,.signuppanel {
margin:0 auto;
width:420px!important;
padding:20px
}
.outside-login-tit{
position: absolute;
top: -8px;
left: 50%;
margin: 0 0 0 -50px;
text-align: center;
width: 100px;
height: 14px;
line-height: 1;
color: #999;
.signinpanel form {
margin-top:20px
}
.outside-login-tit span{
position: relative;
z-index: 2;
.signup-footer,.signuppanel .form-control {
margin-bottom:10px
}
.outside-login-tit:before {
top: 0;
left: 0;
background-color: #fff;
.signup-footer .pull-left,.signup-footer .pull-right {
float:none!important;
text-align:center
}
.outside-login-tit:after {
top: 7px;
left: 0;
background-color: #fff;
.signinpanel .signin-info ul {
display:none
}
.outside-login-tit:after, .outside-login-tit:before {
content: '';
display: block;
width: 100%;
height: 7px;
position: absolute;
z-index: 1;
}@media screen and (max-width:320px) {
.signinpanel,.signuppanel {
margin:0 20px;
width:auto
}
.outside-login-con {
font-size: 0;
padding-top: 10px;
}
.outside-login-list {
width: 116%;
margin-left: -8%;
}
.outside-login-btn {
display: inline-block;
vertical-align: middle;
text-align: center;
width: 33.3333%;
}
.outside-login-list .actived {
display: inline-block;
}
.outside-login-btn em {
display: block;
width: 50px;
height: 50px;
line-height: 50px;
border-radius: 50%;
margin: 0 auto 5px;
white-space: normal;
font-size: 20px;
color: #fff;
}
.outside-login-btn:first-child, .outside-login-btn:last-child {
width: 30.3333%;
}
.outside-login-btn span {
font-size: 14px;
color: #333;
}
.oschina em{
background-color: #4ec34d;
}
.git em{
background-color: #211b1b;
}
.my em{
background-color: #ff4700
}
@media screen and (max-width: 768px) {
.signinpanel,
.signuppanel {
margin: 0 auto;
width: 413px!important;
padding: 20px;
}
.signinpanel form {
margin-top: 20px;
}
.signup-footer {
margin-bottom: 10px;
}
.signuppanel .form-control {
margin-bottom: 10px;
}
.signup-footer .pull-left,
.signup-footer .pull-right {
float: none !important;
text-align: center;
}
.signinpanel .signin-info ul {
display: none;
}
}
@media screen and (max-width: 320px) {
.signinpanel,
.signuppanel {
margin:0 20px;
width:auto;
}
}

View File

@ -1 +0,0 @@
html{height:100%}body.signin{height:auto;background:url(../img/login-background.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;color:rgba(255,255,255,.95)}.signinpanel{width:750px;margin:10% auto 0}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0 0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{border-top:solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:420px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -106,6 +106,30 @@ $(function(){
columns: _columns
});
}
// 初始bootstrap table 自定义参数
$.initTableParams = function (_columns, _url, _queryParams) {
$('.bootstrap-table').bootstrapTable({
method: 'get', // 请求方式(*
dataType: "json", // 返回格式(*
url: _url, // 请求后台的URL*
pagination: true, // 是否显示分页(*
pageSize: 10, // 每页的记录行数(*
pageNumber: 1, // 初始化加载第一页,默认第一页
pageList: [10, 25, 50], // 可供选择的每页的行数(*
search: true, // 是否显示搜索框功能
singleSelect: false, // 是否禁止多选
iconSize: 'outline', // 图标大小undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
toolbar: '#tableToolbar', // 指定工作栏
sidePagination: "server", // 启用服务端分页
showRefresh: true, // 是否显示刷新按钮
showColumns: true, // 是否显示隐藏某列下拉框
showToggle: true, // 是否显示详细视图和列表视图的切换按钮
cache: false, // 是否使用缓存
showExport: true, // 是否支持导出文件
queryParams: _queryParams,
columns: _columns
});
}
//初始化表格树,并展开树
$.initTreeTable = function (_id, _parentId, _columns, _url) {
$.initTreeTable(_id, _parentId, _columns, _url, true);

View File

@ -0,0 +1,61 @@
$(function() {
validateRule();
$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green-login"});
$('.imgcode').click(function() {
var url = ctx + "captcha/captchaImage?type=" + captchaType + "&s=" + Math.random();
$(".imgcode").attr("src", url);
});
});
$.validator.setDefaults({
submitHandler: function() {
login();
}
});
function login() {
var username = $("input[name='username']").val().trim();
var password = $("input[name='password']").val().trim();
var validateCode = $("input[name='validateCode']").val().trim();
var rememberMe = $("input[name='rememberme']").is(':checked');
$.ajax({
type: "POST",
url: ctx + "login",
data: {
"username": username,
"password": password,
"validateCode" : validateCode,
"rememberMe": rememberMe
},
success: function(r) {
if (r.code == 0) {
parent.location.href = ctx + 'index';
} else {
layer.msg(r.msg);
}
}
});
}
function validateRule() {
var icon = "<i class='fa fa-times-circle'></i> ";
$("#signupForm").validate({
rules: {
username: {
required: true
},
password: {
required: true
}
},
messages: {
username: {
required: icon + "请输入您的用户名",
},
password: {
required: icon + "请输入您的密码",
}
}
})
}

View File

@ -41,7 +41,7 @@ $(function() {
}
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -41,7 +41,7 @@ $(function() {
}
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -25,10 +25,8 @@ function loading() {
}
},
{
title : '创建时间',
formatter : function(row, index) {
return formatDate(row.createTime,"yyyy-MM-dd");
}
field: 'createTimeStr',
title : '创建时间'
},
{
title : '操作',

View File

@ -37,7 +37,7 @@ $(function() {
title: '备注'
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -33,7 +33,7 @@ $(function() {
title: '备注'
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -32,7 +32,7 @@ $(function() {
}
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -33,7 +33,7 @@ $(function() {
}
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{

View File

@ -44,7 +44,7 @@ function queryUserList() {
}
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{
@ -63,7 +63,20 @@ function queryUserList() {
}
}];
var url = prefix + "/list";
$.initTable(columns, url);
$.initTableParams(columns, url, queryParams);
}
function queryParams(params) {
return {
// 传递参数查询参数
pageSize: params.limit,
pageNum: params.offset / params.limit + 1,
searchValue: params.search,
orderByColumn: params.sort,
isAsc: params.order,
deptId: $("#deptId").val(),
parentId: $("#parentId").val()
};
}
function queryDeptTreeDaTa()
@ -72,8 +85,9 @@ function queryDeptTreeDaTa()
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
callback:{onClick:function(event, treeId, treeNode){
tree.expandNode(treeNode);
var opt = { query : { deptId : treeNode.id, parentId : treeNode.pId, } };
$('.bootstrap-table').bootstrapTable('refresh', opt);
$("#deptId").val(treeNode.id);
$("#parentId").val(treeNode.pId);
$('.bootstrap-table').bootstrapTable('refresh', queryParams);
}}
}, tree, loadTree = function(){
$.get(ctx + "system/dept/treeData", function(data) {

View File

@ -13,11 +13,11 @@ $(function() {
title: '表描述'
},
{
field: 'createTime',
field: 'createDateTimeStr',
title: '创建时间'
},
{
field: 'updateTime',
field: 'updateDateTimeStr',
title: '更新时间'
},
{

View File

@ -33,8 +33,8 @@
<script src="../static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
<script src="../static/ajax/libs/bootstrap-table/extensions/export/tableExport.js" th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ruoyi/js/common.js?v=1.1.2" th:src="@{/ruoyi/js/common.js?v=1.1.2}"></script>
<script src="../static/ruoyi/js/ry-ui.js?v=1.1.2" th:src="@{/ruoyi/js/ry-ui.js?v=1.1.2}"></script>
<script src="../static/ruoyi/js/common.js?v=1.1.3" th:src="@{/ruoyi/js/common.js?v=1.1.3}"></script>
<script src="../static/ruoyi/js/ry-ui.js?v=1.1.3" th:src="@{/ruoyi/js/ry-ui.js?v=1.1.3}"></script>
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
</div>

View File

@ -32,7 +32,7 @@
<ul class="nav" id="side-menu">
<li class="nav-header">
<div class="dropdown profile-element"> <span>
<img src="img/profile_small.jpg" alt="image" class="img-circle" height="60" width="60"/></span>
<img th:src="(${user.avatar} == '') ? '/img/profile.jpg' : '/profile/' + ${user.avatar}" alt="image" class="img-circle" height="60" width="60"/></span>
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
<span class="clear"><span class="block m-t-xs"><strong class="font-bold">[[${user.userName}]]</strong></span>
<span class="text-muted text-xs block"><span>[[${user.dept.deptName}]]</span> <b class="caret"></b></span> </span> </a>
@ -128,6 +128,6 @@
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
<script src="../static/js/plugins/metisMenu/jquery.metisMenu.js" th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
<script src="../static/js/plugins/slimscroll/jquery.slimscroll.min.js" th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
<script src="../static/ruoyi/js/index.js" th:src="@{/ruoyi/js/index.js}"></script>
<script src="../static/ruoyi/index.js" th:src="@{/ruoyi/index.js}"></script>
</body>
</html>

View File

@ -12,6 +12,7 @@
<link href="../static/css/font-awesome.css" th:href="@{css/font-awesome.css}" rel="stylesheet"/>
<link href="../static/css/style.min.css" th:href="@{css/style.min.css}" rel="stylesheet"/>
<link href="../static/css/login.min.css" th:href="@{css/login.min.css}" rel="stylesheet"/>
<link href="../static/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
<!--[if lt IE 9]>
<meta http-equiv="refresh" content="0;ie.html" />
<![endif]-->
@ -22,6 +23,7 @@
</head>
<body class="signin">
<div class="signinpanel">
<div class="row">
<div class="col-sm-7">
@ -47,7 +49,17 @@
<p class="m-t-md">你若不离不弃,我必生死相依</p>
<input type="text" name="username" class="form-control uname" placeholder="用户名" value="admin" />
<input type="password" name="password" class="form-control pword m-b" placeholder="密码" value="admin123" />
<a href="#">忘记密码了?</a>
<div class="row" th:if="${captchaEbabled==true}">
<div class="col-xs-6">
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5">
</div>
<div class="col-xs-6">
<a href="javascript:void(0);" title="点击更换验证码">
<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
</a>
</div>
</div>
<input class="i-checks" type="checkbox" name="rememberme" />&nbsp;&nbsp;记住我
<button class="btn btn-success btn-block">登录</button>
</form>
</div>
@ -58,7 +70,7 @@
</div>
</div>
</div>
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
<!-- 全局js -->
<script src="../static/js/jquery.min.js" th:src="@{js/jquery.min.js}"></script>
<script src="../static/js/bootstrap.min.js" th:src="@{js/bootstrap.min.js}"></script>
@ -66,55 +78,9 @@
<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{ajax/libs/validate/jquery.validate.min.js}"></script>
<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{ajax/libs/validate/messages_zh.min.js}"></script>
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{ajax/libs/layer/layer.min.js}"></script>
<script src="../static/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
<script type="text/javascript">
$(document).ready(function() {
console.log(ctx);
validateRule();
});
$.validator.setDefaults({
submitHandler: function() {
login();
}
});
function login() {
$.ajax({
type: "POST",
url: ctx + "login",
data: $('#signupForm').serialize(),
success: function(r) {
if (r.code == 0) {
parent.location.href = ctx + 'index';
} else {
layer.msg(r.msg);
}
}
});
}
function validateRule() {
var icon = "<i class='fa fa-times-circle'></i> ";
$("#signupForm").validate({
rules: {
username: {
required: true
},
password: {
required: true
}
},
messages: {
username: {
required: icon + "请输入您的用户名",
},
password: {
required: icon + "请输入您的密码",
}
}
})
}
</script>
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
</body>
</html>

View File

@ -94,13 +94,34 @@
<div class="ibox-content no-padding">
<div class="panel-body">
<div class="panel-group" id="version">
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">
<a data-toggle="collapse" data-parent="#version" href="#v13">v1.1.3</a><code class="pull-right">2018.05.14</code>
</h5>
</div>
<div id="v13" class="panel-collapse collapse in">
<div class="panel-body">
<ol>
<li>新增验证码(数组计算、字符验证)</li>
<li>新增cookie记住我</li>
<li>新增头像上传</li>
<li>用户名密码长度限制</li>
<li>通用字段提取</li>
<li>支持自定义条件查询</li>
<li>部门名称必填、时间格式调整</li>
<li>其他细节优化</li>
</ol>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h5 class="panel-title">
<a data-toggle="collapse" data-parent="#version" href="#v12">v1.1.2</a><code class="pull-right">2018.05.07</code>
</h5>
</div>
<div id="v12" class="panel-collapse collapse in">
<div id="v12" class="panel-collapse collapse">
<div class="panel-body">
<ol>
<li>新增个人信息修改</li>

View File

@ -101,7 +101,7 @@
</script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="/ajax/libs/select/select2.js" th:src="@{/ajax/libs/select/select2.js}"></script>
<script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>
</body>

View File

@ -96,7 +96,7 @@
</script>
<script src="/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
<script src="/ajax/libs/select/select2.js" th:src="@{/ajax/libs/select/select2.js}"></script>
<script>
<script>
$(document).ready(function(){$(".i-checks").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",})});
</script>
</body>

View File

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<meta charset="utf-8">
<title>用户头像修改</title>
<link href="/ajax/libs/cropbox/cropbox.css" th:href="@{/ajax/libs/cropbox/cropbox.css}" rel="stylesheet"/>
<body class="white-bg">
<div class="container">
<div class="imageBox">
<div class="thumbBox"></div>
<div class="spinner" style="display: none">Loading...</div>
</div>
<div class="action">
<div class="new-contentarea tc">
<a href="javascript:void(0)" class="upload-img"> <label for="avatar">上传图像</label> </a>
<input type="file" class="" name="avatar" id="avatar" />
</div>
<input type="button" id="btnCrop" class="Btnsty_peyton" value="裁切" />
<input type="button" id="btnZoomIn" class="Btnsty_peyton" value="+" />
<input type="button" id="btnZoomOut" class="Btnsty_peyton" value="-" />
<input type="button" id="blobSubmit" class="Btnsty_peyton" value="提交" />
</div>
<div class="cropped"></div>
</div>
<div th:include="include::footer"></div>
<script src="/ajax/libs/cropbox/cropbox.js" th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
<script type="text/javascript">
$(window).load(function() {
var options = {
thumbBox: '.thumbBox',
spinner: '.spinner',
imgSrc: '/img/profile.jpg'
}
var cropper = $('.imageBox').cropbox(options);
$('#avatar').on('change',
function() {
var reader = new FileReader();
reader.onload = function(e) {
options.imgSrc = e.target.result;
cropper = $('.imageBox').cropbox(options);
}
reader.readAsDataURL(this.files[0]);
})
$('#blobSubmit').on('click', function(){
var img = cropper.getBlob();
var formdata = new FormData();
formdata.append("avatarfile", img);
formdata.append("userId", 1);
$.ajax({
url: ctx + "system/user/profile/updateAvatar",
data: formdata,
type: "post",
processData: false,
contentType: false,
success: function(result) {
if (result.code == "0") {
parent.layer.msg("修改成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
$.parentReload();
});
}else{
$.modalAlert(result.msg, "error");
}
}
})
})
$('#btnCrop').on('click', function(){
var img = cropper.getDataURL();
$('.cropped').html('');
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:64px;margin-top:4px;border-radius:64px;box-shadow:0px 0px 12px #7E7E7E;" ><p>64px*64px</p>');
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:128px;margin-top:4px;border-radius:128px;box-shadow:0px 0px 12px #7E7E7E;"><p>128px*128px</p>');
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:180px;margin-top:4px;border-radius:180px;box-shadow:0px 0px 12px #7E7E7E;"><p>180px*180px</p>');
})
$('#btnZoomIn').on('click', function(){
cropper.zoomIn();
})
$('#btnZoomOut').on('click', function(){
cropper.zoomOut();
})
});
</script>
</body>
</html>

View File

@ -27,6 +27,7 @@
<ul class="dropdown-menu dropdown-user">
<li><a href="javascript:edit()">修改信息</a></li>
<li><a href="javascript:resetPwd()">修改密码</a></li>
<li><a href="javascript:avatar()">修改头像</a></li>
</ul>
</div>
@ -34,7 +35,7 @@
<div class="contact-box">
<div class="col-sm-4">
<div class="text-center">
<img alt="image" class="img-circle m-t-xs img-responsive" src="/img/profilel.jpg">
<img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? '/img/profile.jpg' : '/profile/' + ${user.avatar}">
<div class="m-t-xs font-bold">CEO</div>
</div>
</div>
@ -45,7 +46,7 @@
<p><i class="fa fa-group"></i> [[${user.dept.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
<p><i class="fa fa-transgender"></i> [[${user.sex}]]</p>
<p><i class="fa fa-envelope-o"></i> [[${user.email}]]</p>
<p><i class="fa fa-calendar"></i> [[${user.createTime}]]</p>
<p><i class="fa fa-calendar"></i> [[${user.createDateTimeStr}]]</p>
</div>
<div class="clearfix"></div>
</a>
@ -68,6 +69,11 @@
var url = ctx + 'system/user/profile/resetPwd/' + userId;
layer_show("重置密码", url, '800', '500');
}
/*用户管理-头像*/
function avatar() {
var url = ctx + 'system/user/profile/avatar/' + userId;
layer_showAuto("修改头像", url);
}
</script>
</body>
</html>

View File

@ -7,7 +7,6 @@
<link href="/ajax/libs/jquery-layout/jquery.layout-latest.css" th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
<body class="white-bg">
<div class="ui-layout-west">
<div class="main-content">
<div class="box box-main">
@ -38,7 +37,8 @@
<i class="glyphicon glyphicon-trash"></i>
</button>
</div>
<input type="hidden" id="deptId">
<input type="hidden" id="parentId">
<table class="bootstrap-table" data-mobile-responsive="true"
data-sort-name="create_time" data-sort-order="desc">
</table>

View File

@ -18,7 +18,7 @@ import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.framework.web.domain.Message;
/**
* ${tableComment} 控制层处理
* ${tableComment} 信息操作处理
*
* @author ${author}
* @date ${datetime}
@ -47,7 +47,7 @@ public class ${className}Controller extends BaseController
@ResponseBody
public TableDataInfo list(${className} ${classname})
{
setPageInfo(${classname});
startPage();
List<${className}> list = ${classname}Service.select${className}List(${classname});
return getDataTable(list);
}
@ -84,7 +84,7 @@ public class ${className}Controller extends BaseController
{
if (${classname}Service.save${className}(${classname}) > 0)
{
return Message.ok();
return Message.success();
}
return Message.error();
}
@ -99,7 +99,7 @@ public class ${className}Controller extends BaseController
{
if (${classname}Service.delete${className}ById(${primaryKey.attrname}) > 0)
{
return Message.ok();
return Message.success();
}
return Message.error();
}
@ -115,7 +115,7 @@ public class ${className}Controller extends BaseController
int rows = ${classname}Service.batchDelete${className}(${primaryKey.attrname}s);
if (rows > 0)
{
return Message.ok();
return Message.success();
}
return Message.error();
}

View File

@ -1,4 +1,4 @@
package ${package}.dao;
package ${package}.mapper;
import ${package}.domain.${className};
import java.util.List;
@ -9,7 +9,7 @@ import java.util.List;
* @author ${author}
* @date ${datetime}
*/
public interface I${className}Dao
public interface I${className}Mapper
{
/**

View File

@ -4,7 +4,7 @@ import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.utils.StringUtils;
import ${package}.dao.I${className}Dao;
import ${package}.mapper.I${className}Mapper;
import ${package}.domain.${className};
import ${package}.service.I${className}Service;
@ -18,7 +18,7 @@ import ${package}.service.I${className}Service;
public class ${className}ServiceImpl implements I${className}Service
{
@Autowired
private I${className}Dao ${classname}Dao;
private I${className}Mapper ${classname}Mapper;
/**
* 查询${tableComment}信息
@ -29,7 +29,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname})
{
return ${classname}Dao.select${className}ById(${primaryKey.attrname});
return ${classname}Mapper.select${className}ById(${primaryKey.attrname});
}
/**
@ -41,7 +41,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public List<${className}> select${className}List(${className} ${classname})
{
return ${classname}Dao.select${className}List(${classname});
return ${classname}Mapper.select${className}List(${classname});
}
/**
@ -53,7 +53,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public int insert${className}(${className} ${classname})
{
return ${classname}Dao.insert${className}(${classname});
return ${classname}Mapper.insert${className}(${classname});
}
/**
@ -65,7 +65,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public int update${className}(${className} ${classname})
{
return ${classname}Dao.update${className}(${classname});
return ${classname}Mapper.update${className}(${classname});
}
/**
@ -81,11 +81,11 @@ public class ${className}ServiceImpl implements I${className}Service
int rows = 0;
if (StringUtils.isNotNull(${primaryKey.attrname}))
{
rows = ${classname}Dao.update${className}(${classname});
rows = ${classname}Mapper.update${className}(${classname});
}
else
{
rows = ${classname}Dao.insert${className}(${classname});
rows = ${classname}Mapper.insert${className}(${classname});
}
return rows;
}
@ -99,7 +99,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public int delete${className}ById(${primaryKey.attrType} ${primaryKey.attrname})
{
return ${classname}Dao.delete${className}ById(${primaryKey.attrname});
return ${classname}Mapper.delete${className}ById(${primaryKey.attrname});
}
/**
@ -111,7 +111,7 @@ public class ${className}ServiceImpl implements I${className}Service
@Override
public int batchDelete${className}(${primaryKey.attrType}[] ${primaryKey.attrname}s)
{
return ${classname}Dao.batchDelete${className}(${primaryKey.attrname}s);
return ${classname}Mapper.batchDelete${className}(${primaryKey.attrname}s);
}
}

View File

@ -1,7 +1,6 @@
package ${package}.domain;
import java.io.Serializable;
import com.ruoyi.framework.web.page.PageDomain;
import com.ruoyi.framework.web.domain.BaseEntity;
#if(${hasBigDecimal})
import java.math.BigDecimal;
#end
@ -12,7 +11,7 @@ import java.math.BigDecimal;
* @author ${author}
* @date ${datetime}
*/
public class ${className} extends PageDomain implements Serializable
public class ${className} extends BaseEntity
{
private static final long serialVersionUID = 1L;

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${package}.dao.I${className}Dao">
<mapper namespace="${package}.mapper.I${className}Mapper">
<resultMap type="${className}" id="${className}Result">
#foreach ($column in $columns)
@ -25,32 +25,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<insert id="insert${className}" parameterType="${className}"#if($primaryKey.extra == 'auto_increment') useGeneratedKeys="true" keyProperty="$primaryKey.attrname"#end>
insert into ${tableName}
(
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
$column.columnName#if($velocityCount != $columns.size()), #end
#end
#end
)
values
(
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
#{$column.attrname}#if($velocityCount != $columns.size()), #end
#end
#end
)
insert into ${tableName} (
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
$column.columnName#if($velocityCount != $columns.size()), #end
#end
#end
)
values (
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
#{$column.attrname}#if($velocityCount != $columns.size()), #end
#end
#end
)
</insert>
<update id="update${className}" parameterType="${className}">
update ${tableName}
<set>
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName)
<if test="$column.attrname != null">`$column.columnName` = #{$column.attrname}#if($velocityCount != $columns.size()), #end</if>
#end
#end
#foreach($column in $columns)
#if($column.columnName != $primaryKey.columnName)
<if test="$column.attrname != null">$column.columnName = #{$column.attrname}#if($velocityCount != $columns.size()), #end</if>
#end
#end
</set>
where ${primaryKey.columnName} = #{${primaryKey.attrname}}
</update>