Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
JSH ERP
Commits
08104760
Commit
08104760
authored
Mar 31, 2019
by
季圣华
Browse files
解决bug
parent
d73781d8
Changes
22
Hide whitespace changes
Inline
Side-by-side
erp_web/css/css.css
View file @
08104760
...
...
@@ -651,6 +651,18 @@ input.inputstyle:hover{
position
:
relative
;
background
:
url(../images/bg_loginmain.jpg)
no-repeat
;
}
#login
.login_btn
{
float
:
left
;
width
:
230px
;
height
:
50px
;
margin
:
160px
auto
0
120px
;
}
#login
.register_btn
{
float
:
left
;
width
:
230px
;
height
:
50px
;
margin
:
218px
auto
0
120px
;
}
#login_signal
{
position
:
absolute
;
left
:
63px
;
...
...
@@ -668,6 +680,18 @@ input.inputstyle:hover{
top
:
119px
;
width
:
54px
;
}
#txt_userpwd_repeat
{
position
:
absolute
;
left
:
65px
;
top
:
154px
;
width
:
54px
;
}
#txt_captcha
{
position
:
absolute
;
left
:
65px
;
top
:
189px
;
width
:
54px
;
}
#txt_vcode
{
position
:
absolute
;
left
:
66px
;
...
...
@@ -698,6 +722,40 @@ input.inputstyle:hover{
left
:
118px
;
top
:
118px
;
}
#user_pwd_repeat
{
position
:
absolute
;
width
:
132px
;
padding
:
0
4px
;
height
:
23px
;
line-height
:
23px
;
border
:
none
;
font-family
:
Arial
,
Helvetica
,
sans-serif
;
background
:
url(../images/bg_logininout.jpg)
no-repeat
;
left
:
118px
;
top
:
152px
;
}
#user_captcha
{
position
:
absolute
;
width
:
132px
;
padding
:
0
4px
;
height
:
23px
;
line-height
:
23px
;
border
:
none
;
font-family
:
Arial
,
Helvetica
,
sans-serif
;
background
:
url(../images/bg_logininout.jpg)
no-repeat
;
left
:
118px
;
top
:
186px
;
}
#imgCaptcha
{
position
:
absolute
;
width
:
132px
;
padding
:
0
4px
;
height
:
40px
;
line-height
:
23px
;
border
:
none
;
left
:
270px
;
top
:
170px
;
}
#vcode
{
position
:
absolute
;
width
:
67px
;
...
...
@@ -716,17 +774,32 @@ input.inputstyle:hover{
top
:
151px
;
}
#btn_login
{
position
:
absolute
;
width
:
81px
;
width
:
100px
;
height
:
30px
;
border
:
none
;
cursor
:
pointer
;
background
:
url(../images/btn_login.jpg)
no-repeat
;
color
:
white
;
background
:
#318dff
;
left
:
120px
;
top
:
170px
;
margin-right
:
10px
;
}
#btn_login
:hover
{
background
:
url(../images/btn_loginon.jpg)
no-repeat
;
background
:
#54a0ff
;
}
#btn_register
{
width
:
100px
;
height
:
30px
;
border
:
none
;
cursor
:
pointer
;
color
:
white
;
background
:
#318dff
;
left
:
120px
;
top
:
170px
;
margin-right
:
10px
;
}
#btn_register
:hover
{
background
:
#54a0ff
;
}
#tip_username
{
position
:
absolute
;
...
...
erp_web/images/login_tip.jpg
View replaced file @
d73781d8
View file @
08104760
1.64 KB
|
W:
|
H:
2.76 KB
|
W:
|
H:
2-up
Swipe
Onion skin
erp_web/images/register_tip.jpg
0 → 100644
View file @
08104760
2.75 KB
erp_web/js/gVerify.js
0 → 100644
View file @
08104760
!
(
function
(
window
,
document
)
{
var
size
=
4
;
//设置验证码长度
function
GVerify
(
options
)
{
//创建一个图形验证码对象,接收options对象为参数
this
.
options
=
{
//默认options参数值
id
:
""
,
//容器Id
canvasId
:
"
verifyCanvas
"
,
//canvas的ID
width
:
"
100
"
,
//默认canvas宽度
height
:
"
30
"
,
//默认canvas高度
type
:
"
letter
"
,
//图形验证码默认类型blend:数字字母混合类型、number:纯数字、letter:纯字母
code
:
""
,
}
if
(
Object
.
prototype
.
toString
.
call
(
options
)
==
"
[object Object]
"
){
//判断传入参数类型
for
(
var
i
in
options
)
{
//根据传入的参数,修改默认参数值
this
.
options
[
i
]
=
options
[
i
];
}
}
else
{
this
.
options
.
id
=
options
;
}
this
.
options
.
numArr
=
"
0,1,2,3,4,5,6,7,8,9
"
.
split
(
"
,
"
);
this
.
options
.
letterArr
=
getAllLetter
();
this
.
_init
();
this
.
refresh
();
}
GVerify
.
prototype
=
{
/**版本号**/
version
:
'
1.0.0
'
,
/**初始化方法**/
_init
:
function
()
{
var
con
=
document
.
getElementById
(
this
.
options
.
id
);
var
canvas
=
document
.
createElement
(
"
canvas
"
);
this
.
options
.
width
=
con
.
offsetWidth
>
0
?
con
.
offsetWidth
:
"
100
"
;
this
.
options
.
height
=
con
.
offsetHeight
>
0
?
con
.
offsetHeight
:
"
30
"
;
canvas
.
id
=
this
.
options
.
canvasId
;
canvas
.
width
=
this
.
options
.
width
;
canvas
.
height
=
this
.
options
.
height
;
canvas
.
style
.
cursor
=
"
pointer
"
;
canvas
.
innerHTML
=
"
您的浏览器版本不支持canvas
"
;
con
.
appendChild
(
canvas
);
var
parent
=
this
;
canvas
.
onclick
=
function
(){
parent
.
refresh
();
}
},
/**生成验证码**/
refresh
:
function
()
{
this
.
options
.
code
=
""
;
var
canvas
=
document
.
getElementById
(
this
.
options
.
canvasId
);
if
(
canvas
.
getContext
)
{
var
ctx
=
canvas
.
getContext
(
'
2d
'
);
}
else
{
return
;
}
ctx
.
textBaseline
=
"
middle
"
;
ctx
.
fillStyle
=
randomColor
(
180
,
240
);
ctx
.
fillRect
(
0
,
0
,
this
.
options
.
width
,
this
.
options
.
height
);
if
(
this
.
options
.
type
==
"
blend
"
)
{
//判断验证码类型
var
txtArr
=
this
.
options
.
numArr
.
concat
(
this
.
options
.
letterArr
);
}
else
if
(
this
.
options
.
type
==
"
number
"
)
{
var
txtArr
=
this
.
options
.
numArr
;
}
else
{
var
txtArr
=
this
.
options
.
letterArr
;
}
for
(
var
i
=
1
;
i
<=
size
;
i
++
)
{
var
txt
=
txtArr
[
randomNum
(
0
,
txtArr
.
length
)];
this
.
options
.
code
+=
txt
;
ctx
.
font
=
randomNum
(
this
.
options
.
height
/
2
,
this
.
options
.
height
)
+
'
px SimHei
'
;
//随机生成字体大小
ctx
.
fillStyle
=
randomColor
(
50
,
160
);
//随机生成字体颜色
ctx
.
shadowOffsetX
=
randomNum
(
-
3
,
3
);
ctx
.
shadowOffsetY
=
randomNum
(
-
3
,
3
);
ctx
.
shadowBlur
=
randomNum
(
-
3
,
3
);
ctx
.
shadowColor
=
"
rgba(0, 0, 0, 0.3)
"
;
var
x
=
this
.
options
.
width
/
(
size
+
1
)
*
i
;
var
y
=
this
.
options
.
height
/
2
;
var
deg
=
randomNum
(
-
30
,
30
);
/**设置旋转角度和坐标原点**/
ctx
.
translate
(
x
,
y
);
ctx
.
rotate
(
deg
*
Math
.
PI
/
180
);
ctx
.
fillText
(
txt
,
0
,
0
);
/**恢复旋转角度和坐标原点**/
ctx
.
rotate
(
-
deg
*
Math
.
PI
/
180
);
ctx
.
translate
(
-
x
,
-
y
);
}
/**绘制干扰线**/
for
(
var
i
=
0
;
i
<
4
;
i
++
)
{
ctx
.
strokeStyle
=
randomColor
(
40
,
180
);
ctx
.
beginPath
();
ctx
.
moveTo
(
randomNum
(
0
,
this
.
options
.
width
),
randomNum
(
0
,
this
.
options
.
height
));
ctx
.
lineTo
(
randomNum
(
0
,
this
.
options
.
width
),
randomNum
(
0
,
this
.
options
.
height
));
ctx
.
stroke
();
}
/**绘制干扰点**/
for
(
var
i
=
0
;
i
<
this
.
options
.
width
/
4
;
i
++
)
{
ctx
.
fillStyle
=
randomColor
(
0
,
255
);
ctx
.
beginPath
();
ctx
.
arc
(
randomNum
(
0
,
this
.
options
.
width
),
randomNum
(
0
,
this
.
options
.
height
),
1
,
0
,
2
*
Math
.
PI
);
ctx
.
fill
();
}
},
/**验证验证码**/
validate
:
function
(
code
){
var
code
=
code
.
toLowerCase
();
var
v_code
=
this
.
options
.
code
.
toLowerCase
();
if
(
code
==
v_code
){
return
true
;
}
else
{
this
.
refresh
();
return
false
;
}
}
}
/**生成字母数组**/
function
getAllLetter
()
{
var
letterStr
=
"
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
"
;
return
letterStr
.
split
(
"
,
"
);
}
/**生成一个随机数**/
function
randomNum
(
min
,
max
)
{
return
Math
.
floor
(
Math
.
random
()
*
(
max
-
min
)
+
min
);
}
/**生成一个随机色**/
function
randomColor
(
min
,
max
)
{
var
r
=
randomNum
(
min
,
max
);
var
g
=
randomNum
(
min
,
max
);
var
b
=
randomNum
(
min
,
max
);
return
"
rgb(
"
+
r
+
"
,
"
+
g
+
"
,
"
+
b
+
"
)
"
;
}
window
.
GVerify
=
GVerify
;
})(
window
,
document
);
\ No newline at end of file
erp_web/login.html
View file @
08104760
...
...
@@ -26,7 +26,10 @@
<input
type=
"password"
id=
"user_pwd"
/>
<p
id=
"tip_username"
style=
"display: none"
><span
class=
"error_input"
>
用户名不正确
</span></p>
<p
id=
"tip_userpwd"
style=
"display: none"
>
密码不能为空
</p>
<input
type=
"button"
value=
" "
id=
"btn_login"
/>
<div
class=
"login_btn"
>
<input
type=
"button"
value=
"登录"
id=
"btn_login"
/>
<input
type=
"button"
value=
"立即注册"
id=
"btn_register"
/>
</div>
</div>
<p
id=
"copyright"
>
Copyright © 2017-2020 季圣华(jishenghua)
...
...
@@ -40,6 +43,7 @@
//进入页面聚焦在username输入框,方便 用户输入
$
(
"
#user_name
"
).
focus
();
browserFit
();
checkTenantStatus
();
});
//浏览器适配
...
...
@@ -50,6 +54,32 @@
$
(
"
#user_vcodepwd
"
).
empty
().
append
(
"
密 码:
"
);
}
//判断是否开启多租户
function
checkTenantStatus
(){
$
(
"
#btn_register
"
).
hide
();
$
.
ajax
({
type
:
"
get
"
,
url
:
"
/user/getTenantStatus
"
,
dataType
:
"
json
"
,
success
:
function
(
res
)
{
if
(
res
&&
res
.
code
===
200
)
{
if
(
res
.
data
)
{
if
(
res
.
data
.
status
==
"
open
"
)
{
$
(
"
#btn_register
"
).
show
();
}
else
if
(
res
.
data
.
status
==
"
close
"
)
{
$
(
"
#btn_register
"
).
hide
();
}
}
}
else
{
$
(
"
#btn_register
"
).
hide
();
}
},
error
:
function
()
{
$
(
"
#btn_register
"
).
hide
();
}
});
}
//初始化键盘enter事件
$
(
document
).
keydown
(
function
(
event
)
{
//兼容 IE和firefox 事件
...
...
@@ -66,6 +96,10 @@
$
(
'
#btn_login
'
).
off
(
"
click
"
).
on
(
"
click
"
,
function
()
{
checkUserInput
();
});
$
(
"
#btn_register
"
).
off
(
"
click
"
).
on
(
"
click
"
,
function
()
{
location
.
href
=
"
register.html
"
;
});
//检测用户输入数据
function
checkUserInput
()
{
...
...
erp_web/pages/manage/depot.html
View file @
08104760
...
...
@@ -356,6 +356,7 @@
//加载完以后重新初始化
var
opts
=
$
(
"
#tableData
"
).
datagrid
(
'
options
'
);
showDepotDetails
(
opts
.
pageNumber
,
opts
.
pageSize
);
$
.
messager
.
alert
(
'
提示
'
,
'
保存成功,请给用户分配该仓库才能使用!
'
,
'
info
'
);
}
},
//此处添加错误处理
...
...
erp_web/pages/materials/purchase_back_list.html
View file @
08104760
...
...
@@ -257,7 +257,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/pages/materials/purchase_in_list.html
View file @
08104760
...
...
@@ -259,7 +259,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/pages/materials/purchase_orders_list.html
View file @
08104760
...
...
@@ -178,7 +178,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/pages/materials/sale_back_list.html
View file @
08104760
...
...
@@ -251,7 +251,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/pages/materials/sale_orders_list.html
View file @
08104760
...
...
@@ -174,7 +174,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/pages/materials/sale_out_list.html
View file @
08104760
...
...
@@ -255,7 +255,7 @@
<table
class=
"money-dlg"
>
<tr
class=
"money-head-tmp"
>
<td
style=
"width:30px;"
></td>
<td
style=
"width:140px; padding:5px;"
>
结算账户
</td>
<td
style=
"width:140px; padding:5px;"
>
支出项目
</td>
<td
style=
"width:100px; padding:5px;"
>
金额
</td>
</tr>
<tr>
...
...
erp_web/register.html
0 → 100644
View file @
08104760
<!DOCTYPE html>
<html>
<head>
<title>
ERP系统
</title>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=8"
>
<meta
name=
"referrer"
content=
"Webkit"
>
<link
rel=
"shortcut icon"
href=
"/images/favicon.ico"
type=
"image/x-icon"
/>
<link
type=
"text/css"
rel=
"stylesheet"
href=
"/css/css.css"
/>
<script
type=
"text/javascript"
src=
"/js/jquery-1.8.0.min.js"
></script>
<script
type=
"text/javascript"
src=
"/js/common/common.js"
></script>
<script
type=
"text/javascript"
src=
"/js/md5/md5.js"
></script>
<script
type=
"text/javascript"
src=
"/js/gVerify.js"
></script>
</head>
<body
id=
"login_body"
>
<div
id=
"login_main"
>
<div
id=
"login"
>
<p
id=
"login_signal"
><img
src=
"/images/register_tip.jpg"
width=
"108"
height=
"29"
alt=
"login"
/></p>
<p
id=
"txt_username"
>
<label
for=
"user_name"
>
用户名:
</label>
</p>
<p
id=
"txt_userpwd"
>
<label
for=
"user_vcodepwd"
id=
"user_vcodepwd"
>
密
码:
</label>
</p>
<p
id=
"txt_userpwd_repeat"
>
<label
for=
"user_vcodepwd"
id=
"user_vcodepwd_repeat"
>
确认密码:
</label>
</p>
<p
id=
"txt_captcha"
>
<label>
验证码:
</label>
</p>
<input
type=
"text"
id=
"user_name"
/>
<input
type=
"password"
id=
"user_pwd"
/>
<input
type=
"password"
id=
"user_pwd_repeat"
/>
<input
type=
"text"
id=
"user_captcha"
/>
<div
id=
"imgCaptcha"
></div>
<p
id=
"tip_username"
style=
"display: none"
><span
class=
"error_input"
>
用户名不正确
</span></p>
<p
id=
"tip_userpwd"
style=
"display: none"
>
密码不能为空
</p>
<div
class=
"register_btn"
>
<input
type=
"button"
value=
"注册"
id=
"btn_register"
/>
<input
type=
"button"
value=
"立即登录"
id=
"btn_login"
/>
</div>
</div>
<p
id=
"copyright"
>
Copyright © 2017-2020 季圣华(jishenghua)
<a
style=
"color:#00458a;"
href=
"https://gitee.com/jishenghua/JSH_ERP"
target=
"_blank"
>
华夏ERP_v2.0
</a>
</p>
</div>
<script
type=
"text/javascript"
>
var
verifyCode
=
new
GVerify
(
"
imgCaptcha
"
);
//注册按钮绑定处理事件
$
(
"
#btn_register
"
).
off
(
"
click
"
).
on
(
"
click
"
,
function
()
{
if
(
$
(
"
#user_captcha
"
).
val
())
{
var
res
=
verifyCode
.
validate
(
$
(
"
#user_captcha
"
).
val
());
if
(
res
){
if
(
!
$
(
"
#user_name
"
).
val
())
{
alert
(
"
用户名不能为空!
"
);
}
else
if
(
!
$
(
"
#user_pwd
"
).
val
())
{
alert
(
"
密码不能为空!
"
);
}
else
if
(
!
$
(
"
#user_pwd_repeat
"
).
val
())
{
alert
(
"
确认密码不能为空!
"
);
}
else
if
(
$
(
"
#user_pwd
"
).
val
()
!=
$
(
"
#user_pwd_repeat
"
).
val
())
{
$
(
"
#user_pwd_repeat
"
).
val
(
""
);
alert
(
"
确认密码不一致!
"
);
}
else
{
//执行注册
$
.
ajax
({
type
:
"
post
"
,
url
:
"
/user/registerUser
"
,
dataType
:
"
json
"
,
data
:
({
loginame
:
$
(
"
#user_name
"
).
val
(),
password
:
$
(
"
#user_pwd
"
).
val
()
}),
success
:
function
(
res
)
{
if
(
res
&&
res
.
code
===
200
)
{
alert
(
"
注册成功!
"
);
}
else
{
alert
(
"
注册失败!
"
);
}
},
//此处添加错误处理
error
:
function
()
{
alert
(
"
后台访问错误,请联系管理员!
"
);
}
});
}
}
else
{
alert
(
"
验证码错误!
"
);
}
}
else
{
alert
(
"
验证码为空!
"
);
}
});
$
(
'
#btn_login
'
).
off
(
"
click
"
).
on
(
"
click
"
,
function
()
{
location
.
href
=
"
login.html
"
;
});
</script>
</body>
</html>
\ No newline at end of file
src/main/java/com/jsh/erp/config/TenantConfig.java
View file @
08104760
...
...
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import
com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler
;
import
com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser
;
import
com.jsh.erp.datasource.entities.User
;
import
net.sf.jsqlparser.expression.Expression
;
import
net.sf.jsqlparser.expression.LongValue
;
import
org.mybatis.spring.mapper.MapperScannerConfigurer
;
...
...
@@ -42,16 +43,27 @@ public class TenantConfig {
@Override
public
boolean
doTableFilter
(
String
tableName
)
{
//
从session中获取租户id
//
获取开启状态
Object
mybatisPlusStatus
=
request
.
getSession
().
getAttribute
(
"mybatisPlusStatus"
);
if
(
mybatisPlusStatus
!=
null
&&
mybatisPlusStatus
.
toString
().
equals
(
"open"
))
{
// 这里可以判断是否过滤表
if
(
"databasechangelog"
.
equals
(
tableName
)
||
"databasechangeloglock"
.
equals
(
tableName
)
||
"jsh_materialproperty"
.
equals
(
tableName
)
||
"tbl_sequence"
.
equals
(
tableName
)
||
"dual"
.
equals
(
tableName
)
||
"jsh_userbusiness"
.
equals
(
tableName
)
||
"jsh_app"
.
equals
(
tableName
)
||
"jsh_functions"
.
equals
(
tableName
))
{
//从session中获取租户id
String
loginName
=
null
;
Object
userInfo
=
request
.
getSession
().
getAttribute
(
"user"
);
if
(
userInfo
!=
null
)
{
User
user
=
(
User
)
userInfo
;
loginName
=
user
.
getLoginame
();
}
if
((
"admin"
).
equals
(
loginName
))
{
return
true
;
}
else
{
return
false
;
// 这里可以判断是否过滤表
if
(
"databasechangelog"
.
equals
(
tableName
)
||
"databasechangeloglock"
.
equals
(
tableName
)
||
"jsh_materialproperty"
.
equals
(
tableName
)
||
"tbl_sequence"
.
equals
(
tableName
)
||
"dual"
.
equals
(
tableName
)
||
"jsh_userbusiness"
.
equals
(
tableName
)
||
"jsh_app"
.
equals
(
tableName
)
||
"jsh_functions"
.
equals
(
tableName
))
{
return
true
;
}
else
{
return
false
;
}
}
}
else
{
return
true
;
...
...
src/main/java/com/jsh/erp/controller/AppController.java
View file @
08104760
...
...
@@ -165,21 +165,23 @@ public class AppController {
JSONArray
dataArray
=
new
JSONArray
();
if
(
null
!=
dataList
)
{
for
(
App
app
:
dataList
)
{
JSONObject
item
=
new
JSONObject
();
item
.
put
(
"id"
,
app
.
getId
());
item
.
put
(
"text"
,
app
.
getName
());
//勾选判断1
Boolean
flag
=
false
;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
app
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的应用:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
if
(!(
"系统管理"
).
equals
(
app
.
getName
()))
{
JSONObject
item
=
new
JSONObject
();
item
.
put
(
"id"
,
app
.
getId
());
item
.
put
(
"text"
,
app
.
getName
());
//勾选判断1
Boolean
flag
=
false
;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
app
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的应用:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item
.
put
(
"checked"
,
true
);
}
//结束
dataArray
.
add
(
item
);
}
if
(
flag
==
true
)
{
item
.
put
(
"checked"
,
true
);
}
//结束
dataArray
.
add
(
item
);
}
}
outer
.
put
(
"children"
,
dataArray
);
...
...
src/main/java/com/jsh/erp/controller/FunctionsController.java
View file @
08104760
...
...
@@ -129,104 +129,106 @@ public class FunctionsController {
JSONArray
dataArray
=
new
JSONArray
();
if
(
null
!=
dataList
)
{
for
(
Functions
functions
:
dataList
)
{
JSONObject
item
=
new
JSONObject
();
item
.
put
(
"id"
,
functions
.
getId
());
item
.
put
(
"text"
,
functions
.
getName
());
if
(!(
"系统管理"
).
equals
(
functions
.
getName
()))
{
JSONObject
item
=
new
JSONObject
();
item
.
put
(
"id"
,
functions
.
getId
());
item
.
put
(
"text"
,
functions
.
getName
());
//勾选判断1
Boolean
flag
=
false
;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item
.
put
(
"checked"
,
true
);
}
//结束
//勾选判断1
Boolean
flag
=
false
;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item
.
put
(
"checked"
,
true
);
}
//结束
List
<
Functions
>
dataList1
=
functionsService
.
findRoleFunctions
(
functions
.
getNumber
());
JSONArray
dataArray1
=
new
JSONArray
();
if
(
null
!=
dataList1
)
{
List
<
Functions
>
dataList1
=
functionsService
.
findRoleFunctions
(
functions
.
getNumber
());
JSONArray
dataArray1
=
new
JSONArray
();
if
(
null
!=
dataList1
)
{
for
(
Functions
functions1
:
dataList1
)
{
item
.
put
(
"state"
,
"open"
);
//如果不为空,节点不展开
JSONObject
item1
=
new
JSONObject
();
item1
.
put
(
"id"
,
functions1
.
getId
());
item1
.
put
(
"text"
,
functions1
.
getName
());
for
(
Functions
functions1
:
dataList1
)
{
item
.
put
(
"state"
,
"open"
);
//如果不为空,节点不展开
JSONObject
item1
=
new
JSONObject
();
item1
.
put
(
"id"
,
functions1
.
getId
());
item1
.
put
(
"text"
,
functions1
.
getName
());
//勾选判断2
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions1
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item1
.
put
(
"checked"
,
true
);
}
//结束
//勾选判断2
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions1
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item1
.
put
(
"checked"
,
true
);
}
//结束
List
<
Functions
>
dataList2
=
functionsService
.
findRoleFunctions
(
functions1
.
getNumber
());
JSONArray
dataArray2
=
new
JSONArray
();
if
(
null
!=
dataList2
)
{
List
<
Functions
>
dataList2
=
functionsService
.
findRoleFunctions
(
functions1
.
getNumber
());
JSONArray
dataArray2
=
new
JSONArray
();
if
(
null
!=
dataList2
)
{
for
(
Functions
functions2
:
dataList2
)
{
item1
.
put
(
"state"
,
"closed"
);
//如果不为空,节点不展开
JSONObject
item2
=
new
JSONObject
();
item2
.
put
(
"id"
,
functions2
.
getId
());
item2
.
put
(
"text"
,
functions2
.
getName
());
for
(
Functions
functions2
:
dataList2
)
{
item1
.
put
(
"state"
,
"closed"
);
//如果不为空,节点不展开
JSONObject
item2
=
new
JSONObject
();
item2
.
put
(
"id"
,
functions2
.
getId
());
item2
.
put
(
"text"
,
functions2
.
getName
());
//勾选判断3
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions2
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item2
.
put
(
"checked"
,
true
);
}
//结束
//勾选判断3
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions2
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item2
.
put
(
"checked"
,
true
);
}
//结束
List
<
Functions
>
dataList3
=
functionsService
.
findRoleFunctions
(
functions2
.
getNumber
());
JSONArray
dataArray3
=
new
JSONArray
();
if
(
null
!=
dataList3
)
{
List
<
Functions
>
dataList3
=
functionsService
.
findRoleFunctions
(
functions2
.
getNumber
());
JSONArray
dataArray3
=
new
JSONArray
();
if
(
null
!=
dataList3
)
{
for
(
Functions
functions3
:
dataList3
)
{
item2
.
put
(
"state"
,
"closed"
);
//如果不为空,节点不展开
JSONObject
item3
=
new
JSONObject
();
item3
.
put
(
"id"
,
functions3
.
getId
());
item3
.
put
(
"text"
,
functions3
.
getName
());
for
(
Functions
functions3
:
dataList3
)
{
item2
.
put
(
"state"
,
"closed"
);
//如果不为空,节点不展开
JSONObject
item3
=
new
JSONObject
();
item3
.
put
(
"id"
,
functions3
.
getId
());
item3
.
put
(
"text"
,
functions3
.
getName
());
//勾选判断4
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions3
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item3
.
put
(
"checked"
,
true
);
}
//结束
//勾选判断4
//Boolean flag = false;
try
{
flag
=
userBusinessService
.
checkIsUserBusinessExist
(
type
,
keyId
,
"["
+
functions3
.
getId
().
toString
()
+
"]"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>>>设置角色对应的功能:类型"
+
type
+
" KeyId为: "
+
keyId
+
" 存在异常!"
);
}
if
(
flag
==
true
)
{
item3
.
put
(
"checked"
,
true
);
dataArray3
.
add
(
item3
);
item2
.
put
(
"children"
,
dataArray3
);
}
//结束
dataArray3
.
add
(
item3
);
item2
.
put
(
"children"
,
dataArray3
);
}
}
dataArray2
.
add
(
item2
);
item1
.
put
(
"children"
,
dataArray2
);
dataArray2
.
add
(
item2
);
item1
.
put
(
"children"
,
dataArray2
);
}
}
dataArray1
.
add
(
item1
);
item
.
put
(
"children"
,
dataArray1
);
}
dataArray1
.
add
(
item1
);
item
.
put
(
"children"
,
dataArray1
);
}
dataArray
.
add
(
item
);
}
dataArray
.
add
(
item
);
}
outer
.
put
(
"children"
,
dataArray
);
arr
.
add
(
outer
);
...
...
src/main/java/com/jsh/erp/controller/UserController.java
View file @
08104760
...
...
@@ -14,6 +14,7 @@ import com.jsh.erp.datasource.entities.UserEx;
import
com.jsh.erp.datasource.vo.TreeNode
;
import
com.jsh.erp.datasource.vo.TreeNodeEx
;
import
com.jsh.erp.service.user.UserService
;
import
com.jsh.erp.service.userBusiness.UserBusinessService
;
import
com.jsh.erp.utils.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -25,6 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
import
java.io.IOException
;
import
java.net.URLEncoder
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.*
;
...
...
@@ -41,10 +43,24 @@ public class UserController {
@Value
(
"${mybatis-plus.status}"
)
private
String
mybatisPlusStatus
;
@Value
(
"${manage.ip}"
)
private
String
manageIp
;
@Value
(
"${manage.port}"
)
private
Integer
managePort
;
@Value
(
"${manage.roleId}"
)
private
Integer
manageRoleId
;
@Resource
private
UserService
userService
;
@Resource
private
UserBusinessService
userBusinessService
;
private
static
String
message
=
"成功"
;
private
static
final
String
HTTP
=
"http://"
;
private
static
final
String
CODE_OK
=
"200"
;
@PostMapping
(
value
=
"/login"
)
public
BaseResponseInfo
login
(
@RequestParam
(
value
=
"loginame"
,
required
=
false
)
String
loginame
,
...
...
@@ -96,7 +112,17 @@ public class UserController {
// new Timestamp(System.currentTimeMillis()), (short) 0, "管理用户:" + username + " 登录系统", username + " 登录系统"));
msgTip
=
"user can login"
;
request
.
getSession
().
setAttribute
(
"user"
,
user
);
request
.
getSession
().
setAttribute
(
"tenantId"
,
1L
);
//租户id
String
url
=
HTTP
+
manageIp
+
":"
+
managePort
+
"/tenant/getTenant?tenantId="
+
user
.
getId
();
JSONObject
obj
=
HttpClient
.
httpGet
(
url
);
if
(
obj
!=
null
&&
obj
.
getString
(
"code"
).
equals
(
CODE_OK
))
{
JSONObject
dataObj
=
obj
.
getJSONObject
(
"data"
);
if
(
dataObj
!=
null
)
{
String
id
=
dataObj
.
getString
(
"tenantId"
);
if
(
id
!=
null
)
{
request
.
getSession
().
setAttribute
(
"tenantId"
,
id
);
//租户id
}
}
}
request
.
getSession
().
setAttribute
(
"mybatisPlusStatus"
,
mybatisPlusStatus
);
//开启状态
}
catch
(
Exception
e
)
{
logger
.
error
(
">>>>>>>>>>>>>>>查询用户名为:"
+
username
+
" ,用户信息异常"
,
e
);
...
...
@@ -149,6 +175,8 @@ public class UserController {
BaseResponseInfo
res
=
new
BaseResponseInfo
();
try
{
request
.
getSession
().
removeAttribute
(
"user"
);
request
.
getSession
().
removeAttribute
(
"tenantId"
);
request
.
getSession
().
removeAttribute
(
"mybatisPlusStatus"
);
response
.
sendRedirect
(
"/login.html"
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
...
...
@@ -283,12 +311,55 @@ public class UserController {
@PostMapping
(
"/addUser"
)
@ResponseBody
public
Object
addUser
(
@RequestParam
(
"info"
)
String
beanJson
)
throws
Exception
{
JSONObject
result
=
ExceptionConstants
.
standardSuccess
();
UserEx
ue
=
JSON
.
parseObject
(
beanJson
,
UserEx
.
class
);
userService
.
addUserAndOrgUserRel
(
ue
);
return
result
;
}
/**
* 注册用户
* @param loginame
* @param password
* @return
* @throws Exception
*/
@PostMapping
(
value
=
"/registerUser"
)
public
Object
registerUser
(
@RequestParam
(
value
=
"loginame"
,
required
=
false
)
String
loginame
,
@RequestParam
(
value
=
"password"
,
required
=
false
)
String
password
,
HttpServletRequest
request
)
throws
Exception
{
JSONObject
result
=
ExceptionConstants
.
standardSuccess
();
UserEx
ue
=
new
UserEx
();
ue
.
setUsername
(
loginame
);
ue
.
setLoginame
(
loginame
);
ue
.
setPassword
(
password
);
ue
=
userService
.
registerUser
(
ue
);
//调第三方接口创建租户管理信息
String
url
=
HTTP
+
manageIp
+
":"
+
managePort
+
"/tenant/add"
;
JSONObject
tenantObj
=
new
JSONObject
();
tenantObj
.
put
(
"tenantId"
,
ue
.
getId
());
tenantObj
.
put
(
"loginName"
,
ue
.
getLoginame
());
String
param
=
URLEncoder
.
encode
(
tenantObj
.
toString
());
HttpClient
.
httpPost
(
url
+
"?info="
+
param
,
param
);
logger
.
info
(
"===============创建租户信息完成==============="
);
//更新租户id
User
user
=
new
User
();
user
.
setId
(
ue
.
getId
());
user
.
setTenantId
(
ue
.
getId
());
userService
.
updateUserTenant
(
user
);
//新增用户与角色的关系
JSONObject
ubObj
=
new
JSONObject
();
ubObj
.
put
(
"type"
,
"UserRole"
);
ubObj
.
put
(
"keyid"
,
ue
.
getId
());
JSONArray
ubArr
=
new
JSONArray
();
ubArr
.
add
(
manageRoleId
);
ubObj
.
put
(
"value"
,
ubArr
.
toString
());
userBusinessService
.
insertUserBusiness
(
ubObj
.
toString
(),
request
);
return
result
;
}
/**
* create by: cjl
...
...
@@ -335,4 +406,19 @@ public class UserController {
return
arr
;
}
@GetMapping
(
"/getTenantStatus"
)
public
BaseResponseInfo
getTenantStatus
(
HttpServletRequest
request
)
{
BaseResponseInfo
res
=
new
BaseResponseInfo
();
try
{
Map
<
String
,
Object
>
data
=
new
HashMap
<
String
,
Object
>();
data
.
put
(
"status"
,
mybatisPlusStatus
);
res
.
code
=
200
;
res
.
data
=
data
;
}
catch
(
Exception
e
){
e
.
printStackTrace
();
res
.
code
=
500
;
res
.
data
=
"获取失败"
;
}
return
res
;
}
}
src/main/java/com/jsh/erp/filter/LogCostFilter.java
View file @
08104760
package
com.jsh.erp.filter
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.util.StringUtils
;
import
javax.servlet.*
;
import
javax.servlet.annotation.WebFilter
;
import
javax.servlet.annotation.WebInitParam
;
...
...
@@ -16,7 +14,8 @@ import java.util.regex.Pattern;
@WebFilter
(
filterName
=
"LogCostFilter"
,
urlPatterns
=
{
"/*"
},
initParams
=
{
@WebInitParam
(
name
=
"ignoredUrl"
,
value
=
".css#.js#.jpg#.png#.gif#.ico"
),
@WebInitParam
(
name
=
"filterPath"
,
value
=
"/user/login"
)})
@WebInitParam
(
name
=
"filterPath"
,
value
=
"/user/login#/user/registerUser#/user/getTenantStatus"
)})
public
class
LogCostFilter
implements
Filter
{
private
static
final
String
FILTER_PATH
=
"filterPath"
;
...
...
@@ -53,7 +52,7 @@ public class LogCostFilter implements Filter {
chain
.
doFilter
(
request
,
response
);
return
;
}
if
(
requestUrl
!=
null
&&
requestUrl
.
contains
(
"/login.html"
))
{
if
(
requestUrl
!=
null
&&
(
requestUrl
.
contains
(
"/login.html"
)
||
requestUrl
.
contains
(
"/register.html"
))
)
{
chain
.
doFilter
(
request
,
response
);
return
;
}
...
...
src/main/java/com/jsh/erp/service/depotHead/DepotHeadService.java
View file @
08104760
...
...
@@ -189,7 +189,7 @@ public class DepotHeadService {
public
List
<
DepotHead
>
findByMonth
(
String
monthTime
)
{
DepotHeadExample
example
=
new
DepotHeadExample
();
monthTime
=
monthTime
+
"-31
00:00:00
"
;
monthTime
=
monthTime
+
"-31
23:59:59
"
;
Date
month
=
StringUtil
.
getDateByString
(
monthTime
,
null
);
example
.
createCriteria
().
andOpertimeLessThanOrEqualTo
(
month
);
return
depotHeadMapper
.
selectByExample
(
example
);
...
...
src/main/java/com/jsh/erp/service/user/UserService.java
View file @
08104760
...
...
@@ -15,10 +15,7 @@ import com.jsh.erp.datasource.vo.TreeNodeEx;
import
com.jsh.erp.exception.BusinessRunTimeException
;
import
com.jsh.erp.service.log.LogService
;
import
com.jsh.erp.service.orgaUserRel.OrgaUserRelService
;
import
com.jsh.erp.utils.ExceptionCodeConstants
;
import
com.jsh.erp.utils.JshException
;
import
com.jsh.erp.utils.StringUtil
;
import
com.jsh.erp.utils.Tools
;
import
com.jsh.erp.utils.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -29,6 +26,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
java.net.URLEncoder
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -272,6 +270,29 @@ public class UserService {
}
return
null
;
}
@Transactional
(
value
=
"transactionManager"
,
rollbackFor
=
Exception
.
class
)
public
UserEx
registerUser
(
UserEx
ue
)
throws
Exception
{
ue
.
setPassword
(
Tools
.
md5Encryp
(
ue
.
getPassword
()));
ue
.
setIsystem
(
BusinessConstants
.
USER_NOT_SYSTEM
);
if
(
ue
.
getIsmanager
()==
null
){
ue
.
setIsmanager
(
BusinessConstants
.
USER_NOT_MANAGER
);
}
ue
.
setStatus
(
BusinessConstants
.
USER_STATUS_NORMAL
);
int
i
=
userMapperEx
.
addUser
(
ue
);
if
(
i
>
0
){
return
ue
;
}
return
null
;
}
@Transactional
(
value
=
"transactionManager"
,
rollbackFor
=
Exception
.
class
)
public
void
updateUserTenant
(
User
user
)
throws
Exception
{
UserExample
example
=
new
UserExample
();
example
.
createCriteria
().
andIdEqualTo
(
user
.
getId
());
userMapper
.
updateByPrimaryKeySelective
(
user
);
}
@Transactional
(
value
=
"transactionManager"
,
rollbackFor
=
Exception
.
class
)
public
void
updateUserAndOrgUserRel
(
UserEx
ue
)
throws
Exception
{
logService
.
insertLog
(
BusinessConstants
.
LOG_INTERFACE_NAME_USER
,
...
...
Prev
1
2
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment