Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gogirl-miniapp-backend
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huluobin
gogirl-miniapp-backend
Commits
3ef9d884
Commit
3ef9d884
authored
May 25, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
美甲作品
parent
a44147c9
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
76 additions
and
0 deletions
+76
-0
CareerCmdService.java
.../com/gogirl/application/store/store/CareerCmdService.java
+2
-0
CareerCmdServiceImpl.java
...rl/application/store/store/impl/CareerCmdServiceImpl.java
+9
-0
WorkLock.java
...in/java/com/gogirl/infrastructure/util/lock/WorkLock.java
+57
-0
CareerController.java
.../com/gogirl/interfaces/store/career/CareerController.java
+8
-0
No files found.
src/main/java/com/gogirl/application/store/store/CareerCmdService.java
View file @
3ef9d884
...
...
@@ -65,4 +65,6 @@ public interface CareerCmdService {
* @return
*/
Page
<
BaseProduce
>
queryWorkTpl
(
Integer
technicianId
,
Integer
pageNum
,
Integer
pageSize
,
String
searchKeyWord
);
}
src/main/java/com/gogirl/application/store/store/impl/CareerCmdServiceImpl.java
View file @
3ef9d884
...
...
@@ -49,6 +49,15 @@ public class CareerCmdServiceImpl implements CareerCmdService {
@Override
public
void
submitWorks
(
SubmitWorksCommand
cmd
)
{
Works
submittedWork
=
worksMapper
.
selectOne
(
new
LambdaQueryWrapper
<
Works
>()
.
eq
(
Works:
:
getTechnicianId
,
cmd
.
getTechnicianId
())
.
eq
(
Works:
:
getProduceId
,
cmd
.
getProduceId
())
);
if
(
submittedWork
!=
null
)
{
throw
new
RRException
(
"您已经上传过美甲作品"
);
}
Works
works
=
new
Works
();
works
.
setCreateTime
(
System
.
currentTimeMillis
());
works
.
setRemarks
(
cmd
.
getRemarks
());
...
...
src/main/java/com/gogirl/infrastructure/util/lock/WorkLock.java
0 → 100644
View file @
3ef9d884
package
com
.
gogirl
.
infrastructure
.
util
.
lock
;
import
java.util.HashMap
;
import
java.util.concurrent.locks.ReentrantLock
;
/**
* * 分段锁,系统提供一定数量的原始锁,根据传入用户id值获取对应的锁并加锁 * 注意:要锁的用户id值如果发生改变,有可能导致锁无法成功释放!!!
*/
public
class
WorkLock
{
private
final
static
HashMap
<
Integer
,
ReentrantLock
>
lockMap
=
new
HashMap
<>();
private
Integer
segments
=
1
;
// 默认分段数量
private
WorkLock
()
{
init
(
null
,
false
);
}
private
WorkLock
(
Integer
counts
,
boolean
fair
)
{
init
(
counts
,
fair
);
}
/*静态内部类实现单例*/
public
static
WorkLock
getInstance
()
{
return
SingletonHolder
.
instance
;
}
private
void
init
(
Integer
counts
,
boolean
fair
)
{
if
(
counts
!=
null
)
{
segments
=
counts
;
}
for
(
int
i
=
0
;
i
<
segments
;
i
++)
{
lockMap
.
put
(
i
,
new
ReentrantLock
(
fair
));
}
}
public
void
lock
(
int
key
)
{
ReentrantLock
lock
=
lockMap
.
get
(
key
%
segments
);
lock
.
lock
();
}
public
void
unlock
(
int
key
)
{
ReentrantLock
lock
=
lockMap
.
get
(
key
%
segments
);
lock
.
unlock
();
}
@Override
public
String
toString
()
{
return
"SegmentLock [segments="
+
segments
+
", lockMap="
+
lockMap
+
"]"
;
}
/*静态内部类实现单例*/
private
static
class
SingletonHolder
{
private
static
final
WorkLock
instance
=
new
WorkLock
(
null
,
true
);
}
}
src/main/java/com/gogirl/interfaces/store/career/CareerController.java
View file @
3ef9d884
...
...
@@ -27,6 +27,7 @@ import com.gogirl.infrastructure.mapper.store.training.TrainingStartClassLogTech
import
com.gogirl.infrastructure.mapper.store.training.TrainingStartClassMapper
;
import
com.gogirl.infrastructure.mapper.user.customer.CustomerBalanceRecordMapper
;
import
com.gogirl.infrastructure.util.SessionUtils
;
import
com.gogirl.infrastructure.util.lock.WorkLock
;
import
com.gogirl.shared.store.*
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -61,8 +62,15 @@ public class CareerController {
public
JsonResult
<
Void
>
submitWorks
(
@RequestHeader
String
token
,
@RequestBody
@Valid
SubmitWorksCommand
cmd
)
{
Integer
technicianId
=
SessionUtils
.
getTechnicianId
();
WorkLock
workLock
=
WorkLock
.
getInstance
();
try
{
workLock
.
lock
(
technicianId
);
cmd
.
setTechnicianId
(
technicianId
);
careerCmdService
.
submitWorks
(
cmd
);
}
finally
{
workLock
.
unlock
(
technicianId
);
}
return
JsonResult
.
success
();
}
...
...
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