Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
街头小贩
Jforum2
提交
c3897703
J
Jforum2
项目概览
街头小贩
/
Jforum2
通知
2
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
1
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Jforum2
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c3897703
编写于
9月 22, 2020
作者:
街头小贩
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加MemberVipExchangeRecords作废方法
上级
cc7c8351
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
135 addition
and
36 deletion
+135
-36
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
...s/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
+16
-13
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberVipExchangeRecordsDaoImpl.java
...orum/member/impl/dao/MemberVipExchangeRecordsDaoImpl.java
+27
-1
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/PenalizeQuartzJob.java
.../apobates/forum/member/impl/quartz/PenalizeQuartzJob.java
+1
-1
member.impl/src/main/java/com/apobates/forum/member/impl/service/MemberPenalizeRecordsServiceImpl.java
...member/impl/service/MemberPenalizeRecordsServiceImpl.java
+2
-3
member.impl/src/main/java/com/apobates/forum/member/impl/service/MemberVipExchangeRecordsServiceImpl.java
...ber/impl/service/MemberVipExchangeRecordsServiceImpl.java
+23
-0
member/src/main/java/com/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
...m/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
+7
-7
member/src/main/java/com/apobates/forum/member/dao/MemberVipExchangeRecordsDao.java
...pobates/forum/member/dao/MemberVipExchangeRecordsDao.java
+18
-0
member/src/main/java/com/apobates/forum/member/service/MemberVipExchangeRecordsService.java
...forum/member/service/MemberVipExchangeRecordsService.java
+9
-0
thrones.admin/src/main/java/com/apobates/forum/thrones/admin/controller/AdminMemberPenalizeRecordsController.java
...dmin/controller/AdminMemberPenalizeRecordsController.java
+2
-2
thrones.admin/src/main/java/com/apobates/forum/thrones/admin/controller/AdminMemberVipExchangeRecordsController.java
...n/controller/AdminMemberVipExchangeRecordsController.java
+20
-5
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/index.jsp
...ebapp/WEB-INF/layout/page/admin/member_exchange/index.jsp
+3
-1
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/query_member.jsp
...EB-INF/layout/page/admin/member_exchange/query_member.jsp
+3
-1
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/query_range.jsp
...WEB-INF/layout/page/admin/member_exchange/query_range.jsp
+3
-1
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/starter.jsp
...min/src/main/webapp/WEB-INF/layout/page/admin/starter.jsp
+1
-1
未找到文件。
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberPenalizeRecordsDaoImpl.java
浏览文件 @
c3897703
package
com.apobates.forum.member.impl.dao
;
import
com.apobates.forum.member.dao.MemberDao
;
import
com.apobates.forum.member.dao.MemberPenalizeRecordsDao
;
import
com.apobates.forum.member.entity.MemberPenalizeRecords
;
import
com.apobates.forum.member.entity.MemberStatusEnum
;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
import
javax.persistence.EntityManager
;
...
...
@@ -14,6 +17,7 @@ import javax.persistence.Query;
import
javax.persistence.TypedQuery
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
...
...
@@ -84,8 +88,12 @@ public class MemberPenalizeRecordsDaoImpl implements MemberPenalizeRecordsDao{
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
Optional
<
Boolean
>
editStatus
(
long
id
,
boolean
status
)
{
int
affect
=
entityManager
.
createQuery
(
"UPDATE MemberPenalizeRecords mpr SET mpr.status = ?1 WHERE mpr.id = ?2"
).
setParameter
(
1
,
status
).
setParameter
(
2
,
id
).
executeUpdate
();
public
Optional
<
Boolean
>
expired
(
long
id
)
{
int
affect
=
entityManager
.
createQuery
(
"UPDATE MemberPenalizeRecords mpr SET mpr.status = ?1 WHERE mpr.id = ?2 AND mpr.status = ?3"
)
.
setParameter
(
1
,
false
)
.
setParameter
(
2
,
id
)
.
setParameter
(
3
,
true
)
.
executeUpdate
();
if
(
affect
==
1
)
{
return
Optional
.
of
(
true
);
}
...
...
@@ -93,15 +101,15 @@ public class MemberPenalizeRecordsDaoImpl implements MemberPenalizeRecordsDao{
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
int
e
ditStatus
(
Collection
<
Long
>
idList
,
boolean
status
)
{
public
int
e
xpired
(
Collection
<
Long
>
idList
)
{
//, boolean status
int
affect
=
0
;
Query
query
=
entityManager
.
createQuery
(
"UPDATE MemberPenalizeRecords mpr SET mpr.status = ?1 WHERE mpr.id = ?2"
);
Query
query
=
entityManager
.
createQuery
(
"UPDATE MemberPenalizeRecords mpr SET mpr.status = ?1 WHERE mpr.id = ?2
AND mpr.status = ?3
"
);
for
(
Long
id
:
idList
)
{
affect
+=
query
.
setParameter
(
1
,
status
).
setParameter
(
2
,
id
).
executeUpdate
();
affect
+=
query
.
setParameter
(
1
,
false
).
setParameter
(
2
,
id
).
setParameter
(
3
,
true
).
executeUpdate
();
}
return
affect
;
}
@Override
public
long
countForMember
(
long
memberId
)
{
return
entityManager
.
createQuery
(
"SELECT COUNT(mpr) FROM MemberPenalizeRecords mpr WHERE mpr.memberId = ?1 AND mpr.status = ?2"
,
Long
.
class
)
...
...
@@ -144,15 +152,10 @@ public class MemberPenalizeRecordsDaoImpl implements MemberPenalizeRecordsDao{
public
Optional
<
MemberPenalizeRecords
>
findOne
(
Long
primaryKey
)
{
return
Optional
.
ofNullable
(
entityManager
.
find
(
MemberPenalizeRecords
.
class
,
primaryKey
));
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
Optional
<
Boolean
>
edit
(
MemberPenalizeRecords
updateEntity
)
{
try
{
entityManager
.
merge
(
updateEntity
);
return
Optional
.
of
(
true
);
}
catch
(
Exception
e
)
{
return
Optional
.
empty
();
}
return
Optional
.
empty
();
}
@Override
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/dao/MemberVipExchangeRecordsDaoImpl.java
浏览文件 @
c3897703
...
...
@@ -5,10 +5,12 @@ import com.apobates.forum.member.entity.MemberVipExchangeRecords;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
import
javax.persistence.EntityManager
;
import
javax.persistence.PersistenceContext
;
import
javax.persistence.Query
;
import
javax.persistence.TypedQuery
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -137,7 +139,7 @@ public class MemberVipExchangeRecordsDaoImpl implements MemberVipExchangeRecords
@Override
public
Optional
<
MemberVipExchangeRecords
>
findOne
(
Long
primaryKey
)
{
return
Optional
.
empty
(
);
return
Optional
.
ofNullable
(
entityManager
.
find
(
MemberVipExchangeRecords
.
class
,
primaryKey
)
);
}
@Override
...
...
@@ -169,4 +171,28 @@ public class MemberVipExchangeRecordsDaoImpl implements MemberVipExchangeRecords
.
setParameter
(
2
,
lapseDateFinish
)
.
getResultStream
();
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
int
expired
(
Collection
<
Long
>
idList
)
{
int
affect
=
0
;
Query
query
=
entityManager
.
createQuery
(
"UPDATE MemberVipExchangeRecords ver SET ver.status = ?1 WHERE ver.id = ?2 AND ver.status = ?3"
);
for
(
Long
id
:
idList
)
{
affect
+=
query
.
setParameter
(
1
,
false
).
setParameter
(
2
,
id
).
setParameter
(
3
,
true
).
executeUpdate
();
}
return
affect
;
}
@Transactional
(
propagation
=
Propagation
.
REQUIRED
)
@Override
public
Optional
<
Boolean
>
expired
(
long
id
)
{
int
affect
=
entityManager
.
createQuery
(
"UPDATE MemberVipExchangeRecords ver SET ver.status = ?1 WHERE ver.id = ?2 AND ver.status = ?3"
)
.
setParameter
(
1
,
false
)
.
setParameter
(
2
,
id
)
.
setParameter
(
3
,
true
)
.
executeUpdate
();
if
(
affect
==
1
)
{
return
Optional
.
of
(
true
);
}
return
Optional
.
empty
();
}
}
\ No newline at end of file
member.impl/src/main/java/com/apobates/forum/member/impl/quartz/PenalizeQuartzJob.java
浏览文件 @
c3897703
...
...
@@ -54,7 +54,7 @@ public class PenalizeQuartzJob implements Job{
penalizeIds
.
add
(
mpr
.
getId
());
memberStatus
.
put
(
mpr
.
getMemberId
(),
mpr
.
getOriginal
());
//回到原来的状态
}
memberPenalizeRecordsDao
.
e
ditStatus
(
penalizeIds
,
false
);
memberPenalizeRecordsDao
.
e
xpired
(
penalizeIds
);
//false
memberDao
.
editMemberStatus
(
memberStatus
);
logger
.
info
(
"[QuartzTask][Member][1]会员惩罚作业结束"
);
}
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/service/MemberPenalizeRecordsServiceImpl.java
浏览文件 @
c3897703
...
...
@@ -37,10 +37,9 @@ public class MemberPenalizeRecordsServiceImpl implements MemberPenalizeRecordsSe
//是否正处于惩罚期
boolean
isDoing
=
DateTimeUtils
.
isFeatureDate
(
obj
.
getRebirthDateTime
());
if
(
isDoing
)
{
throw
new
IllegalStateException
(
"会员惩罚进行中,不可以
删除
"
);
throw
new
IllegalStateException
(
"会员惩罚进行中,不可以
作废
"
);
}
obj
.
setStatus
(
false
);
Optional
<
Boolean
>
result
=
memberPenalizeRecordsDao
.
edit
(
obj
);
Optional
<
Boolean
>
result
=
memberPenalizeRecordsDao
.
expired
(
obj
.
getId
());
//编辑成功 && 惩罚进行时(会员的状态变了)
if
(
result
.
isPresent
()
&&
obj
.
isStatus
())
{
memberDao
.
editMemberStatus
(
obj
.
getMemberId
(),
obj
.
getOriginal
());
...
...
member.impl/src/main/java/com/apobates/forum/member/impl/service/MemberVipExchangeRecordsServiceImpl.java
浏览文件 @
c3897703
package
com.apobates.forum.member.impl.service
;
import
com.apobates.forum.member.dao.MemberDao
;
import
com.apobates.forum.member.dao.MemberVipExchangeRecordsDao
;
import
com.apobates.forum.member.entity.MemberGroupEnum
;
import
com.apobates.forum.member.entity.MemberPenalizeRecords
;
import
com.apobates.forum.member.entity.MemberVipExchangeRecords
;
import
com.apobates.forum.member.service.MemberVipExchangeRecordsService
;
import
com.apobates.forum.utils.DateTimeUtils
;
import
com.apobates.forum.utils.persistence.Page
;
import
java.time.LocalDateTime
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
org.slf4j.Logger
;
...
...
@@ -21,6 +26,8 @@ import org.springframework.stereotype.Service;
public
class
MemberVipExchangeRecordsServiceImpl
implements
MemberVipExchangeRecordsService
{
@Autowired
private
MemberVipExchangeRecordsDao
memberVipExchangeRecordsDao
;
@Autowired
private
MemberDao
memberDao
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
MemberVipExchangeRecordsServiceImpl
.
class
);
@Override
...
...
@@ -42,4 +49,20 @@ public class MemberVipExchangeRecordsServiceImpl implements MemberVipExchangeRec
public
Stream
<
MemberVipExchangeRecords
>
getRecent
(
int
size
)
{
return
memberVipExchangeRecordsDao
.
findAllOfRecent
(
size
);
}
@Override
public
Optional
<
Boolean
>
expired
(
long
id
)
throws
IllegalArgumentException
,
IllegalStateException
{
MemberVipExchangeRecords
obj
=
memberVipExchangeRecordsDao
.
findOne
(
id
).
orElseThrow
(()->
new
IllegalArgumentException
(
"VIP交易记录不存在"
));
//是否正处于惩罚期
boolean
isDoing
=
DateTimeUtils
.
isFeatureDate
(
obj
.
getLapseDateTime
());
if
(
isDoing
)
{
throw
new
IllegalStateException
(
"VIP会员未到期,不可以作废"
);
}
Optional
<
Boolean
>
result
=
memberVipExchangeRecordsDao
.
expired
(
obj
.
getId
());
//编辑成功 && 惩罚进行时(会员的状态变了)
if
(
result
.
isPresent
()
&&
obj
.
isStatus
())
{
memberDao
.
editMemberGroup
(
obj
.
getMemberId
(),
MemberGroupEnum
.
CARD
);
}
return
result
;
}
}
\ No newline at end of file
member/src/main/java/com/apobates/forum/member/dao/MemberPenalizeRecordsDao.java
浏览文件 @
c3897703
package
com.apobates.forum.member.dao
;
import
com.apobates.forum.member.entity.MemberPenalizeRecords
;
import
com.apobates.forum.member.entity.MemberStatusEnum
;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
com.apobates.forum.utils.persistence.PagingAndSortingRepository
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
...
...
@@ -43,23 +45,21 @@ public interface MemberPenalizeRecordsDao extends PagingAndSortingRepository<Mem
Stream
<
MemberPenalizeRecords
>
findAll
(
LocalDateTime
start
,
LocalDateTime
finish
);
/**
*
更新惩罚记录的状态
*
将指定惩罚记录的作废
*
* @param id 惩罚记录ID
* @param status 状态
* @return
*/
Optional
<
Boolean
>
e
ditStatus
(
long
id
,
boolean
status
);
Optional
<
Boolean
>
e
xpired
(
long
id
);
/**
*
更新惩罚记录的状态
*
将指定惩罚记录的作废
*
* @param idList 惩罚记录ID列表
* @param status 状态
* @return
*/
int
e
ditStatus
(
Collection
<
Long
>
idList
,
boolean
status
);
int
e
xpired
(
Collection
<
Long
>
idList
);
/**
* 统计指定会员的惩罚记录
*
...
...
member/src/main/java/com/apobates/forum/member/dao/MemberVipExchangeRecordsDao.java
浏览文件 @
c3897703
...
...
@@ -5,6 +5,8 @@ import com.apobates.forum.utils.persistence.Page;
import
com.apobates.forum.utils.persistence.Pageable
;
import
com.apobates.forum.utils.persistence.PagingAndSortingRepository
;
import
java.time.LocalDateTime
;
import
java.util.Collection
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
/**
...
...
@@ -48,4 +50,20 @@ public interface MemberVipExchangeRecordsDao extends PagingAndSortingRepository<
* @return
*/
Stream
<
MemberVipExchangeRecords
>
findAllByExpire
(
LocalDateTime
lapseDateStart
,
LocalDateTime
lapseDateFinish
);
/**
* 将指定的VIP交易记录作废
*
* @param idList 惩罚记录ID列表
* @return
*/
int
expired
(
Collection
<
Long
>
idList
);
/**
* 将指定的VIP交易记录作废
*
* @param id VIP交易记录ID
* @return
*/
Optional
<
Boolean
>
expired
(
long
id
);
}
\ No newline at end of file
member/src/main/java/com/apobates/forum/member/service/MemberVipExchangeRecordsService.java
浏览文件 @
c3897703
...
...
@@ -4,6 +4,7 @@ import com.apobates.forum.member.entity.MemberVipExchangeRecords;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.Pageable
;
import
java.time.LocalDateTime
;
import
java.util.Optional
;
import
java.util.stream.Stream
;
/**
...
...
@@ -46,4 +47,12 @@ public interface MemberVipExchangeRecordsService {
* @return
*/
Stream
<
MemberVipExchangeRecords
>
getRecent
(
int
size
);
/**
* 手动结束VIP交易记录.必须是交易记录已经到期
*
* @param id VIP交易记录ID
* @return
*/
Optional
<
Boolean
>
expired
(
long
id
)
throws
IllegalArgumentException
,
IllegalStateException
;
}
\ No newline at end of file
thrones.admin/src/main/java/com/apobates/forum/thrones/admin/controller/AdminMemberPenalizeRecordsController.java
浏览文件 @
c3897703
...
...
@@ -114,7 +114,7 @@ public class AdminMemberPenalizeRecordsController {
return
"admin/member_penalize/create"
;
}
//手动结束惩罚
(作业失败)
//手动结束惩罚
@PostMapping
(
path
=
"/expire"
,
produces
=
"application/json;charset=UTF-8"
)
@ResponseBody
public
TipMessage
removePenalizeAction
(
...
...
@@ -124,7 +124,7 @@ public class AdminMemberPenalizeRecordsController {
Model
model
)
{
try
{
if
(
memberPenalizeRecordsService
.
expired
(
id
).
orElse
(
false
))
{
return
TipMessage
.
ofSuccess
(
"惩罚
手动过期成功
"
);
return
TipMessage
.
ofSuccess
(
"惩罚
记录成功结束
"
);
}
}
catch
(
IllegalArgumentException
|
IllegalStateException
e
){
return
TipMessage
.
ofError
(
e
.
getMessage
());
...
...
thrones.admin/src/main/java/com/apobates/forum/thrones/admin/controller/AdminMemberVipExchangeRecordsController.java
浏览文件 @
c3897703
...
...
@@ -15,6 +15,7 @@ import javax.validation.Valid;
import
com.apobates.forum.utils.Commons
;
import
com.apobates.forum.utils.DateTimeUtils
;
import
com.apobates.forum.utils.FrontPageURL
;
import
com.apobates.forum.utils.TipMessage
;
import
com.apobates.forum.utils.persistence.Page
;
import
com.apobates.forum.utils.persistence.PageRequest
;
import
com.apobates.forum.utils.persistence.Pageable
;
...
...
@@ -23,11 +24,8 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.ModelAttribute
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.*
;
/**
*
* @author xiaofanku
...
...
@@ -143,4 +141,21 @@ public class AdminMemberVipExchangeRecordsController {
model
.
addAttribute
(
"pageData"
,
fpbuild
.
toPageData
(
pr
,
rs
.
getTotalElements
()));
return
"admin/member_exchange/query_range"
;
}
//手动作废交易记录
@PostMapping
(
path
=
"/expire"
,
produces
=
"application/json;charset=UTF-8"
)
@ResponseBody
public
TipMessage
recycleExchangeAction
(
@RequestParam
(
"id"
)
long
id
,
MemberSessionBean
mbean
,
HttpServletRequest
request
,
Model
model
)
{
try
{
if
(
memberVipExchangeRecordsService
.
expired
(
id
).
orElse
(
false
))
{
return
TipMessage
.
ofSuccess
(
"交易记录成功作废"
);
}
}
catch
(
IllegalArgumentException
|
IllegalStateException
e
){
return
TipMessage
.
ofError
(
e
.
getMessage
());
}
return
TipMessage
.
ofError
(
"操作失败"
);
}
}
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/index.jsp
浏览文件 @
c3897703
...
...
@@ -96,7 +96,9 @@
<td><forum:date
value=
"
${
exchange
.
lapseDateTime
}
"
/></td>
<td><forum:print
value=
"
${
exchange
.
status
}
"
trueTitle=
"使用"
falseTitle=
"结束"
/></td>
<td>
</td>
<td>
<a
class=
"btn btn-primary action-cmd"
role=
"button"
href=
"javascript:;"
data-handler=
"${ADMIN}/member/exchange/expire"
data-query=
"id:${exchange.id}"
>
手动作废
</a>
</td>
</tr>
</c:forEach>
</tbody>
...
...
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/query_member.jsp
浏览文件 @
c3897703
...
...
@@ -96,7 +96,9 @@
<td><forum:date
value=
"
${
exchange
.
lapseDateTime
}
"
/></td>
<td><forum:print
value=
"
${
exchange
.
status
}
"
trueTitle=
"使用"
falseTitle=
"结束"
/></td>
<td>
</td>
<td>
<a
class=
"btn btn-primary action-cmd"
role=
"button"
href=
"javascript:;"
data-handler=
"${ADMIN}/member/exchange/expire"
data-query=
"id:${exchange.id}"
>
手动作废
</a>
</td>
</tr>
</c:forEach>
</tbody>
...
...
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/member_exchange/query_range.jsp
浏览文件 @
c3897703
...
...
@@ -96,7 +96,9 @@
<td><forum:date
value=
"
${
exchange
.
lapseDateTime
}
"
/></td>
<td><forum:print
value=
"
${
exchange
.
status
}
"
trueTitle=
"使用"
falseTitle=
"结束"
/></td>
<td>
</td>
<td>
<a
class=
"btn btn-primary action-cmd"
role=
"button"
href=
"javascript:;"
data-handler=
"${ADMIN}/member/exchange/expire"
data-query=
"id:${exchange.id}"
>
手动作废
</a>
</td>
</tr>
</c:forEach>
</tbody>
...
...
thrones.admin/src/main/webapp/WEB-INF/layout/page/admin/starter.jsp
浏览文件 @
c3897703
...
...
@@ -10,7 +10,7 @@
<div
class=
"row invoice"
>
<div
class=
"col-sm-12"
>
<div>
<h1>
JForum
<p
class=
"lead"
>
一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目
</p></h1>
<h1>
JForum
2
<p
class=
"lead"
>
一个小论坛, 一个Java单体应用, 一个SSJ项目, 一个模块化项目
</p></h1>
</div>
<div
class=
"row"
>
<div
class=
"col-sm-7"
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录