记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
董敬伟
liquidnet-bus-v1
Commits
d75d7874
Commit
d75d7874
authored
Sep 24, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+会员码管理:批次;
parent
05021eb9
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
409 additions
and
162 deletions
+409
-162
AdamMemberAdminController.java
...b/controller/zhengzai/adam/AdamMemberAdminController.java
+3
-150
AdamMemberCodeAdminController.java
...ntroller/zhengzai/adam/AdamMemberCodeAdminController.java
+199
-0
code_mgt.html
...sources/templates/zhengzai/adam/member/code/code_mgt.html
+147
-0
AdamMemberRightsAdminServiceImpl.java
...i/adam/service/impl/AdamMemberRightsAdminServiceImpl.java
+16
-7
AdamMemberRights.java
...a/com/liquidnet/service/adam/entity/AdamMemberRights.java
+11
-0
db_ln_adam_initialdata.sql
...quidnet-service-adam-impl/docu/db_ln_adam_initialdata.sql
+33
-5
No files found.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/adam/AdamMemberAdminController.java
View file @
d75d7874
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
adam
;
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
adam
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.liquidnet.client.admin.common.annotation.Log
;
import
com.liquidnet.client.admin.common.annotation.Log
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.enums.BusinessType
;
import
com.liquidnet.client.admin.common.enums.BusinessType
;
import
com.liquidnet.client.admin.common.utils.ShiroUtils
;
import
com.liquidnet.client.admin.common.utils.poi.ExcelUtil
;
import
com.liquidnet.client.admin.zhengzai.adam.dto.AdamMemberCodeExcelDto
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService
;
import
com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberBuildParam
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberPriceBuildParam
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberRightsBuildParam
;
import
com.liquidnet.service.adam.dto.admin.*
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo
;
import
com.liquidnet.service.adam.entity.AdamMember
;
import
com.liquidnet.service.adam.entity.AdamMember
;
import
com.liquidnet.service.adam.entity.AdamMemberCode
;
import
com.liquidnet.service.adam.entity.AdamMemberPrice
;
import
com.liquidnet.service.adam.entity.AdamMemberPrice
;
import
com.liquidnet.service.adam.entity.AdamMemberRights
;
import
com.liquidnet.service.adam.entity.AdamMemberRights
;
import
com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam
;
import
com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam
;
...
@@ -41,8 +32,6 @@ import org.springframework.validation.annotation.Validated;
...
@@ -41,8 +32,6 @@ import org.springframework.validation.annotation.Validated;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -60,27 +49,15 @@ public class AdamMemberAdminController extends BaseController {
...
@@ -60,27 +49,15 @@ public class AdamMemberAdminController extends BaseController {
@Autowired
@Autowired
IAdamMemberRightsAdminService
adamMemberRightsAdminService
;
IAdamMemberRightsAdminService
adamMemberRightsAdminService
;
@Autowired
@Autowired
IAdamMemberCodeAdminService
adamMemberCodeAdminService
;
@Autowired
ICandyMgtCouponAdminService
candyMgtCouponAdminService
;
ICandyMgtCouponAdminService
candyMgtCouponAdminService
;
@Autowired
@Autowired
ICandyCouponAdminService
candyCouponAdminService
;
ICandyCouponAdminService
candyCouponAdminService
;
@Autowired
private
RedisUtil
redisUtil
;
@GetMapping
()
@GetMapping
()
public
String
view
()
{
public
String
view
()
{
return
prefix
+
"/member"
;
return
prefix
+
"/member"
;
}
}
@RequiresPermissions
(
"adam:member:view:code"
)
@GetMapping
(
"code/{memberId}"
)
public
String
viewCode
(
@PathVariable
(
"memberId"
)
String
memberId
,
ModelMap
mmap
)
{
mmap
.
put
(
"memberId"
,
memberId
);
return
prefix
+
"/code"
;
}
@RequiresPermissions
(
"adam:member:view:list"
)
@RequiresPermissions
(
"adam:member:view:list"
)
@Log
(
title
=
"会员管理:会员卡:列表"
,
businessType
=
BusinessType
.
LIST
)
@Log
(
title
=
"会员管理:会员卡:列表"
,
businessType
=
BusinessType
.
LIST
)
@PostMapping
(
"list"
)
@PostMapping
(
"list"
)
...
@@ -249,128 +226,4 @@ public class AdamMemberAdminController extends BaseController {
...
@@ -249,128 +226,4 @@ public class AdamMemberAdminController extends BaseController {
return
this
.
toAjax
(
candyMgtCouponAdminService
.
editMgtCouponForMemberRights
(
parameter
));
return
this
.
toAjax
(
candyMgtCouponAdminService
.
editMgtCouponForMemberRights
(
parameter
));
}
}
}
}
@ApiOperation
(
value
=
"会员码:列表"
)
@RequiresPermissions
(
"adam:member:list:code"
)
@Log
(
title
=
"会员管理:会员码:列表"
,
businessType
=
BusinessType
.
LIST
)
@PostMapping
(
"list_code"
)
@ResponseBody
public
TableDataInfo
listCode
(
AdamMemberCodeListParam
parameter
)
{
return
getDataTable
(
codeListQuery
(
parameter
));
}
private
List
<
AdamMemberCode
>
codeListQuery
(
AdamMemberCodeListParam
parameter
)
{
LambdaQueryWrapper
<
AdamMemberCode
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
AdamMemberCode
.
class
).
orderByDesc
(
AdamMemberCode:
:
getCreatedAt
);
queryWrapper
.
eq
(
AdamMemberCode:
:
getMemberId
,
parameter
.
getMemberId
());
queryWrapper
.
eq
(
AdamMemberCode:
:
getType
,
2
);
queryWrapper
.
ne
(
AdamMemberCode:
:
getState
,
2
);
if
(
null
!=
parameter
.
getState
())
{
queryWrapper
.
eq
(
AdamMemberCode:
:
getState
,
parameter
.
getState
());
}
queryWrapper
.
select
(
AdamMemberCode:
:
getCode
,
AdamMemberCode:
:
getState
,
AdamMemberCode:
:
getOperator
,
AdamMemberCode:
:
getCreatedAt
,
AdamMemberCode:
:
getValidity
,
AdamMemberCode:
:
getEffectAt
,
AdamMemberCode:
:
getExpireAt
,
AdamMemberCode:
:
getUseOrderNo
,
AdamMemberCode:
:
getUseUid
,
AdamMemberCode:
:
getUseAt
);
queryWrapper
.
orderByDesc
(
AdamMemberCode:
:
getMemberNo
);
return
adamMemberCodeAdminService
.
list
(
queryWrapper
);
}
@ApiOperation
(
value
=
"会员码:导出"
)
@RequiresPermissions
(
"adam:member:export:code"
)
@Log
(
title
=
"会员管理:会员码:导出"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"export_code"
)
@ResponseBody
public
AjaxResult
exportCode
(
AdamMemberCodeListParam
parameter
)
{
List
<
AdamMemberCode
>
list
=
codeListQuery
(
parameter
);
ExcelUtil
<
AdamMemberCodeExcelDto
>
excelUtil
=
new
ExcelUtil
<>(
AdamMemberCodeExcelDto
.
class
);
List
<
AdamMemberCodeExcelDto
>
excelList
=
new
ArrayList
<>();
list
.
forEach
(
r
->
{
excelList
.
add
(
AdamMemberCodeExcelDto
.
getNew
().
copy
(
r
));
});
return
excelUtil
.
exportExcel
(
excelList
,
"会员码数据"
);
}
@ApiOperation
(
value
=
"会员码:生成"
)
@RequiresPermissions
(
"adam:member:gen:code"
)
@Log
(
title
=
"会员管理:会员码:生成"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
(
"gen_code"
)
@ResponseBody
public
AjaxResult
genCode
(
@Validated
AdamMemberCodeGenParam
parameter
)
{
int
count
=
adamMemberPriceAdminService
.
count
(
Wrappers
.
lambdaQuery
(
AdamMemberPrice
.
class
)
.
eq
(
AdamMemberPrice:
:
getMemberPriceId
,
parameter
.
getMemberPriceId
())
.
eq
(
AdamMemberPrice:
:
getMemberId
,
parameter
.
getMemberId
())
.
eq
(
AdamMemberPrice:
:
getState
,
1
)
);
if
(
count
<=
0
)
{
logger
.
warn
(
"会员卡ID/价格ID无效[{}]"
,
parameter
);
return
this
.
error
(
"会员卡ID/价格ID无效"
);
}
return
this
.
toAjax
(
adamMemberCodeAdminService
.
createGiftCode
(
parameter
));
}
@RequiresPermissions
(
"adam:member:invalid:code"
)
@Log
(
title
=
"会员管理:会员码:失效"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"invalid_code"
)
@ResponseBody
public
AjaxResult
invalid
(
AdamMemberCodeOptParam
optParam
)
{
return
toAjax
(
this
.
invalidRecoverCode
(
optParam
,
4
));
}
/**
* 失效|退回会员兑换码
*
* @param optParam AdamMemberCodeOptParam
* @param state 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
* @return boolean
*/
private
boolean
invalidRecoverCode
(
AdamMemberCodeOptParam
optParam
,
int
state
)
{
String
loginName
=
ShiroUtils
.
getLoginName
();
LocalDateTime
now
=
LocalDateTime
.
now
();
logger
.
info
(
"by:{},optParam:{},state:{}"
,
loginName
,
optParam
,
state
);
int
beforeState
=
state
==
4
?
0
:
(
state
==
5
?
1
:
-
1
);
ArrayList
<
String
>
updateCodeList
=
CollectionUtil
.
arrayListString
();
optParam
.
getCodes
().
forEach
(
r
->
{
String
key
=
AdamRedisConst
.
INFO_MEMBER_CODE
.
concat
(
r
);
AdamMemberCodeVo
vo
=
(
AdamMemberCodeVo
)
redisUtil
.
get
(
key
);
if
(
null
!=
vo
&&
vo
.
getState
()
==
beforeState
)
{
redisUtil
.
del
(
key
);
updateCodeList
.
add
(
vo
.
getCode
());
}
});
if
(!
CollectionUtils
.
isEmpty
(
updateCodeList
))
{
LambdaUpdateWrapper
<
AdamMemberCode
>
memberCodeUpdateWrapper
=
Wrappers
.
lambdaUpdate
(
AdamMemberCode
.
class
);
memberCodeUpdateWrapper
.
eq
(
AdamMemberCode:
:
getMemberId
,
optParam
.
getMemberId
());
memberCodeUpdateWrapper
.
eq
(
AdamMemberCode:
:
getState
,
beforeState
);
memberCodeUpdateWrapper
.
in
(
AdamMemberCode:
:
getCode
,
updateCodeList
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getState
,
state
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getOperator
,
loginName
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getUpdatedAt
,
now
);
return
adamMemberCodeAdminService
.
update
(
memberCodeUpdateWrapper
);
}
return
false
;
}
@RequiresPermissions
(
"adam:member:recover:code"
)
@Log
(
title
=
"会员管理:会员码:退回"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"recover_code"
)
@ResponseBody
public
AjaxResult
recover
(
AdamMemberCodeOptParam
optParam
)
{
return
toAjax
(
this
.
invalidRecoverCode
(
optParam
,
5
));
}
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/adam/AdamMemberCodeAdminController.java
0 → 100644
View file @
d75d7874
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
adam
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.liquidnet.client.admin.common.annotation.Log
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.enums.BusinessType
;
import
com.liquidnet.client.admin.common.utils.ShiroUtils
;
import
com.liquidnet.client.admin.common.utils.poi.ExcelUtil
;
import
com.liquidnet.client.admin.zhengzai.adam.dto.AdamMemberCodeExcelDto
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberCodeAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberPriceAdminService
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.service.adam.constant.AdamRedisConst
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberCodeGenParam
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberCodeListParam
;
import
com.liquidnet.service.adam.dto.admin.AdamMemberCodeOptParam
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberCodeVo
;
import
com.liquidnet.service.adam.entity.AdamMemberCode
;
import
com.liquidnet.service.adam.entity.AdamMemberPrice
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.ModelMap
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.List
;
@Api
(
tags
=
"会员码管理"
)
@Controller
@RequestMapping
(
"adam/mcode"
)
public
class
AdamMemberCodeAdminController
extends
BaseController
{
private
final
String
prefix
=
"zhengzai/adam/member/code"
;
@Autowired
IAdamMemberCodeAdminService
adamMemberCodeAdminService
;
@Autowired
IAdamMemberPriceAdminService
adamMemberPriceAdminService
;
@Autowired
RedisUtil
redisUtil
;
@GetMapping
(
"code/mgt"
)
public
String
viewCodeMgt
(
@RequestParam
String
memberId
,
ModelMap
mmap
)
{
mmap
.
put
(
"memberId"
,
memberId
);
return
prefix
+
"/code_mgt"
;
}
@ApiOperation
(
value
=
"会员码:管理"
)
@RequiresPermissions
(
"adam:member:code:mgt:list"
)
@Log
(
title
=
"会员管理:会员码:管理"
,
businessType
=
BusinessType
.
LIST
)
@PostMapping
(
"code/mgt/list"
)
@ResponseBody
public
TableDataInfo
listCodeMgt
(
@RequestParam
String
memberId
)
{
// TODO: 2021/9/23 码生成记录
return
getDataTable
(
null
);
}
@GetMapping
(
"code/view"
)
public
String
viewCode
(
@RequestParam
String
memberId
,
@RequestParam
String
batchNo
,
ModelMap
mmap
)
{
mmap
.
put
(
"memberId"
,
memberId
);
mmap
.
put
(
"batchNo"
,
batchNo
);
return
prefix
+
"/code"
;
}
@ApiOperation
(
value
=
"会员码:列表"
)
@RequiresPermissions
(
"adam:member:code:list"
)
@Log
(
title
=
"会员管理:会员码:列表"
,
businessType
=
BusinessType
.
LIST
)
@PostMapping
(
"code/list"
)
@ResponseBody
public
TableDataInfo
listCode
(
AdamMemberCodeListParam
parameter
)
{
return
getDataTable
(
codeListQuery
(
parameter
));
}
private
List
<
AdamMemberCode
>
codeListQuery
(
AdamMemberCodeListParam
parameter
)
{
LambdaQueryWrapper
<
AdamMemberCode
>
queryWrapper
=
Wrappers
.
lambdaQuery
(
AdamMemberCode
.
class
).
orderByDesc
(
AdamMemberCode:
:
getCreatedAt
);
queryWrapper
.
eq
(
AdamMemberCode:
:
getMemberId
,
parameter
.
getMemberId
());
queryWrapper
.
eq
(
AdamMemberCode:
:
getType
,
2
);
queryWrapper
.
ne
(
AdamMemberCode:
:
getState
,
2
);
if
(
null
!=
parameter
.
getState
())
{
queryWrapper
.
eq
(
AdamMemberCode:
:
getState
,
parameter
.
getState
());
}
queryWrapper
.
select
(
AdamMemberCode:
:
getCode
,
AdamMemberCode:
:
getState
,
AdamMemberCode:
:
getOperator
,
AdamMemberCode:
:
getCreatedAt
,
AdamMemberCode:
:
getValidity
,
AdamMemberCode:
:
getEffectAt
,
AdamMemberCode:
:
getExpireAt
,
AdamMemberCode:
:
getUseOrderNo
,
AdamMemberCode:
:
getUseUid
,
AdamMemberCode:
:
getUseAt
);
queryWrapper
.
orderByDesc
(
AdamMemberCode:
:
getMemberNo
);
return
adamMemberCodeAdminService
.
list
(
queryWrapper
);
}
@ApiOperation
(
value
=
"会员码:导出"
)
@RequiresPermissions
(
"adam:member:code:export"
)
@Log
(
title
=
"会员管理:会员码:导出"
,
businessType
=
BusinessType
.
EXPORT
)
@PostMapping
(
"code/export"
)
@ResponseBody
public
AjaxResult
exportCode
(
AdamMemberCodeListParam
parameter
)
{
List
<
AdamMemberCode
>
list
=
codeListQuery
(
parameter
);
ExcelUtil
<
AdamMemberCodeExcelDto
>
excelUtil
=
new
ExcelUtil
<>(
AdamMemberCodeExcelDto
.
class
);
List
<
AdamMemberCodeExcelDto
>
excelList
=
new
ArrayList
<>();
list
.
forEach
(
r
->
{
excelList
.
add
(
AdamMemberCodeExcelDto
.
getNew
().
copy
(
r
));
});
return
excelUtil
.
exportExcel
(
excelList
,
"会员码数据"
);
}
@ApiOperation
(
value
=
"会员码:生成"
)
@RequiresPermissions
(
"adam:member:code:gen"
)
@Log
(
title
=
"会员管理:会员码:生成"
,
businessType
=
BusinessType
.
INSERT
)
@PostMapping
(
"code/gen"
)
@ResponseBody
public
AjaxResult
genCode
(
@Validated
AdamMemberCodeGenParam
parameter
)
{
int
count
=
adamMemberPriceAdminService
.
count
(
Wrappers
.
lambdaQuery
(
AdamMemberPrice
.
class
)
.
eq
(
AdamMemberPrice:
:
getMemberPriceId
,
parameter
.
getMemberPriceId
())
.
eq
(
AdamMemberPrice:
:
getMemberId
,
parameter
.
getMemberId
())
.
eq
(
AdamMemberPrice:
:
getState
,
1
)
);
if
(
count
<=
0
)
{
logger
.
warn
(
"会员卡ID/价格ID无效[{}]"
,
parameter
);
return
this
.
error
(
"会员卡ID/价格ID无效"
);
}
return
this
.
toAjax
(
adamMemberCodeAdminService
.
createGiftCode
(
parameter
));
}
@RequiresPermissions
(
"adam:member:code:invalid"
)
@Log
(
title
=
"会员管理:会员码:失效"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"invalid_code"
)
@ResponseBody
public
AjaxResult
invalid
(
AdamMemberCodeOptParam
optParam
)
{
return
toAjax
(
this
.
invalidRecoverCode
(
optParam
,
4
));
}
/**
* 失效|退回会员兑换码
*
* @param optParam AdamMemberCodeOptParam
* @param state 状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]
* @return boolean
*/
private
boolean
invalidRecoverCode
(
AdamMemberCodeOptParam
optParam
,
int
state
)
{
String
loginName
=
ShiroUtils
.
getLoginName
();
LocalDateTime
now
=
LocalDateTime
.
now
();
logger
.
info
(
"by:{},optParam:{},state:{}"
,
loginName
,
optParam
,
state
);
int
beforeState
=
state
==
4
?
0
:
(
state
==
5
?
1
:
-
1
);
ArrayList
<
String
>
updateCodeList
=
CollectionUtil
.
arrayListString
();
optParam
.
getCodes
().
forEach
(
r
->
{
String
key
=
AdamRedisConst
.
INFO_MEMBER_CODE
.
concat
(
r
);
AdamMemberCodeVo
vo
=
(
AdamMemberCodeVo
)
redisUtil
.
get
(
key
);
if
(
null
!=
vo
&&
vo
.
getState
()
==
beforeState
)
{
redisUtil
.
del
(
key
);
updateCodeList
.
add
(
vo
.
getCode
());
}
});
if
(!
CollectionUtils
.
isEmpty
(
updateCodeList
))
{
LambdaUpdateWrapper
<
AdamMemberCode
>
memberCodeUpdateWrapper
=
Wrappers
.
lambdaUpdate
(
AdamMemberCode
.
class
);
memberCodeUpdateWrapper
.
eq
(
AdamMemberCode:
:
getMemberId
,
optParam
.
getMemberId
());
memberCodeUpdateWrapper
.
eq
(
AdamMemberCode:
:
getState
,
beforeState
);
memberCodeUpdateWrapper
.
in
(
AdamMemberCode:
:
getCode
,
updateCodeList
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getState
,
state
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getOperator
,
loginName
);
memberCodeUpdateWrapper
.
set
(
AdamMemberCode:
:
getUpdatedAt
,
now
);
return
adamMemberCodeAdminService
.
update
(
memberCodeUpdateWrapper
);
}
return
false
;
}
@RequiresPermissions
(
"adam:member:code:recover"
)
@Log
(
title
=
"会员管理:会员码:退回"
,
businessType
=
BusinessType
.
UPDATE
)
@PostMapping
(
"recover_code"
)
@ResponseBody
public
AjaxResult
recover
(
AdamMemberCodeOptParam
optParam
)
{
return
toAjax
(
this
.
invalidRecoverCode
(
optParam
,
5
));
}
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/adam/member/code/code_mgt.html
0 → 100644
View file @
d75d7874
<!DOCTYPE html>
<html
lang=
"zh"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<head>
<th:block
th:include=
"include :: header('会员码管理')"
/>
<th:block
th:include=
"include :: select2-css"
/>
</head>
<body
class=
"gray-bg"
>
<div
class=
"container-div"
>
<div
class=
"row"
>
<div
class=
"col-sm-12 search-collapse"
>
<form
id=
"data-form"
>
<div
class=
"select-list"
>
<ul>
<input
type=
"text"
name=
"memberId"
hidden=
"hidden"
th:value=
"${memberId}"
readonly
/>
<li>
状态:
<select
name=
"state"
th:with=
"type=${@dict.getType('zhengzai_coupon_code_state')}"
>
<option
value=
""
>
所有
</option>
<option
th:each=
"dict : ${type}"
th:text=
"${dict.dictLabel}"
th:value=
"${dict.dictValue}"
></option>
</select>
</li>
<li>
<a
class=
"btn btn-primary btn-rounded btn-sm"
onclick=
"$.table.search()"
><i
class=
"fa fa-search"
></i>
搜索
</a>
<a
class=
"btn btn-warning btn-rounded btn-sm"
onclick=
"resetPre()"
><i
class=
"fa fa-refresh"
></i>
重置
</a>
</li>
</ul>
</div>
</form>
</div>
<div
class=
"btn-group-sm"
id=
"toolbar"
role=
"group"
>
<a
class=
"btn btn-warning"
onclick=
"$.table.exportExcel()"
shiro:hasPermission=
"adam:member:export:code"
>
<i
class=
"fa fa-download"
></i>
导出
</a>
<a
class=
"btn btn-primary multiple disabled"
onclick=
"invalidHandler()"
shiro:hasPermission=
"adam:member:invalid:code"
>
<i
class=
"fa fa-edit"
></i>
批量失效
</a>
<!-- <a class="btn btn-danger multiple disabled" onclick="recoverHandler()" shiro:hasPermission="adam:member:recover:code">-->
<!-- <i class="fa fa-remove"></i> 批量退回-->
<!-- </a>-->
</div>
<div
class=
"col-sm-12 select-table table-striped"
>
<table
id=
"bootstrap-table"
></table>
</div>
</div>
</div>
<th:block
th:include=
"include :: footer"
/>
<th:block
th:include=
"include :: select2-js"
/>
<script
th:inline=
"javascript"
>
var
invalidFlag
=
[[
$
{@
permission
.
hasPermi
(
'adam:member:invalid:code'
)}]];
var
recoverFlag
=
[[
$
{@
permission
.
hasPermi
(
'adam:member:recover:code'
)}]];
var
datas
=
[[
$
{@
dict
.
getType
(
'zhengzai_coupon_code_state'
)}]];
// 样例:[{"dictLabel":"未支付","dictValue":"0"},{"dictLabel":"已支付","dictValue":"1"},{"dictLabel":"已关闭","dictValue":"2"}]
var
memberId
=
[[
$
{
memberId
}]];
var
prefix
=
ctx
+
"adam/member"
;
$
(
function
()
{
var
options
=
{
url
:
prefix
+
"/list_code"
,
exportUrl
:
prefix
+
"/export_code"
,
detailUrl
:
ctx
+
"adam/order/orderList/detail/{id}"
,
sortName
:
"code"
,
sortOrder
:
"asc"
,
modalName
:
"会员码"
,
columns
:
[{
checkbox
:
true
},
{
field
:
'code'
,
title
:
'会员码'
},
{
field
:
'expireAt'
,
title
:
'到期时间'
},
{
field
:
'useAt'
,
title
:
'使用时间'
},
{
field
:
'useOrderNo'
,
title
:
'兑换订单号'
,
formatter
:
function
(
value
,
row
,
index
)
{
var
actions
=
[];
if
(
$
.
common
.
isEmpty
(
value
))
{
actions
.
push
(
'<a href="javascript:void(0)">-</a>'
);
}
else
{
actions
.
push
(
'<a href="javascript:void(0)" onclick="$.operate.detailTab(
\'
'
+
value
+
'
\'
)">'
+
value
+
'</a>'
);
}
return
actions
.
join
(
''
);
}
},
{
field
:
'state'
,
title
:
'状态'
,
align
:
'center'
,
formatter
:
function
(
value
,
row
,
index
)
{
return
$
.
table
.
selectDictLabel
(
datas
,
value
);
}
},
{
title
:
'操作'
,
align
:
'center'
,
formatter
:
function
(
value
,
row
,
index
)
{
var
actions
=
[];
if
(
row
.
state
===
0
)
{
actions
.
push
(
'<a class="btn btn-primary btn-xs '
+
(
invalidFlag
&&
row
.
state
===
0
)
+
'" href="javascript:void(0)" onclick="invalidHandler(
\'
'
+
row
.
code
+
'
\'
)"><i class="fa fa-edit"></i>失效</a> '
);
}
else
if
(
row
.
state
===
1
)
{
// actions.push('
<
a
class
=
"btn btn-danger btn-xs ' + (recoverFlag && row.state==0) + '"
href
=
"javascript:void(0)"
onclick
=
"recoverHandler(
\
'' + row.code + '
\
')"
><
i
class
=
"fa fa-remove"
><
/i>退回</
a
>
');
}
return actions.join('');
}
}]
};
$.table.init(options);
});
function resetPre() {
$.form.reset();
}
function invalidHandler(code) {
let invalidCodeUrl = prefix + '
/
invalid_code
';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(invalidCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(invalidCodeUrl, '
失效
', data);
}
}
function recoverHandler(code) {
let recoverCodeUrl = prefix + '
/
recover_code
';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(recoverCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(recoverCodeUrl, '
失效
', data);
}
}
</script>
</body>
</html>
\ No newline at end of file
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/adam/service/impl/AdamMemberRightsAdminServiceImpl.java
View file @
d75d7874
...
@@ -3,6 +3,7 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl;
...
@@ -3,6 +3,7 @@ package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.client.admin.common.utils.ShiroUtils
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService
;
import
com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberRightsAdminService
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
...
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -16,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.IntStream
;
import
java.util.stream.IntStream
;
...
@@ -29,6 +31,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
...
@@ -29,6 +31,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
@Override
@Override
public
boolean
edit
(
AdamMemberRightsBuildParam
param
)
{
public
boolean
edit
(
AdamMemberRightsBuildParam
param
)
{
String
loginName
=
ShiroUtils
.
getLoginName
();
LocalDateTime
now
=
LocalDateTime
.
now
();
String
mrightsId
=
param
.
getMrightsId
();
String
mrightsId
=
param
.
getMrightsId
();
boolean
saveOrUpadateRst
,
isAddFlag
=
StringUtils
.
isEmpty
(
mrightsId
);
boolean
saveOrUpadateRst
,
isAddFlag
=
StringUtils
.
isEmpty
(
mrightsId
);
...
@@ -44,6 +48,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
...
@@ -44,6 +48,8 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
saveOrUpdateInfo
.
setLabel
(
param
.
getLabel
());
saveOrUpdateInfo
.
setLabel
(
param
.
getLabel
());
saveOrUpdateInfo
.
setCover
(
param
.
getCover
());
saveOrUpdateInfo
.
setCover
(
param
.
getCover
());
saveOrUpdateInfo
.
setDetail
(
param
.
getDetail
());
saveOrUpdateInfo
.
setDetail
(
param
.
getDetail
());
saveOrUpdateInfo
.
setOperator
(
loginName
);
saveOrUpdateInfo
.
setCreatedAt
(
now
);
saveOrUpadateRst
=
adamMemberRightsMapper
.
insert
(
saveOrUpdateInfo
)
>
0
;
saveOrUpadateRst
=
adamMemberRightsMapper
.
insert
(
saveOrUpdateInfo
)
>
0
;
}
else
{
}
else
{
...
@@ -52,12 +58,16 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
...
@@ -52,12 +58,16 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
.
eq
(
AdamMemberRights:
:
getMrightsId
,
param
.
getMrightsId
());
.
eq
(
AdamMemberRights:
:
getMrightsId
,
param
.
getMrightsId
());
saveOrUpdateInfo
.
setState
(
param
.
getState
());
saveOrUpdateInfo
.
setState
(
param
.
getState
());
saveOrUpdateInfo
.
setSeqNo
(
param
.
getSeqNo
());
saveOrUpdateInfo
.
setOperator
(
loginName
);
saveOrUpdateInfo
.
setTitle
(
param
.
getTitle
());
saveOrUpdateInfo
.
setUpdatedAt
(
now
);
saveOrUpdateInfo
.
setSubTitle
(
param
.
getSubTitle
());
if
(
param
.
getState
()
!=
2
)
{
saveOrUpdateInfo
.
setLabel
(
param
.
getLabel
());
saveOrUpdateInfo
.
setSeqNo
(
param
.
getSeqNo
());
saveOrUpdateInfo
.
setCover
(
param
.
getCover
());
saveOrUpdateInfo
.
setTitle
(
param
.
getTitle
());
saveOrUpdateInfo
.
setDetail
(
param
.
getDetail
());
saveOrUpdateInfo
.
setSubTitle
(
param
.
getSubTitle
());
saveOrUpdateInfo
.
setLabel
(
param
.
getLabel
());
saveOrUpdateInfo
.
setCover
(
param
.
getCover
());
saveOrUpdateInfo
.
setDetail
(
param
.
getDetail
());
}
saveOrUpadateRst
=
adamMemberRightsMapper
.
update
(
saveOrUpdateInfo
,
updateWrapper
)
>
0
;
saveOrUpadateRst
=
adamMemberRightsMapper
.
update
(
saveOrUpdateInfo
,
updateWrapper
)
>
0
;
}
}
...
@@ -98,7 +108,6 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
...
@@ -98,7 +108,6 @@ public class AdamMemberRightsAdminServiceImpl extends ServiceImpl<AdamMemberRigh
redisUtil
.
set
(
AdamRedisConst
.
INFO_MEMBER_RIGHTS
.
concat
(
param
.
getMemberId
()),
vos
);
redisUtil
.
set
(
AdamRedisConst
.
INFO_MEMBER_RIGHTS
.
concat
(
param
.
getMemberId
()),
vos
);
}
}
return
saveOrUpadateRst
;
return
saveOrUpadateRst
;
}
}
}
}
liquidnet-bus-do/liquidnet-service-adam-do/src/main/java/com/liquidnet/service/adam/entity/AdamMemberRights.java
View file @
d75d7874
...
@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.entity;
...
@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.entity;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.EqualsAndHashCode
;
...
@@ -65,6 +67,15 @@ public class AdamMemberRights implements Serializable {
...
@@ -65,6 +67,15 @@ public class AdamMemberRights implements Serializable {
*/
*/
private
String
detail
;
private
String
detail
;
/**
* 操作人
*/
private
String
operator
;
private
LocalDateTime
createdAt
;
private
LocalDateTime
updatedAt
;
private
String
comment
;
private
String
comment
;
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/docu/db_ln_adam_initialdata.sql
View file @
d75d7874
...
@@ -133,7 +133,7 @@ create table adam_addresses
...
@@ -133,7 +133,7 @@ create table adam_addresses
province
varchar
(
60
)
not
null
comment
'省份'
,
province
varchar
(
60
)
not
null
comment
'省份'
,
city
varchar
(
60
)
not
null
comment
'城市'
,
city
varchar
(
60
)
not
null
comment
'城市'
,
county
varchar
(
60
)
not
null
comment
'区县'
,
county
varchar
(
60
)
not
null
comment
'区县'
,
address
text
not
null
comment
'详细地址'
,
address
text
not
null
comment
'详细地址'
,
is_default
boolean
not
null
default
false
comment
'是否为默认:0-否,1-是,第一个默认1'
,
is_default
boolean
not
null
default
false
comment
'是否为默认:0-否,1-是,第一个默认1'
,
state
tinyint
not
null
comment
'状态:0-INIT,1-NORMAL,2-INVALID'
,
state
tinyint
not
null
comment
'状态:0-INIT,1-NORMAL,2-INVALID'
,
created_at
datetime
(
3
)
not
null
,
created_at
datetime
(
3
)
not
null
,
...
@@ -356,7 +356,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特
...
@@ -356,7 +356,7 @@ alter table adam_member_price add price_special decimal(8, 2) null comment '特
#
会员码表调整
#
会员码表调整
alter
table
adam_member_code
modify
state
tinyint
null
comment
'状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]'
;
alter
table
adam_member_code
modify
state
tinyint
null
comment
'状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]'
;
create
index
idx_amember_code_id
on
adam_member_code
(
code
);
create
index
idx_amember_code_id
on
adam_member_code
(
code
);
alter
table
adam_member_code
add
validity
tiny
int
null
comment
'有效期(单位天)'
after
state
;
alter
table
adam_member_code
add
validity
int
null
comment
'有效期(单位天)'
after
state
;
alter
table
adam_member_code
add
effect_at
datetime
(
3
)
null
comment
'生效时间'
after
validity
;
alter
table
adam_member_code
add
effect_at
datetime
(
3
)
null
comment
'生效时间'
after
validity
;
alter
table
adam_member_code
add
expire_at
datetime
(
3
)
null
comment
'过期时间'
after
effect_at
;
alter
table
adam_member_code
add
expire_at
datetime
(
3
)
null
comment
'过期时间'
after
effect_at
;
alter
table
adam_member_code
add
operator
varchar
(
64
)
null
comment
'type=2时记录创建人'
after
expire_at
;
alter
table
adam_member_code
add
operator
varchar
(
64
)
null
comment
'type=2时记录创建人'
after
expire_at
;
...
@@ -409,6 +409,11 @@ create table adam_member_rights
...
@@ -409,6 +409,11 @@ create table adam_member_rights
label
varchar
(
50
)
comment
'标注'
,
label
varchar
(
50
)
comment
'标注'
,
cover
varchar
(
255
)
comment
'图片标识'
,
cover
varchar
(
255
)
comment
'图片标识'
,
detail
text
comment
'详情内容'
,
detail
text
comment
'详情内容'
,
operator
varchar
(
64
)
comment
'操作人'
,
created_at
datetime
(
3
)
not
null
,
updated_at
datetime
(
3
),
comment
varchar
(
255
)
comment
varchar
(
255
)
)
engine
=
InnoDB
comment
'会员权益配置'
;
)
engine
=
InnoDB
comment
'会员权益配置'
;
create
unique
index
uidx_adam_member_rights_id
on
adam_member_rights
(
mrights_id
);
create
unique
index
uidx_adam_member_rights_id
on
adam_member_rights
(
mrights_id
);
...
@@ -424,11 +429,34 @@ create table adam_user_busi_acct
...
@@ -424,11 +429,34 @@ create table adam_user_busi_acct
work
varchar
(
64
)
comment
'业务服务模块'
,
work
varchar
(
64
)
comment
'业务服务模块'
,
ppwd
varchar
(
64
)
comment
'业务服务密码'
,
ppwd
varchar
(
64
)
comment
'业务服务密码'
,
state
tinyint
comment
'1-NORMAL,2-INVALID'
,
state
tinyint
comment
'1-NORMAL,2-INVALID'
,
created_at
datetime
not
null
,
created_at
datetime
(
3
)
not
null
,
updated_at
datetime
,
updated_at
datetime
(
3
)
,
comment
text
comment
text
)
engine
=
InnoDB
comment
'用户业务服务账号表'
;
)
engine
=
InnoDB
comment
'用户业务服务账号表'
;
create
index
idx_adam_user_busi_acct_uid
on
adam_user_busi_acct
(
uid
);
create
index
idx_adam_user_busi_acct_uid
on
adam_user_busi_acct
(
uid
);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------|20210924会员码管理
drop
table
if
exists
adam_member_code_batch
;
create
table
adam_member_code_batch
(
mid
bigint
unsigned
auto_increment
primary
key
,
batch_no
varchar
(
64
)
not
null
comment
'会员码批次号'
,
member_id
varchar
(
64
)
not
null
comment
'~`adam_member.member_id`'
,
member_price_id
varchar
(
64
)
not
null
comment
'~`adam_member_price.member_price_id`'
,
member_name
varchar
(
80
)
comment
'会员卡名称~`adam_member.name`'
,
member_combo
varchar
(
80
)
comment
'套餐包名称'
,
gen_num
int
comment
'生成数量'
,
use_num
int
comment
'使用数量'
,
`describe`
varchar
(
64
)
comment
'描述'
,
validity
int
comment
'有效期(单位天)'
,
effect_at
datetime
(
3
)
null
comment
'生效时间'
,
expire_at
datetime
(
3
)
null
comment
'失效时间'
,
operator
varchar
(
64
)
comment
'操作人'
,
created_at
datetime
(
3
)
not
null
,
updated_at
datetime
(
3
),
comment
varchar
(
255
)
)
engine
=
InnoDB
comment
'会员码批次记录'
;
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
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