Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
36291b5d
Commit
36291b5d
authored
Nov 09, 2018
by
fengshuonan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
上传头像
parent
470f88ad
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
67 additions
and
16 deletions
+67
-16
src/main/java/cn/stylefeng/guns/core/util/DefaultImages.java
+1
-1
src/main/java/cn/stylefeng/guns/modular/system/controller/SystemController.java
+37
-0
src/main/webapp/WEB-INF/system/user/user_view.html
+8
-8
src/main/webapp/assets/modular/system/user/user_view.js
+21
-7
No files found.
src/main/java/cn/stylefeng/guns/core/util/DefaultImages.java
View file @
36291b5d
...
...
@@ -27,7 +27,7 @@ public class DefaultImages {
* @Date 2018/10/30 5:51 PM
*/
public
static
String
userAvatar
()
{
return
ConfigListener
.
getConf
().
get
(
"contextPath"
)
+
"/assets/common/images/users/1.jpg
"
;
return
"data:image/jpeg;base64,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
"
;
}
/**
...
...
src/main/java/cn/stylefeng/guns/modular/system/controller/SystemController.java
View file @
36291b5d
...
...
@@ -15,13 +15,21 @@
*/
package
cn
.
stylefeng
.
guns
.
modular
.
system
.
controller
;
import
cn.stylefeng.guns.core.shiro.ShiroKit
;
import
cn.stylefeng.guns.core.shiro.ShiroUser
;
import
cn.stylefeng.guns.modular.system.model.User
;
import
cn.stylefeng.guns.modular.system.service.IUserService
;
import
cn.stylefeng.roses.core.base.controller.BaseController
;
import
cn.stylefeng.roses.core.util.ToolUtil
;
import
cn.stylefeng.roses.kernel.model.exception.RequestEmptyException
;
import
cn.stylefeng.roses.kernel.model.exception.ServiceException
;
import
cn.stylefeng.roses.kernel.model.exception.enums.CoreExceptionEnum
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLDecoder
;
...
...
@@ -38,6 +46,9 @@ public class SystemController extends BaseController {
private
String
PREFIX
=
"/common/"
;
@Autowired
private
IUserService
userService
;
/**
* 通用的树列表选择器
*/
...
...
@@ -61,4 +72,30 @@ public class SystemController extends BaseController {
return
PREFIX
+
"common_tree_dlg.html"
;
}
/**
* 上传头像
*
* @author fengshuonan
* @Date 2018/11/9 12:45 PM
*/
@RequestMapping
(
"/uploadAvatar"
)
@ResponseBody
public
Object
uploadAvatar
(
@RequestParam
String
avatar
)
{
if
(
ToolUtil
.
isEmpty
(
avatar
))
{
throw
new
RequestEmptyException
(
"请求头像为空"
);
}
ShiroUser
currentUser
=
ShiroKit
.
getUser
();
if
(
currentUser
==
null
)
{
throw
new
ServiceException
(
CoreExceptionEnum
.
NO_CURRENT_USER
);
}
User
user
=
userService
.
selectById
(
currentUser
.
getId
());
user
.
setAvatar
(
avatar
);
userService
.
updateById
(
user
);
return
SUCCESS_TIP
;
}
}
src/main/webapp/WEB-INF/system/user/user_view.html
View file @
36291b5d
...
...
@@ -238,20 +238,20 @@
</div>
<div
class=
"btn-group btn-group-crop"
>
<button
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "maxWidth": 350, "maxHeight": 35
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { maxWidth:
350, maxHeight: 35
0 })"
>
上传头像
</span>
<button
id=
"uploadAvatar"
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "maxWidth": 100, "maxHeight": 10
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { maxWidth:
100, maxHeight: 10
0 })"
>
上传头像
</span>
</button>
</div>
<div
class=
"btn-group btn-group-crop"
>
<button
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "width":
160, "height": 9
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { width:
160, height: 9
0 })"
>
160
×
9
0
<button
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "width":
200, "height": 20
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { width:
200, height: 20
0 })"
>
200
×
20
0
</span>
</button>
<button
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "width": 3
20, "height": 18
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { width: 3
20, height: 18
0 })"
>
3
20
×
18
0
<button
type=
"button"
class=
"btn btn-info"
data-method=
"getCroppedCanvas"
data-option=
"{ "width": 3
00, "height": 30
0 }"
>
<span
class=
"docs-tooltip"
data-toggle=
"tooltip"
data-animation=
"false"
title=
"$().cropper("getCroppedCanvas", { width: 3
00, height: 30
0 })"
>
3
00
×
30
0
</span>
</button>
</div>
...
...
src/main/webapp/assets/modular/system/user/user_view.js
View file @
36291b5d
$
(
function
()
{
'use strict'
;
var
console
=
window
.
console
||
{
log
:
function
()
{}
};
var
console
=
window
.
console
||
{
log
:
function
()
{
}
};
var
URL
=
window
.
URL
||
window
.
webkitURL
;
var
$image
=
$
(
'#image'
);
var
$download
=
$
(
'#download'
);
...
...
@@ -166,13 +169,7 @@ $(function () {
case
'getCroppedCanvas'
:
if
(
result
)
{
// Bootstrap's Modal
$
(
'#getCroppedCanvasModal'
).
modal
().
find
(
'.modal-body'
).
html
(
result
);
if
(
!
$download
.
hasClass
(
'disabled'
))
{
download
.
download
=
uploadedImageName
;
$download
.
attr
(
'href'
,
result
.
toDataURL
(
uploadedImageType
));
}
}
break
;
...
...
@@ -197,6 +194,23 @@ $(function () {
}
});
//绑定上传的操作
$download
.
on
(
'click'
,
function
()
{
var
data
=
$
(
"#uploadAvatar"
).
data
();
var
result
=
$image
.
cropper
(
data
.
method
,
data
.
option
,
data
.
secondOption
);
var
imgBase
=
result
.
toDataURL
(
'image/jpeg'
);
var
requestData
=
{
avatar
:
imgBase
};
var
ajax
=
new
$ax
(
Feng
.
ctxPath
+
"/system/uploadAvatar"
,
function
(
data
)
{
window
.
parent
.
Feng
.
success
(
"上传成功!"
);
$
(
"#getCroppedCanvasModal"
).
modal
(
'hide'
);
},
function
(
data
)
{
window
.
parent
.
Feng
.
error
(
"上传失败!"
+
data
.
responseJSON
.
message
+
"!"
);
});
ajax
.
set
(
requestData
);
ajax
.
start
();
});
// Keyboard
$
(
document
.
body
).
on
(
'keydown'
,
function
(
e
)
{
if
(
e
.
target
!==
this
||
!
$image
.
data
(
'cropper'
)
||
this
.
scrollTop
>
300
)
{
...
...
Write
Preview
Markdown
is supported
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