Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_backend
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_backend
Commits
37047fd3
Commit
37047fd3
authored
Sep 01, 2023
by
shiyu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
生成邀请码
parent
8fe103fd
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
436 additions
and
69 deletions
+436
-69
ch-admin-api/src/main/java/com/wwdz/ch/admin/config/ShiroConfig.java
...i/src/main/java/com/wwdz/ch/admin/config/ShiroConfig.java
+2
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/controller/InvitationCodeController.java
...om/wwdz/ch/admin/controller/InvitationCodeController.java
+27
-6
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/InvitationCodeVo.java
...in/java/com/wwdz/ch/admin/entity/vo/InvitationCodeVo.java
+78
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/InviteRecordVo.java
...main/java/com/wwdz/ch/admin/entity/vo/InviteRecordVo.java
+47
-0
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/InvitationCodeServiceImpl.java
...ava/com/wwdz/ch/admin/impl/InvitationCodeServiceImpl.java
+46
-6
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/InviteRecordServiceImpl.java
.../java/com/wwdz/ch/admin/impl/InviteRecordServiceImpl.java
+20
-34
ch-admin-api/src/main/java/com/wwdz/ch/admin/service/InviteRecordService.java
...n/java/com/wwdz/ch/admin/service/InviteRecordService.java
+3
-13
ch-core/src/main/java/com/wwdz/ch/core/consts/InvitationCodeStateEnum.java
...java/com/wwdz/ch/core/consts/InvitationCodeStateEnum.java
+5
-5
ch-core/src/main/java/com/wwdz/ch/core/type/PageSearchResult.java
...src/main/java/com/wwdz/ch/core/type/PageSearchResult.java
+84
-0
ch-core/src/main/java/com/wwdz/ch/core/util/CacheUtil.java
ch-core/src/main/java/com/wwdz/ch/core/util/CacheUtil.java
+87
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsAdminDao.java
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsAdminDao.java
+3
-0
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
+2
-0
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/InvitationCodeRequestDto.java
.../com/wwdz/ch/db/dto/request/InvitationCodeRequestDto.java
+2
-2
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsAdminDaoImpl.java
...rc/main/java/com/wwdz/ch/db/impl/dts/DtsAdminDaoImpl.java
+6
-0
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
...src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
+5
-0
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/InviteRecordServiceImpl.java
...ain/java/com/wwdz/ch/wx/impl/InviteRecordServiceImpl.java
+17
-3
No files found.
ch-admin-api/src/main/java/com/wwdz/ch/admin/config/ShiroConfig.java
View file @
37047fd3
...
@@ -113,6 +113,8 @@ public class ShiroConfig {
...
@@ -113,6 +113,8 @@ public class ShiroConfig {
filterChainDefinitionMap
.
put
(
"/admin/item/updateUrl"
,
"anon"
);
filterChainDefinitionMap
.
put
(
"/admin/item/updateUrl"
,
"anon"
);
filterChainDefinitionMap
.
put
(
"/admin/item/synToEs"
,
"anon"
);
filterChainDefinitionMap
.
put
(
"/admin/item/synToEs"
,
"anon"
);
filterChainDefinitionMap
.
put
(
"/admin/invitationCode/**"
,
"anon"
);
// filterChainDefinitionMap.put("/admin/**", "anon");
// filterChainDefinitionMap.put("/admin/**", "anon");
filterChainDefinitionMap
.
put
(
"/admin/**"
,
"authc"
);
filterChainDefinitionMap
.
put
(
"/admin/**"
,
"authc"
);
shiroFilterFactoryBean
.
setLoginUrl
(
"/admin/auth/401"
);
shiroFilterFactoryBean
.
setLoginUrl
(
"/admin/auth/401"
);
...
...
ch-admin-api/src/main/java/com/wwdz/ch/admin/controller/InvitationCodeController.java
View file @
37047fd3
...
@@ -4,13 +4,17 @@ package com.wwdz.ch.admin.controller;
...
@@ -4,13 +4,17 @@ package com.wwdz.ch.admin.controller;
import
com.wwdz.ch.admin.annotation.RequiresPermissionsDesc
;
import
com.wwdz.ch.admin.annotation.RequiresPermissionsDesc
;
import
com.wwdz.ch.admin.service.InvitationCodeService
;
import
com.wwdz.ch.admin.service.InvitationCodeService
;
import
com.wwdz.ch.admin.util.AuthSupport
;
import
com.wwdz.ch.admin.util.AuthSupport
;
import
com.wwdz.ch.core.consts.InvitationCodeStateEnum
;
import
com.wwdz.ch.core.consts.ResultCode
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.db.dto.request.CoinRequestDto
;
import
com.wwdz.ch.db.dto.request.InvitationCodeRequestDto
;
import
com.wwdz.ch.db.dto.request.InvitationCodeRequestDto
;
import
com.xxdxxs.service.FormHandler
;
import
com.xxdxxs.utils.JsonUtils
;
import
com.xxdxxs.utils.JsonUtils
;
import
com.xxdxxs.validation.Validator
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -33,6 +37,16 @@ public class InvitationCodeController {
...
@@ -33,6 +37,16 @@ public class InvitationCodeController {
@PostMapping
(
"/create"
)
@PostMapping
(
"/create"
)
public
Result
create
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
create
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->生成邀请码->新增,请求参数:parma:{}"
,
invitationCodeRequestDto
);
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->生成邀请码->新增,请求参数:parma:{}"
,
invitationCodeRequestDto
);
Validator
validator
=
new
Validator
(
FormHandler
.
ofEntity
(
invitationCodeRequestDto
));
validator
.
set
(
"effectiveStartTime"
,
"有效期起始时间"
).
must
().
string
()
.
set
(
"effectiveEndTime"
,
"有效期结束时间"
).
must
().
string
()
.
set
(
"enabledNum"
,
"可使用的人数"
).
must
().
integer
()
.
set
(
"applicant"
,
"申请人"
).
must
().
number
()
.
set
(
"remark"
,
"备注"
).
sometimes
().
string
()
.
end
();
if
(!
validator
.
isValid
())
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
.
getCode
(),
validator
.
getErrorInfo
());
}
Result
result
=
invitationCodeService
.
create
(
invitationCodeRequestDto
);
Result
result
=
invitationCodeService
.
create
(
invitationCodeRequestDto
);
logger
.
info
(
"【请求结束】邀请码管理->生成邀请码->新增:result:{}"
,
JsonUtils
.
from
(
result
));
logger
.
info
(
"【请求结束】邀请码管理->生成邀请码->新增:result:{}"
,
JsonUtils
.
from
(
result
));
return
result
;
return
result
;
...
@@ -43,7 +57,7 @@ public class InvitationCodeController {
...
@@ -43,7 +57,7 @@ public class InvitationCodeController {
@PostMapping
(
"/findList"
)
@PostMapping
(
"/findList"
)
public
Result
findList
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
findList
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->邀请码列表->查询,请求参数:parma:{}"
,
invitationCodeRequestDto
);
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->邀请码列表->查询,请求参数:parma:{}"
,
invitationCodeRequestDto
);
Result
result
=
invitationCodeService
.
find
List
(
invitationCodeRequestDto
);
Result
result
=
invitationCodeService
.
find
ByPage
(
invitationCodeRequestDto
);
logger
.
info
(
"【请求结束】邀请码管理->邀请码列表->查询:result:{}"
,
JsonUtils
.
from
(
result
));
logger
.
info
(
"【请求结束】邀请码管理->邀请码列表->查询:result:{}"
,
JsonUtils
.
from
(
result
));
return
result
;
return
result
;
}
}
...
@@ -52,18 +66,25 @@ public class InvitationCodeController {
...
@@ -52,18 +66,25 @@ public class InvitationCodeController {
@PostMapping
(
"/findDetails"
)
@PostMapping
(
"/findDetails"
)
public
Result
findDetails
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
findDetails
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->邀请码详情->查询,请求参数:parma:{}"
,
invitationCodeRequestDto
);
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->邀请码详情->查询,请求参数:parma:{}"
,
invitationCodeRequestDto
);
Result
result
=
invitationCodeService
.
findList
(
invitationCodeRequestDto
);
if
(
StringUtils
.
isEmpty
(
invitationCodeRequestDto
.
getCode
()))
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
Result
result
=
invitationCodeService
.
findDetails
(
invitationCodeRequestDto
);
logger
.
info
(
"【请求结束】邀请码管理->邀请码详情->查询:result:{}"
,
JsonUtils
.
from
(
result
));
logger
.
info
(
"【请求结束】邀请码管理->邀请码详情->查询:result:{}"
,
JsonUtils
.
from
(
result
));
return
result
;
return
result
;
}
}
@RequiresPermissionsDesc
(
menu
=
{
"邀请码管理"
,
"
邀请码详情
"
},
button
=
"更新"
)
@RequiresPermissionsDesc
(
menu
=
{
"邀请码管理"
,
"
设置失效
"
},
button
=
"更新"
)
@PostMapping
(
"/setInvalid"
)
@PostMapping
(
"/setInvalid"
)
public
Result
setInvalid
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
setInvalid
(
@RequestBody
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->设置无效->更新,请求参数:parma:{}"
,
invitationCodeRequestDto
);
logger
.
info
(
"【请求开始】操作人:["
+
AuthSupport
.
userName
()+
"] 邀请码管理->设置失效->更新,请求参数:parma:{}"
,
invitationCodeRequestDto
);
if
(
StringUtils
.
isEmpty
(
invitationCodeRequestDto
.
getCode
()))
{
return
Result
.
failed
(
ResultCode
.
PARAM_ERROR
);
}
invitationCodeRequestDto
.
setState
(
InvitationCodeStateEnum
.
INVALID
.
getCode
());
Result
result
=
invitationCodeService
.
updateState
(
invitationCodeRequestDto
);
Result
result
=
invitationCodeService
.
updateState
(
invitationCodeRequestDto
);
logger
.
info
(
"【请求结束】邀请码管理->设置
无
效->更新:result:{}"
,
JsonUtils
.
from
(
result
));
logger
.
info
(
"【请求结束】邀请码管理->设置
失
效->更新:result:{}"
,
JsonUtils
.
from
(
result
));
return
result
;
return
result
;
}
}
}
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/InvitationCodeVo.java
0 → 100644
View file @
37047fd3
package
com.wwdz.ch.admin.entity.vo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
InvitationCodeVo
implements
Entity
{
/**
* id
*/
private
Long
id
;
/**
* 邀请码
*/
private
String
code
;
/**
* 有效期起始时间
*/
private
Date
effectiveStartTime
;
/**
* 有效期结束时间
*/
private
Date
effectiveEndTime
;
/**
* 可使用的人数
*/
private
Integer
enabledNum
;
/**
* 申请人
*/
private
Long
applicant
;
/**
* 申请人姓名
*/
private
String
applicantName
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 更新时间
*/
private
Date
updateTime
;
/**
* 创建人
*/
private
Integer
creator
;
/**
* 创建人姓名
*/
private
String
creatorName
;
/**
* 状态
*/
private
Integer
state
;
private
String
stateName
;
/**
* 备注
*/
private
String
remark
;
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/entity/vo/InviteRecordVo.java
0 → 100644
View file @
37047fd3
package
com.wwdz.ch.admin.entity.vo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
InviteRecordVo
implements
Entity
{
private
Integer
id
;
/**
* 受邀人
*/
private
Long
invitee
;
/**
* 受邀人名称
*/
private
String
inviteeName
;
/**
* 邀请人
*/
private
Long
inviter
;
/**
* 邀请人名称
*/
private
String
inviterName
;
/**
* 受邀人手机号
*/
private
String
inviteePhone
;
/**
* 创建时间(使用邀请码的时间)
*/
private
Date
createTime
;
/**
* 邀请码
*/
private
String
invitationCode
;
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/InvitationCodeServiceImpl.java
View file @
37047fd3
package
com.wwdz.ch.admin.impl
;
package
com.wwdz.ch.admin.impl
;
import
com.github.pagehelper.PageInfo
;
import
com.wwdz.ch.admin.entity.vo.InvitationCodeVo
;
import
com.wwdz.ch.admin.entity.vo.InviteRecordVo
;
import
com.wwdz.ch.admin.service.InvitationCodeService
;
import
com.wwdz.ch.admin.service.InvitationCodeService
;
import
com.wwdz.ch.admin.service.InviteRecordService
;
import
com.wwdz.ch.core.consts.InvitationCodeStateEnum
;
import
com.wwdz.ch.core.type.PageSearchResult
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.core.util.CharUtil
;
import
com.wwdz.ch.core.util.CharUtil
;
import
com.wwdz.ch.db.dao.InvitationCodeDao
;
import
com.wwdz.ch.db.dao.InvitationCodeDao
;
import
com.wwdz.ch.db.domain.InvitationCode
;
import
com.wwdz.ch.db.domain.InvitationCode
;
import
com.wwdz.ch.db.dto.request.InvitationCodeRequestDto
;
import
com.wwdz.ch.db.dto.request.InvitationCodeRequestDto
;
import
com.wwdz.ch.db.dto.request.InviteRecordRequestDto
;
import
com.xxdxxs.utils.DateUtils
;
import
com.xxdxxs.utils.EntityMapper
;
import
com.xxdxxs.utils.EntityMapper
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.util.*
;
import
java.util.Date
;
import
java.util.List
;
@Service
@Service
public
class
InvitationCodeServiceImpl
implements
InvitationCodeService
{
public
class
InvitationCodeServiceImpl
implements
InvitationCodeService
{
...
@@ -23,6 +30,11 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
...
@@ -23,6 +30,11 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
@Autowired
@Autowired
InvitationCodeDao
invitationCodeDao
;
InvitationCodeDao
invitationCodeDao
;
@Autowired
InviteRecordService
inviteRecordService
;
@Autowired
CacheUtil
cacheUtil
;
@Override
@Override
public
Result
create
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
create
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
...
@@ -30,6 +42,8 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
...
@@ -30,6 +42,8 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
Date
now
=
new
Date
();
Date
now
=
new
Date
();
InvitationCode
invitationCode
=
new
InvitationCode
();
InvitationCode
invitationCode
=
new
InvitationCode
();
EntityMapper
.
copyAttribute
(
invitationCodeRequestDto
,
invitationCode
);
EntityMapper
.
copyAttribute
(
invitationCodeRequestDto
,
invitationCode
);
invitationCode
.
setEffectiveStartTime
(
DateUtils
.
parseString
(
invitationCodeRequestDto
.
getEffectiveStartTime
()));
invitationCode
.
setEffectiveEndTime
(
DateUtils
.
parseString
(
invitationCodeRequestDto
.
getEffectiveEndTime
()));
invitationCode
.
setCreateTime
(
now
);
invitationCode
.
setCreateTime
(
now
);
invitationCode
.
setUpdateTime
(
now
);
invitationCode
.
setUpdateTime
(
now
);
String
code
=
CharUtil
.
getInvitationCode
(
6
);
String
code
=
CharUtil
.
getInvitationCode
(
6
);
...
@@ -74,20 +88,46 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
...
@@ -74,20 +88,46 @@ public class InvitationCodeServiceImpl implements InvitationCodeService {
@Override
@Override
public
Result
findByPage
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
findByPage
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
return
null
;
try
{
PageInfo
<
InvitationCode
>
pageInfo
=
invitationCodeDao
.
findByPage
(
invitationCodeRequestDto
);
List
<
InvitationCodeVo
>
invitationCodeVoList
=
new
ArrayList
<>();
List
<
InvitationCode
>
invitationCodeList
=
pageInfo
.
getList
();
invitationCodeList
.
forEach
(
invitationCode
->
{
InvitationCodeVo
invitationCodeVo
=
new
InvitationCodeVo
();
EntityMapper
.
copyAttribute
(
invitationCode
,
invitationCodeVo
);
invitationCodeVo
.
setStateName
(
InvitationCodeStateEnum
.
getNameByCode
(
invitationCode
.
getState
()));
invitationCodeVoList
.
add
(
invitationCodeVo
);
});
return
Result
.
success
(
PageSearchResult
.
of
(
pageInfo
,
invitationCodeVoList
));
}
catch
(
Exception
e
)
{
logger
.
error
(
"查询列表出错 : {}"
,
e
);
}
return
Result
.
failed
();
}
}
@Override
@Override
public
Result
findDetails
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
public
Result
findDetails
(
InvitationCodeRequestDto
invitationCodeRequestDto
)
{
try
{
try
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
List
<
InvitationCode
>
list
=
invitationCodeDao
.
findList
(
invitationCodeRequestDto
);
List
<
InvitationCode
>
list
=
invitationCodeDao
.
findList
(
invitationCodeRequestDto
);
if
(
CollectionUtils
.
isEmpty
(
list
))
{
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
Result
.
failed
(
"邀请码不存在"
);
return
Result
.
failed
(
"邀请码不存在"
);
}
}
InvitationCode
invitationCode
=
list
.
get
(
0
);
InvitationCode
invitationCode
=
list
.
get
(
0
);
return
null
;
InvitationCodeVo
invitationCodeVo
=
new
InvitationCodeVo
();
EntityMapper
.
copyAttribute
(
invitationCode
,
invitationCodeVo
);
invitationCodeVo
.
setApplicantName
(
cacheUtil
.
getAppletUserNameById
(
invitationCode
.
getApplicant
()));
invitationCodeVo
.
setCreatorName
(
cacheUtil
.
getSystemUserNameById
(
invitationCodeVo
.
getCreator
()));
invitationCodeVo
.
setStateName
(
InvitationCodeStateEnum
.
getNameByCode
(
invitationCode
.
getState
()));
InviteRecordRequestDto
inviteRecordRequestDto
=
new
InviteRecordRequestDto
();
List
<
InviteRecordVo
>
inviteRecordVoList
=
inviteRecordService
.
findList
(
inviteRecordRequestDto
);
map
.
put
(
"invitationCodeVo"
,
invitationCodeVo
);
map
.
put
(
"record"
,
inviteRecordVoList
);
map
.
put
(
"usedNum"
,
inviteRecordVoList
.
size
());
return
Result
.
success
(
map
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
logger
.
error
(
"查询邀请码明细错误:{}"
,
e
);
}
}
return
Result
.
failed
();
}
}
}
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/impl/InviteRecordServiceImpl.java
View file @
37047fd3
package
com.wwdz.ch.admin.impl
;
package
com.wwdz.ch.admin.impl
;
import
com.wwdz.ch.admin.entity.vo.InviteRecordVo
;
import
com.wwdz.ch.admin.service.InviteRecordService
;
import
com.wwdz.ch.admin.service.InviteRecordService
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.type.Result
;
import
com.wwdz.ch.core.util.CacheUtil
;
import
com.wwdz.ch.db.dao.InvitationCodeDao
;
import
com.wwdz.ch.db.dao.InvitationCodeDao
;
import
com.wwdz.ch.db.dao.InviteRecordDao
;
import
com.wwdz.ch.db.dao.InviteRecordDao
;
import
com.wwdz.ch.db.domain.InvitationCode
;
import
com.wwdz.ch.db.domain.InvitationCode
;
...
@@ -14,6 +16,9 @@ import org.slf4j.LoggerFactory;
...
@@ -14,6 +16,9 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
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.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
...
@@ -26,45 +31,26 @@ public class InviteRecordServiceImpl implements InviteRecordService {
...
@@ -26,45 +31,26 @@ public class InviteRecordServiceImpl implements InviteRecordService {
InviteRecordDao
inviteRecordDao
;
InviteRecordDao
inviteRecordDao
;
@Autowired
@Autowired
InvitationCodeDao
invitationCodeDao
;
CacheUtil
cacheUtil
;
@Override
@Override
public
Result
create
(
InviteRecordRequestDto
dto
)
{
public
List
<
InviteRecordVo
>
findList
(
InviteRecordRequestDto
dto
)
{
try
{
try
{
//查询邀请码信息
List
<
InviteRecordVo
>
inviteRecordVoList
=
new
ArrayList
<>();
InvitationCodeRequestDto
invitationCodeRequestDto
=
new
InvitationCodeRequestDto
();
List
<
InviteRecord
>
inviteRecordList
=
inviteRecordDao
.
findList
(
dto
);
invitationCodeRequestDto
.
setCode
(
dto
.
getInvitationCode
());
inviteRecordList
.
forEach
(
inviteRecord
->
{
List
<
InvitationCode
>
invitationCodeList
=
invitationCodeDao
.
findList
(
invitationCodeRequestDto
);
InviteRecordVo
inviteRecordVo
=
new
InviteRecordVo
();
if
(
CollectionUtils
.
isEmpty
(
invitationCodeList
))
{
EntityMapper
.
copyAttribute
(
inviteRecord
,
inviteRecordVo
);
return
Result
.
failed
(
"邀请码错误"
);
inviteRecordVo
.
setInviteeName
(
cacheUtil
.
getAppletUserNameById
(
inviteRecordVo
.
getInvitee
()));
}
inviteRecordVo
.
setInviterName
(
cacheUtil
.
getAppletUserNameById
(
inviteRecordVo
.
getInviter
()));
InvitationCode
invitationCode
=
invitationCodeList
.
get
(
0
);
inviteRecordVoList
.
add
(
inviteRecordVo
);
});
InviteRecord
inviteRecord
=
new
InviteRecord
();
return
inviteRecordVoList
;
EntityMapper
.
copyAttribute
(
dto
,
inviteRecord
);
inviteRecord
.
setCreateTime
(
new
Date
());
//邀请人
inviteRecord
.
setInviter
(
invitationCode
.
getApplicant
());
inviteRecordDao
.
create
(
inviteRecord
);
return
Result
.
success
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"
邀请码使用失败
:{}"
,
e
);
logger
.
error
(
"
查询邀请码使用记录错误
:{}"
,
e
);
}
}
return
Result
.
failed
(
"使用邀请码失败"
);
return
Collections
.
EMPTY_LIST
;
}
@Override
public
Result
isExisted
(
String
phone
)
{
return
null
;
}
}
@Override
public
Result
findList
(
InviteRecordRequestDto
dto
)
{
return
null
;
}
@Override
public
Result
checkCode
(
InviteRecordRequestDto
dto
)
{
return
null
;
}
}
}
ch-admin-api/src/main/java/com/wwdz/ch/admin/service/InviteRecordService.java
View file @
37047fd3
package
com.wwdz.ch.admin.service
;
package
com.wwdz.ch.admin.service
;
import
com.wwdz.ch.
core.type.Result
;
import
com.wwdz.ch.
admin.entity.vo.InviteRecordVo
;
import
com.wwdz.ch.db.dto.request.InviteRecordRequestDto
;
import
com.wwdz.ch.db.dto.request.InviteRecordRequestDto
;
import
java.util.List
;
public
interface
InviteRecordService
{
public
interface
InviteRecordService
{
Result
create
(
InviteRecordRequestDto
dto
);
List
<
InviteRecordVo
>
findList
(
InviteRecordRequestDto
dto
);
Result
isExisted
(
String
phone
);
Result
findList
(
InviteRecordRequestDto
dto
);
/**
* 校验邀请码
* @param dto
* @return
*/
Result
checkCode
(
InviteRecordRequestDto
dto
);
}
}
ch-core/src/main/java/com/wwdz/ch/core/consts/InvitationCodeStateEnum.java
View file @
37047fd3
...
@@ -2,11 +2,11 @@ package com.wwdz.ch.core.consts;
...
@@ -2,11 +2,11 @@ package com.wwdz.ch.core.consts;
public
enum
InvitationCodeStateEnum
{
public
enum
InvitationCodeStateEnum
{
N
ot_used
(
0
,
"未使用"
),
N
OT_USED
(
0
,
"未使用"
),
part_used
(
1
,
"部分使用"
),
PART_USED
(
1
,
"部分使用"
),
all_used
(
2
,
"全部使用"
),
ALL_USED
(
2
,
"全部使用"
),
expired
(
3
,
"已过期"
),
EXPIRED
(
3
,
"已过期"
),
invalid
(
6
,
"已失效"
),
INVALID
(
6
,
"已失效"
),
;
;
private
int
code
;
private
int
code
;
...
...
ch-core/src/main/java/com/wwdz/ch/core/type/PageSearchResult.java
0 → 100644
View file @
37047fd3
package
com.wwdz.ch.core.type
;
import
com.github.pagehelper.PageInfo
;
import
com.xxdxxs.entity.Entity
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
PageSearchResult
<
T
>
implements
Entity
{
private
Long
total
;
private
Integer
pageSize
;
private
Integer
pageIndex
;
private
List
<
T
>
dataList
;
private
Object
appendObject
;
public
PageSearchResult
(){};
private
PageSearchResult
(
PageInfo
<
T
>
pageInfo
)
{
this
.
total
=
pageInfo
.
getTotal
();
this
.
pageSize
=
pageInfo
.
getPageSize
();
this
.
pageIndex
=
pageInfo
.
getPageNum
();
this
.
dataList
=
pageInfo
.
getList
();
}
private
PageSearchResult
(
PageInfo
pageInfo
,
List
<
T
>
list
)
{
this
.
total
=
pageInfo
.
getTotal
();
this
.
pageSize
=
pageInfo
.
getPageSize
();
this
.
pageIndex
=
pageInfo
.
getPageNum
();
this
.
dataList
=
list
;
}
public
static
<
T
>
PageSearchResult
of
(
PageInfo
pageInfo
)
{
return
new
PageSearchResult
(
pageInfo
);
}
/**
* 只获取pageInfo的分页信息,数据集合经过逻辑处理后生成一个新的list使用此方式创建
* @param pageInfo
* @param list
*/
public
static
<
T
>
PageSearchResult
of
(
PageInfo
pageInfo
,
List
<
T
>
list
)
{
return
new
PageSearchResult
(
pageInfo
,
list
);
}
public
Long
getTotal
()
{
return
total
;
}
public
void
setTotal
(
Long
total
)
{
this
.
total
=
total
;
}
public
Integer
getPageSize
()
{
return
pageSize
;
}
public
void
setPageSize
(
Integer
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
public
Integer
getPageIndex
()
{
return
pageIndex
;
}
public
void
setPageIndex
(
Integer
pageIndex
)
{
this
.
pageIndex
=
pageIndex
;
}
public
List
<
T
>
getDataList
()
{
return
dataList
;
}
public
void
setDataList
(
List
<
T
>
dataList
)
{
this
.
dataList
=
dataList
;
}
}
ch-core/src/main/java/com/wwdz/ch/core/util/CacheUtil.java
0 → 100644
View file @
37047fd3
package
com.wwdz.ch.core.util
;
import
com.github.benmanes.caffeine.cache.AsyncLoadingCache
;
import
com.github.benmanes.caffeine.cache.Caffeine
;
import
com.wwdz.ch.db.dao.dts.DtsAdminDao
;
import
com.wwdz.ch.db.dao.dts.DtsUserDao
;
import
com.wwdz.ch.db.domain.Admin
;
import
com.wwdz.ch.db.domain.User
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
@Component
public
class
CacheUtil
{
@Autowired
DtsAdminDao
dtsAdminDao
;
@Autowired
DtsUserDao
dtsUserDao
;
public
String
getAppletUserNameById
(
long
key
)
{
try
{
return
appletUserCache
.
get
(
key
).
get
(
3
,
TimeUnit
.
SECONDS
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
public
String
getSystemUserNameById
(
int
key
)
{
try
{
return
systemUserCache
.
get
(
key
).
get
(
5
,
TimeUnit
.
SECONDS
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 小程序会员缓存
*/
public
AsyncLoadingCache
<
Long
,
String
>
appletUserCache
=
Caffeine
.
newBuilder
()
.
maximumSize
(
5000
)
.
expireAfterWrite
(
13
,
TimeUnit
.
MINUTES
)
.
buildAsync
(
k
->
getAppletUserList
(
k
));
/**
* 后台用户缓存
*/
public
AsyncLoadingCache
<
Integer
,
String
>
systemUserCache
=
Caffeine
.
newBuilder
()
.
maximumSize
(
500
)
.
expireAfterWrite
(
30
,
TimeUnit
.
MINUTES
)
.
buildAsync
(
k
->
getSystemUserList
(
k
));
/**
* 查询小程序会员
*
* @return
*/
public
String
getAppletUserList
(
long
key
)
{
List
<
User
>
userList
=
dtsUserDao
.
findAll
();
Map
<
Long
,
String
>
map
=
userList
.
stream
().
collect
(
Collectors
.
toMap
(
User:
:
getId
,
User:
:
getNickname
,
(
k1
,
k2
)
->
k2
));
return
map
.
get
(
key
);
}
/**
* 查询后台用户
*
* @return
*/
public
String
getSystemUserList
(
Integer
key
)
{
List
<
Admin
>
adminList
=
dtsAdminDao
.
findAll
();
Map
<
Integer
,
String
>
map
=
adminList
.
stream
().
collect
(
Collectors
.
toMap
(
Admin:
:
getId
,
Admin:
:
getUsername
,
(
k1
,
k2
)
->
k2
));
return
map
.
get
(
key
);
}
}
ch-dao/src/main/java/com/wwdz/ch/db/dao/UserDao.java
View file @
37047fd3
...
@@ -69,4 +69,6 @@ public interface UserDao {
...
@@ -69,4 +69,6 @@ public interface UserDao {
* @return
* @return
*/
*/
boolean
isExistedByMobile
(
String
beforeMobile
,
String
afterMobile
);
boolean
isExistedByMobile
(
String
beforeMobile
,
String
afterMobile
);
}
}
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsAdminDao.java
View file @
37047fd3
...
@@ -5,6 +5,9 @@ import com.wwdz.ch.db.domain.Admin;
...
@@ -5,6 +5,9 @@ import com.wwdz.ch.db.domain.Admin;
import
java.util.List
;
import
java.util.List
;
public
interface
DtsAdminDao
{
public
interface
DtsAdminDao
{
List
<
Admin
>
findAll
();
List
<
Admin
>
findAdmin
(
String
username
);
List
<
Admin
>
findAdmin
(
String
username
);
Admin
findAdmin
(
Integer
id
);
Admin
findAdmin
(
Integer
id
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dao/dts/DtsUserDao.java
View file @
37047fd3
...
@@ -29,6 +29,8 @@ public interface DtsUserDao {
...
@@ -29,6 +29,8 @@ public interface DtsUserDao {
List
<
User
>
queryByOpenid
(
String
openid
);
List
<
User
>
queryByOpenid
(
String
openid
);
List
<
User
>
findAll
();
void
deleteById
(
Long
id
);
void
deleteById
(
Long
id
);
List
<
DayStatis
>
recentCount
(
int
statisDaysRang
);
List
<
DayStatis
>
recentCount
(
int
statisDaysRang
);
...
...
ch-dao/src/main/java/com/wwdz/ch/db/dto/request/InvitationCodeRequestDto.java
View file @
37047fd3
...
@@ -21,12 +21,12 @@ public class InvitationCodeRequestDto extends BaseRequestDto implements Entity {
...
@@ -21,12 +21,12 @@ public class InvitationCodeRequestDto extends BaseRequestDto implements Entity {
/**
/**
* 有效期起始时间
* 有效期起始时间
*/
*/
private
Date
effectiveStartTime
;
private
String
effectiveStartTime
;
/**
/**
* 有效期结束时间
* 有效期结束时间
*/
*/
private
Date
effectiveEndTime
;
private
String
effectiveEndTime
;
/**
/**
* 可使用的人数
* 可使用的人数
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsAdminDaoImpl.java
View file @
37047fd3
...
@@ -19,6 +19,12 @@ public class DtsAdminDaoImpl implements DtsAdminDao {
...
@@ -19,6 +19,12 @@ public class DtsAdminDaoImpl implements DtsAdminDao {
@Resource
@Resource
private
AdminMapper
adminMapper
;
private
AdminMapper
adminMapper
;
@Override
public
List
<
Admin
>
findAll
()
{
AdminExample
example
=
new
AdminExample
();
return
adminMapper
.
selectByExample
(
example
);
}
@Override
@Override
public
List
<
Admin
>
findAdmin
(
String
username
)
{
public
List
<
Admin
>
findAdmin
(
String
username
)
{
AdminExample
example
=
new
AdminExample
();
AdminExample
example
=
new
AdminExample
();
...
...
ch-dao/src/main/java/com/wwdz/ch/db/impl/dts/DtsUserDaoImpl.java
View file @
37047fd3
...
@@ -126,6 +126,11 @@ public class DtsUserDaoImpl implements DtsUserDao {
...
@@ -126,6 +126,11 @@ public class DtsUserDaoImpl implements DtsUserDao {
}
}
@Override
public
List
<
User
>
findAll
()
{
UserExample
example
=
new
UserExample
();
return
userMapper
.
selectByExample
(
example
);
}
@Override
@Override
public
List
<
DayStatis
>
recentCount
(
int
statisDaysRang
)
{
public
List
<
DayStatis
>
recentCount
(
int
statisDaysRang
)
{
...
...
ch-wx-api/src/main/java/com/wwdz/ch/wx/impl/InviteRecordServiceImpl.java
View file @
37047fd3
...
@@ -41,17 +41,21 @@ public class InviteRecordServiceImpl implements InviteRecordService {
...
@@ -41,17 +41,21 @@ public class InviteRecordServiceImpl implements InviteRecordService {
return
Result
.
failed
(
"邀请码错误"
);
return
Result
.
failed
(
"邀请码错误"
);
}
}
InvitationCode
invitationCode
=
invitationCodeList
.
get
(
0
);
InvitationCode
invitationCode
=
invitationCodeList
.
get
(
0
);
if
(
InvitationCodeStateEnum
.
invalid
.
getCode
()
==
invitationCode
.
getState
())
{
if
(
InvitationCodeStateEnum
.
INVALID
.
getCode
()
==
invitationCode
.
getState
())
{
return
Result
.
failed
(
"邀请码已失效"
);
return
Result
.
failed
(
"邀请码已失效"
);
}
}
if
(
InvitationCodeStateEnum
.
expired
.
getCode
()
==
invitationCode
.
getState
())
{
if
(
InvitationCodeStateEnum
.
EXPIRED
.
getCode
()
==
invitationCode
.
getState
())
{
return
Result
.
failed
(
"邀请码已过期"
);
return
Result
.
failed
(
"邀请码已过期"
);
}
}
if
(
InvitationCodeStateEnum
.
ALL_USED
.
getCode
()
==
invitationCode
.
getState
())
{
return
Result
.
failed
(
"邀请码使用人数已达上限"
);
}
Date
effectEndTime
=
invitationCode
.
getEffectiveEndTime
();
Date
effectEndTime
=
invitationCode
.
getEffectiveEndTime
();
Date
now
=
new
Date
();
Date
now
=
new
Date
();
int
comparison
=
effectEndTime
.
compareTo
(
now
);
int
comparison
=
effectEndTime
.
compareTo
(
now
);
if
(
comparison
<=
0
)
{
if
(
comparison
<=
0
)
{
//设置邀请码状态为已过期
invitationCodeDao
.
updateState
(
dto
.
getInvitationCode
(),
InvitationCodeStateEnum
.
EXPIRED
.
getCode
());
return
Result
.
failed
(
"邀请码已过期"
);
return
Result
.
failed
(
"邀请码已过期"
);
}
}
...
@@ -61,6 +65,16 @@ public class InviteRecordServiceImpl implements InviteRecordService {
...
@@ -61,6 +65,16 @@ public class InviteRecordServiceImpl implements InviteRecordService {
//邀请人
//邀请人
inviteRecord
.
setInviter
(
invitationCode
.
getApplicant
());
inviteRecord
.
setInviter
(
invitationCode
.
getApplicant
());
inviteRecordDao
.
create
(
inviteRecord
);
inviteRecordDao
.
create
(
inviteRecord
);
//检查邀请码是否使用人数已满
long
usedNum
=
inviteRecordDao
.
countByCode
(
dto
.
getInvitationCode
());
int
enabledNum
=
invitationCode
.
getEnabledNum
();
if
(
usedNum
>=
enabledNum
)
{
//设置邀请码状态为全部使用
invitationCodeDao
.
updateState
(
dto
.
getInvitationCode
(),
InvitationCodeStateEnum
.
ALL_USED
.
getCode
());
}
else
{
invitationCodeDao
.
updateState
(
dto
.
getInvitationCode
(),
InvitationCodeStateEnum
.
PART_USED
.
getCode
());
}
return
Result
.
success
();
return
Result
.
success
();
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"邀请码使用失败:{}"
,
e
);
logger
.
error
(
"邀请码使用失败:{}"
,
e
);
...
...
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