Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张云鹏
/
uc-engine
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
61a8e0b2
...
61a8e0b26c45e0228bb442538ec3806900d3e915
authored
2021-11-19 17:18:05 +0800
by
xianghan@topdraw.cn
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
演示前最后版本修改
1 parent
2cf78f54
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
535 additions
and
133 deletions
document/sql/structure/update.sql
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/domain/MemberGroup.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/repository/MemberGroupRepository.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/rest/MemberGroupController.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/MemberGroupService.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/dto/MemberGroupDTO.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/dto/MemberGroupQueryCriteria.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/impl/MemberGroupServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/mapper/MemberGroupMapper.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/PointsOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskOperationServiceImpl.java
member-service-impl/src/main/java/com/topdraw/util/UcStringUtils.java
member-service-impl/src/main/resources/config/application-prod.yml
member-service-impl/src/main/resources/config/application.yml
member-service-impl/src/test/java/com/topdraw/code/GeneratorCode.java
member-service-impl/src/test/java/com/topdraw/test/business/basicdata/task/TaskServiceTest.java
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/PointsOperationControllerTest.java
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/TaskOperationControllerTest.java
member-service-impl/src/test/java/com/topdraw/test/business/process/service/PointsOperationServiceTest.java
document/sql/structure/update.sql
0 → 100644
View file @
61a8e0b
RENAME
TABLE
tj_user_0819
.
uc_user__group
TO
tj_user_0819
.
uc_member_group
;
ALTER
TABLE
tj_user_0819
.
uc_member_group
ADD
member_id
varchar
(
100
)
NULL
COMMENT
'会员id'
;
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/domain/MemberGroup.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
domain
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
javax.persistence.*
;
import
org.springframework.data.annotation.CreatedDate
;
import
org.springframework.data.annotation.LastModifiedDate
;
import
org.springframework.data.jpa.domain.support.AuditingEntityListener
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Entity
@Data
@EntityListeners
(
AuditingEntityListener
.
class
)
@Accessors
(
chain
=
true
)
@Table
(
name
=
"uc_member_group"
)
public
class
MemberGroup
implements
Serializable
{
// ID ID
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
@Column
(
name
=
"id"
)
private
Long
id
;
// 分组ID
@Column
(
name
=
"group_id"
)
private
Long
groupId
;
// 会员ID
@Column
(
name
=
"member_id"
)
private
Long
memberId
;
// 运营商平台账号
@Column
(
name
=
"platform_account"
)
private
String
platformAccount
;
// 手机号
@Column
(
name
=
"cellphone"
)
private
String
cellphone
;
// 设备
@Column
(
name
=
"stb_id"
)
private
String
stbId
;
// 有线MAC地址
@Column
(
name
=
"eth_mac"
)
private
String
ethMac
;
// 无线MAC地址
@Column
(
name
=
"wifi_mac"
)
private
String
wifiMac
;
// 描述
@Column
(
name
=
"description"
)
private
String
description
;
// 创建者
@Column
(
name
=
"create_by"
)
private
String
createBy
;
// 创建时间
@CreatedDate
@Column
(
name
=
"create_time"
)
private
Timestamp
createTime
;
// 更新者
@Column
(
name
=
"update_by"
)
private
String
updateBy
;
// 更新时间
@LastModifiedDate
@Column
(
name
=
"update_time"
)
private
Timestamp
updateTime
;
public
void
copy
(
MemberGroup
source
){
BeanUtil
.
copyProperties
(
source
,
this
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
));
}
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/repository/MemberGroupRepository.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
repository
;
import
com.topdraw.business.basicdata.member.group.domain.MemberGroup
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.JpaSpecificationExecutor
;
import
java.util.Optional
;
/**
* @author XiangHan
* @date 2021-11-17
*/
public
interface
MemberGroupRepository
extends
JpaRepository
<
MemberGroup
,
Long
>,
JpaSpecificationExecutor
<
MemberGroup
>
{
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/rest/MemberGroupController.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
rest
;
import
com.topdraw.common.ResultInfo
;
import
com.topdraw.annotation.Log
;
import
com.topdraw.business.basicdata.member.group.domain.MemberGroup
;
import
com.topdraw.business.basicdata.member.group.service.MemberGroupService
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
io.swagger.annotations.*
;
import
java.io.IOException
;
import
javax.servlet.http.HttpServletResponse
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Api
(
tags
=
"MemberGroup管理"
)
@RestController
@RequestMapping
(
"/api/MemberGroup"
)
public
class
MemberGroupController
{
@Autowired
private
MemberGroupService
MemberGroupService
;
@GetMapping
@ApiOperation
(
"查询MemberGroup"
)
public
ResultInfo
getMemberGroups
(
MemberGroupQueryCriteria
criteria
,
Pageable
pageable
)
{
return
ResultInfo
.
successPage
(
MemberGroupService
.
queryAll
(
criteria
,
pageable
));
}
@GetMapping
(
value
=
"/all"
)
@ApiOperation
(
"查询所有MemberGroup"
)
public
ResultInfo
getMemberGroups
(
MemberGroupQueryCriteria
criteria
)
{
return
ResultInfo
.
success
(
MemberGroupService
.
queryAll
(
criteria
));
}
@Log
@PostMapping
@ApiOperation
(
"新增MemberGroup"
)
public
ResultInfo
create
(
@Validated
@RequestBody
MemberGroup
resources
)
{
MemberGroupService
.
create
(
resources
);
return
ResultInfo
.
success
();
}
@Log
@PutMapping
@ApiOperation
(
"修改MemberGroup"
)
public
ResultInfo
update
(
@Validated
@RequestBody
MemberGroup
resources
)
{
MemberGroupService
.
update
(
resources
);
return
ResultInfo
.
success
();
}
@Log
@DeleteMapping
(
value
=
"/{id}"
)
@ApiOperation
(
"删除MemberGroup"
)
public
ResultInfo
delete
(
@PathVariable
Long
id
)
{
MemberGroupService
.
delete
(
id
);
return
ResultInfo
.
success
();
}
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/MemberGroupService.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
service
;
import
com.topdraw.business.basicdata.member.group.domain.MemberGroup
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria
;
import
org.springframework.data.domain.Pageable
;
import
java.util.Map
;
import
java.util.List
;
import
java.io.IOException
;
import
javax.servlet.http.HttpServletResponse
;
/**
* @author XiangHan
* @date 2021-11-17
*/
public
interface
MemberGroupService
{
/**
* 查询数据分页
* @param criteria 条件参数
* @param pageable 分页参数
* @return Map<String,Object>
*/
Map
<
String
,
Object
>
queryAll
(
MemberGroupQueryCriteria
criteria
,
Pageable
pageable
);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<MemberGroupDTO>
*/
List
<
MemberGroupDTO
>
queryAll
(
MemberGroupQueryCriteria
criteria
);
/**
* 根据ID查询
* @param id ID
* @return MemberGroupDTO
*/
MemberGroupDTO
findById
(
Long
id
);
void
create
(
MemberGroup
resources
);
void
update
(
MemberGroup
resources
);
void
delete
(
Long
id
);
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/dto/MemberGroupDTO.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
service
.
dto
;
import
lombok.Data
;
import
java.sql.Timestamp
;
import
java.io.Serializable
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Data
public
class
MemberGroupDTO
implements
Serializable
{
// ID ID
private
Long
id
;
// 分组ID
private
Long
groupId
;
// 会员ID
private
Long
memberId
;
// 运营商平台账号
private
String
platformAccount
;
// 手机号
private
String
cellphone
;
// 设备
private
String
stbId
;
// 有线MAC地址
private
String
ethMac
;
// 无线MAC地址
private
String
wifiMac
;
// 描述
private
String
description
;
// 创建者
private
String
createBy
;
// 创建时间
private
Timestamp
createTime
;
// 更新者
private
String
updateBy
;
// 更新时间
private
Timestamp
updateTime
;
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/dto/MemberGroupQueryCriteria.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
service
.
dto
;
import
lombok.Data
;
import
com.topdraw.annotation.Query
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Data
public
class
MemberGroupQueryCriteria
{
@Query
(
type
=
Query
.
Type
.
EQUAL
)
private
Long
memberId
;
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/impl/MemberGroupServiceImpl.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
service
.
impl
;
import
com.topdraw.business.basicdata.member.group.domain.MemberGroup
;
import
com.topdraw.utils.ValidationUtil
;
import
com.topdraw.utils.FileUtil
;
import
com.topdraw.business.basicdata.member.group.repository.MemberGroupRepository
;
import
com.topdraw.business.basicdata.member.group.service.MemberGroupService
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria
;
import
com.topdraw.business.basicdata.member.group.service.mapper.MemberGroupMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.dao.EmptyResultDataAccessException
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.util.Assert
;
import
com.topdraw.utils.PageUtil
;
import
com.topdraw.utils.QueryHelp
;
import
com.topdraw.utils.StringUtils
;
import
java.util.List
;
import
java.util.Map
;
import
java.io.IOException
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Service
@Transactional
(
propagation
=
Propagation
.
SUPPORTS
,
readOnly
=
true
,
rollbackFor
=
Exception
.
class
)
public
class
MemberGroupServiceImpl
implements
MemberGroupService
{
@Autowired
private
MemberGroupRepository
MemberGroupRepository
;
@Autowired
private
MemberGroupMapper
MemberGroupMapper
;
@Override
public
Map
<
String
,
Object
>
queryAll
(
MemberGroupQueryCriteria
criteria
,
Pageable
pageable
)
{
Page
<
MemberGroup
>
page
=
MemberGroupRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
),
pageable
);
return
PageUtil
.
toPage
(
page
.
map
(
MemberGroupMapper:
:
toDto
));
}
@Override
public
List
<
MemberGroupDTO
>
queryAll
(
MemberGroupQueryCriteria
criteria
)
{
return
MemberGroupMapper
.
toDto
(
MemberGroupRepository
.
findAll
((
root
,
criteriaQuery
,
criteriaBuilder
)
->
QueryHelp
.
getPredicate
(
root
,
criteria
,
criteriaBuilder
)));
}
@Override
public
MemberGroupDTO
findById
(
Long
id
)
{
MemberGroup
MemberGroup
=
MemberGroupRepository
.
findById
(
id
).
orElseGet
(
MemberGroup:
:
new
);
ValidationUtil
.
isNull
(
MemberGroup
.
getId
(),
"MemberGroup"
,
"id"
,
id
);
return
MemberGroupMapper
.
toDto
(
MemberGroup
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
create
(
MemberGroup
resources
)
{
MemberGroupRepository
.
save
(
resources
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
update
(
MemberGroup
resources
)
{
MemberGroup
MemberGroup
=
MemberGroupRepository
.
findById
(
resources
.
getId
()).
orElseGet
(
MemberGroup:
:
new
);
ValidationUtil
.
isNull
(
MemberGroup
.
getId
(),
"MemberGroup"
,
"id"
,
resources
.
getId
());
MemberGroup
.
copy
(
resources
);
MemberGroupRepository
.
save
(
MemberGroup
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
delete
(
Long
id
)
{
Assert
.
notNull
(
id
,
"The given id must not be null!"
);
MemberGroup
MemberGroup
=
MemberGroupRepository
.
findById
(
id
).
orElseThrow
(
()
->
new
EmptyResultDataAccessException
(
String
.
format
(
"No %s entity "
+
"with id %s "
+
"exists!"
,
MemberGroup
.
class
,
id
),
1
));
MemberGroupRepository
.
delete
(
MemberGroup
);
}
}
member-service-impl/src/main/java/com/topdraw/business/basicdata/member/group/service/mapper/MemberGroupMapper.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
business
.
basicdata
.
member
.
group
.
service
.
mapper
;
import
com.topdraw.base.BaseMapper
;
import
com.topdraw.business.basicdata.member.group.domain.MemberGroup
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.ReportingPolicy
;
/**
* @author XiangHan
* @date 2021-11-17
*/
@Mapper
(
componentModel
=
"spring"
,
unmappedTargetPolicy
=
ReportingPolicy
.
IGNORE
)
public
interface
MemberGroupMapper
extends
BaseMapper
<
MemberGroupDTO
,
MemberGroup
>
{
}
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/PointsOperationServiceImpl.java
View file @
61a8e0b
...
...
@@ -283,7 +283,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
*/
private
void
cleanInvalidAvailablePointsByMemberId
(
Long
memberId
)
{
List
<
PointsAvailableDTO
>
pointsAvailableDTOS
=
pointsAvailableService
.
findByMemberIdAndExpireTime
After
(
memberId
,
TimestampUtil
.
now
());
pointsAvailableService
.
findByMemberIdAndExpireTime
Before
(
memberId
,
TimestampUtil
.
now
());
if
(!
CollectionUtils
.
isEmpty
(
pointsAvailableDTOS
))
{
//1.获取原始积分
for
(
PointsAvailableDTO
pointsAvailableDTO
:
pointsAvailableDTOS
)
{
...
...
@@ -366,6 +366,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
PointsDetail
pointsDetail
=
new
PointsDetail
();
BeanUtils
.
copyProperties
(
pointsAvailableDTO
,
pointsDetail
);
pointsDetail
.
setId
(
null
);
pointsDetail
.
setPoints
(-
Math
.
abs
(
l
));
pointsDetail
.
setCode
(
String
.
valueOf
(
IdWorker
.
generator
()));
pointsDetail
.
setOriginalPoints
(
availablePoints
);
...
...
@@ -531,11 +532,14 @@ public class PointsOperationServiceImpl implements PointsOperationService {
PointsDetail
pointsDetail
=
new
PointsDetail
();
BeanUtils
.
copyProperties
(
tempPoints
,
pointsDetail
);
pointsDetail
.
setId
(
null
);
pointsDetail
.
setMemberId
(
memberId
);
pointsDetail
.
setCode
(
String
.
valueOf
(
IdWorker
.
generator
()));
pointsDetail
.
setPoints
(
tempPoints
.
getPoints
());
pointsDetail
.
setOriginalPoints
(
currentPoints
);
pointsDetail
.
setResultPoints
(
totalPoints
);
pointsDetail
.
setCreateTime
(
null
);
pointsDetail
.
setUpdateTime
(
null
);
String
description
=
pointsDetail
.
getDescription
();
if
(
StringUtils
.
isEmpty
(
description
))
{
pointsDetail
.
setDescription
(
"#"
);
...
...
member-service-impl/src/main/java/com/topdraw/business/process/service/impl/TaskOperationServiceImpl.java
View file @
61a8e0b
...
...
@@ -3,6 +3,9 @@ package com.topdraw.business.process.service.impl;
import
com.alibaba.fastjson.JSONObject
;
import
com.topdraw.business.basicdata.coupon.service.CouponService
;
import
com.topdraw.business.basicdata.coupon.service.dto.CouponDTO
;
import
com.topdraw.business.basicdata.member.group.service.MemberGroupService
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupDTO
;
import
com.topdraw.business.basicdata.member.group.service.dto.MemberGroupQueryCriteria
;
import
com.topdraw.business.basicdata.rights.permanentrights.service.PermanentRightsService
;
import
com.topdraw.business.basicdata.rights.permanentrights.service.dto.PermanentRightsDTO
;
import
com.topdraw.business.basicdata.rights.service.RightsService
;
...
...
@@ -20,7 +23,6 @@ import com.topdraw.business.basicdata.task.service.TaskService;
import
com.topdraw.business.basicdata.task.template.domain.TaskTemplate
;
import
com.topdraw.business.basicdata.task.template.service.TaskTemplateService
;
import
com.topdraw.business.process.domian.*
;
import
com.topdraw.exception.BadRequestException
;
import
com.topdraw.module.mq.DataSyncMsg
;
import
com.topdraw.util.*
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -37,8 +39,8 @@ import java.math.RoundingMode;
import
java.sql.Timestamp
;
import
java.time.LocalDate
;
import
java.util.*
;
import
java.util.concurrent.locks.ReentrantReadWriteLock
;
import
java.util.stream.Collectors
;
import
static
java
.
util
.
stream
.
Collectors
.
toList
;
/**
* 任务处理
...
...
@@ -68,6 +70,8 @@ public class TaskOperationServiceImpl implements TaskOperationService {
PermanentRightsService
permanentRightsService
;
@Autowired
CouponService
couponService
;
@Autowired
MemberGroupService
memberGroupService
;
private
static
final
Integer
TASK_FINISH_STATUS
=
1
;
private
static
final
Integer
TASK_UNFINISH_STATUS
=
2
;
...
...
@@ -543,7 +547,7 @@ public class TaskOperationServiceImpl implements TaskOperationService {
* 1. task_repeat_type 任务重复类型,-1:不限次;1:单次;>1:多次
* 5. member_level 会员等级门槛(0表示无门槛)
* 6. member_vip 会员vip门槛(0表示没有门槛)
* 7. groups 能够获取该任务的用户分组,为空则都能获取
* 7. groups 能够获取该任务的用户分组,为空则都能获取
, 0
* 8. action_amount 行为量(完成此任务需要多少次相同行为的触发)
*
* @param taskList 任务列表
...
...
@@ -555,24 +559,27 @@ public class TaskOperationServiceImpl implements TaskOperationService {
// 会员信息
MemberDTO
memberDTO
=
this
.
memberService
.
findById
(
memberId
);
// 判断是否完成任务
CompareTaskCondition
compareTaskCondition
=(
MemberDTO
memberDTO1
,
List
<
Task
>
taskList1
)
->
{
List
<
Task
>
taskStream
=
taskList1
.
stream
().
filter
(
task1
->
task1
.
getStatus
()
==
1
&&
(
Objects
.
isNull
(
task1
.
getExpireTime
())
||
task1
.
getExpireTime
().
compareTo
(
TimestampUtil
.
now
())
>=
0
)
&&
(
Objects
.
isNull
(
task1
.
getGroups
())
||
task1
.
getGroups
().
equals
(
"0"
)
||
task1
.
getGroups
().
equalsIgnoreCase
(
memberDTO1
.
getGroups
()))
&&
(
Objects
.
isNull
(
task1
.
getValidTime
())
||
task1
.
getValidTime
().
compareTo
(
TimestampUtil
.
now
())
<=
0
)
&&
(
Objects
.
isNull
(
task1
.
getMemberLevel
())
||
task1
.
getMemberLevel
()
<=
memberDTO1
.
getLevel
())
&&
(
Objects
.
isNull
(
task1
.
getMemberVip
())
||
task1
.
getMemberVip
()
<=
memberDTO1
.
getVip
())
).
collect
(
Collectors
.
toList
());
).
collect
(
toList
());
// 没有满足条件的数据
if
(
CollectionUtils
.
isEmpty
(
taskStream
))
{
return
false
;
}
else
{
// 验证会员分组
boolean
result1
=
this
.
validatedMemberGroup
(
memberId
,
taskList
);
if
(!
result1
)
return
false
;
// 获取当前任务的完成情况
boolean
result
=
this
.
checkAndRefreshTaskCompletion
(
memberId
,
taskList
);
return
result
;
...
...
@@ -586,6 +593,96 @@ public class TaskOperationServiceImpl implements TaskOperationService {
}
/**
* 验证会员分组
* @param memberId
* @param taskList
* @return
*/
private
boolean
validatedMemberGroup
(
Long
memberId
,
List
<
Task
>
taskList
)
{
List
<
MemberGroupDTO
>
groupDTO
=
this
.
findGroupByMemberId
(
memberId
);
if
(!
CollectionUtils
.
isEmpty
(
groupDTO
))
{
// 会员分组
List
<
String
>
list
=
new
ArrayList
<>();
for
(
MemberGroupDTO
memberGroupDTO
:
groupDTO
)
{
String
groupId
=
memberGroupDTO
.
getGroupId
().
toString
();
list
.
add
(
groupId
);
}
// 任务分组
List
<
String
>
strings
=
new
ArrayList
<>();
for
(
Task
task
:
taskList
)
{
String
groups
=
task
.
getGroups
();
List
<
String
>
strings1
=
UcStringUtils
.
parse2StrList
(
groups
);
if
(
StringUtils
.
isEmpty
(
groups
))
{
return
true
;
}
strings
.
addAll
(
strings1
);
break
;
}
// 如果任务分组为null或者空字符,则放过所有的会员
if
(
CollectionUtils
.
isEmpty
(
strings
))
{
return
true
;
}
// 如果任务分组为0,则放过所有的分组
if
(!
CollectionUtils
.
isEmpty
(
strings
)
&&
(!
CollectionUtils
.
isEmpty
(
list
)
&&
strings
.
contains
(
"0"
))
)
{
return
true
;
}
if
(!
CollectionUtils
.
isEmpty
(
list
))
{
// 只要会员分组满足任务分组之一就满足要求
if
(
list
.
size
()
>
strings
.
size
())
{
for
(
String
s
:
list
)
{
boolean
contains
=
strings
.
contains
(
s
);
if
(
contains
)
{
return
true
;
}
}
}
}
if
(!
CollectionUtils
.
isEmpty
(
strings
))
{
for
(
String
s
:
strings
)
{
boolean
contains
=
list
.
contains
(
s
);
if
(
contains
)
{
return
true
;
}
}
}
}
return
false
;
}
/**
*
* @param memberId
* @return
*/
private
List
<
MemberGroupDTO
>
findGroupByMemberId
(
Long
memberId
)
{
MemberGroupQueryCriteria
memberGroupQueryCriteria
=
new
MemberGroupQueryCriteria
();
memberGroupQueryCriteria
.
setMemberId
(
memberId
);
return
this
.
memberGroupService
.
queryAll
(
memberGroupQueryCriteria
);
}
/**
* 通过会员id获取分组
* @param memberId
* @return
*/
/*private List<GroupDTO> findGroupByMemberId(Long memberId) {
GroupQueryCriteria groupQueryCriteria = new GroupQueryCriteria();
groupQueryCriteria.setUserId(memberId);
List<GroupDTO> groupDTO = this.groupService.queryAll(groupQueryCriteria);
return groupDTO;
}*/
/**
* 检查并更新当前任务的完成情况
*
* 1.每天都能做,但要求总次数达到行为量
...
...
member-service-impl/src/main/java/com/topdraw/util/UcStringUtils.java
0 → 100644
View file @
61a8e0b
package
com
.
topdraw
.
util
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
public
class
UcStringUtils
{
public
static
List
<
String
>
parse2StrList
(
String
resouce
){
String
[]
split
=
resouce
.
split
(
","
);
if
(
split
.
length
>
0
)
{
List
<
String
>
collect
=
Arrays
.
stream
(
resouce
.
split
(
","
)).
collect
(
Collectors
.
toList
());
return
collect
;
}
else
{
List
<
String
>
strings
=
Arrays
.
asList
(
resouce
);
return
strings
;
}
}
}
member-service-impl/src/main/resources/config/application-prod.yml
View file @
61a8e0b
...
...
@@ -2,14 +2,9 @@
spring
:
datasource
:
# 测试/演示库
url
:
jdbc:log4jdbc:mysql://1
39.196.192.242:3306/tj_user_0819
?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url
:
jdbc:log4jdbc:mysql://1
72.0.31.10:3306/tj_user
?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
username
:
root
password
:
Tjlh@2017
# url: jdbc:log4jdbc:mysql://122.112.214.149:3306/tj_user?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# url: jdbc:mysql://122.112.214.149:3306/tj_user?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
# username: root
# password: root
password
:
Tjlh@2021
driverClassName
:
net.sf.log4jdbc.sql.jdbcapi.DriverSpy
#Druid
type
:
com.alibaba.druid.pool.DruidDataSource
...
...
@@ -53,24 +48,21 @@ spring:
max-request-size
:
200MB
redis
:
#数据库索引
database
:
16
host
:
122.112.214.149
# host: 139.196.4.234
database
:
0
host
:
127.0.0.1
port
:
6379
password
:
redis123
# password:
#连接超时时间
timeout
:
5000
rabbitmq
:
host
:
1
22.112.214.149
# rabbitmq的连接地址
host
:
1
72.0.31.96
# rabbitmq的连接地址
#host: 139.196.192.242 # rabbitmq的连接地址
port
:
5672
# rabbitmq的连接端口号
#virtual-host: /member_center # rabbitmq的虚拟host
#username: member_center # rabbitmq的用户名
#password: Tjlh@2021 # rabbitmq的密码
virtual-host
:
/
# rabbitmq的虚拟host
username
:
guest
# rabbitmq的用户名
password
:
guest
# rabbitmq的密码
virtual-host
:
member_center
# rabbitmq的虚拟host
username
:
admin
# rabbitmq的用户名
password
:
Tjlh@2021
# rabbitmq的密码
publisher-confirms
:
true
#如果对异步消息需要回调必须设置为true
#jwt。依赖的common中有需要jwt的部分属性。
...
...
member-service-impl/src/main/resources/config/application.yml
View file @
61a8e0b
server
:
port
:
8446
port
:
8447
spring
:
application
:
name
:
member-service
...
...
member-service-impl/src/test/java/com/topdraw/code/GeneratorCode.java
View file @
61a8e0b
...
...
@@ -39,16 +39,16 @@ public class GeneratorCode extends BaseTest {
@Rollback
(
value
=
false
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
generator
()
{
var
dbName
=
"uc_
tr_task_progress
"
;
var
dbName
=
"uc_
member_group
"
;
// 表名称,支持多表
var
tableNames
=
Arrays
.
asList
(
dbName
);
String
[]
s
=
dbName
.
split
(
"_"
);
var
pre
=
s
[
0
];
var
target1
=
s
[
s
.
length
-
1
];
var
preRoute
=
"com.topdraw.business.basicdata.
task
."
;
var
preRoute
=
"com.topdraw.business.basicdata.
member
."
;
StringBuilder
builder
=
new
StringBuilder
(
preRoute
);
builder
.
append
(
"
progress
"
);
builder
.
append
(
"
group
"
);
// builder.append(target);
tableNames
.
forEach
(
tableName
->
{
...
...
member-service-impl/src/test/java/com/topdraw/test/business/basicdata/task/TaskServiceTest.java
deleted
100644 → 0
View file @
2cf78f5
package
com
.
topdraw
.
test
.
business
.
basicdata
.
task
;
import
com.topdraw.business.basicdata.member.domain.Member
;
import
com.topdraw.business.basicdata.member.service.dto.MemberDTO
;
import
com.topdraw.business.basicdata.task.domain.Task
;
import
com.topdraw.business.basicdata.task.service.TaskService
;
import
com.topdraw.BaseTest
;
import
com.topdraw.business.process.service.impl.CompareTaskCondition
;
import
com.topdraw.util.IdWorker
;
import
com.topdraw.util.TimestampUtil
;
import
org.assertj.core.util.Arrays
;
import
org.junit.Assert
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.CollectionUtils
;
import
java.sql.Timestamp
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
//public class TaskServiceTest extends BaseTest {
public
class
TaskServiceTest
{
@Test
public
void
dealTaskTest
(){
// List<Task> taskList = this.taskService.findByTemplateId(1L);
// LOG.info("=====>>>" + taskList);
Task
task
=
new
Task
();
task
.
setTaskTemplateId
(
1L
);
task
.
setTaskDailyReset
(
1
);
task
.
setActionAmount
(
1
);
task
.
setValidTime
(
TimestampUtil
.
now
());
task
.
setExpireTime
(
TimestampUtil
.
now
());
task
.
setSequence
(
1
);
task
.
setRewardExp
(
10L
);
task
.
setRewardPoints
(
1L
);
task
.
setRewardPointsExpireTime
(
TimestampUtil
.
timestamp2long
(
TimestampUtil
.
now
()));
task
.
setPointsType
(
1
);
task
.
setRewardMaxPoints
(
1
);
task
.
setGroups
(
"groups"
);
task
.
setRightsSendStrategy
(
1
);
task
.
setMemberLevel
(
1
);
task
.
setMemberVip
(
1
);
task
.
setRightsId
(
1L
);
task
.
setRightsAmount
(
1
);
task
.
setRights2Id
(
2L
);
task
.
setRights2Amount
(
1
);
task
.
setRights3Id
(
3L
);
task
.
setRights3Amount
(
1
);
task
.
setStatus
(
1
);
List
<
Task
>
taskList
=
new
ArrayList
<>();
taskList
.
add
(
task
);
MemberDTO
member
=
new
MemberDTO
();
member
.
setCode
(
String
.
valueOf
(
IdWorker
.
generator
()));
member
.
setType
(
1
);
member
.
setStatus
(
1
);
member
.
setNickname
(
"nickname"
);
member
.
setDescription
(
"description"
);
member
.
setGender
(
1
);
member
.
setBirthday
(
"birthday"
);
member
.
setAvatarUrl
(
"avatarUrl"
);
member
.
setGroups
(
"groups"
);
member
.
setTags
(
"tags"
);
member
.
setVip
(
1
);
member
.
setLevel
(
1
);
member
.
setExp
(
10L
);
member
.
setPoints
(
5L
);
member
.
setDuePoints
(
0L
);
member
.
setCouponAmount
(
1L
);
member
.
setDueCouponAmount
(
0L
);
member
.
setUserIptvId
(
1L
);
member
.
setBindIptvPlatformType
(
0
);
member
.
setUpdateTime
(
TimestampUtil
.
now
());
// 判断是否完成任务
CompareTaskCondition
compareTaskCondition
=(
MemberDTO
memberDTO1
,
List
<
Task
>
taskList1
)
->
{
List
<
Task
>
taskStream
=
taskList1
.
stream
().
filter
(
task1
->
task1
.
getStatus
()
==
1
&&
(
Objects
.
isNull
(
task1
.
getExpireTime
())
||
task1
.
getExpireTime
().
compareTo
(
TimestampUtil
.
now
())
<=
0
)
&&
(
Objects
.
isNull
(
task1
.
getGroups
())
||
task1
.
getGroups
().
equalsIgnoreCase
(
memberDTO1
.
getGroups
()))
&&
(
Objects
.
isNull
(
task1
.
getValidTime
())
||
task1
.
getValidTime
().
compareTo
(
TimestampUtil
.
now
())
<=
0
)
&&
(
task1
.
getMemberLevel
()
==
0
||
task1
.
getMemberLevel
()
<=
memberDTO1
.
getLevel
())
&&
(
task1
.
getMemberVip
()
==
0
||
task1
.
getMemberVip
()
==
memberDTO1
.
getVip
())
).
collect
(
Collectors
.
toList
());
if
(
CollectionUtils
.
isEmpty
(
taskStream
))
{
return
false
;
}
return
true
;
};
boolean
b
=
compareTaskCondition
.
compareCondition
(
member
,
taskList
);
System
.
out
.
println
(
b
);
}
}
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/PointsOperationControllerTest.java
View file @
61a8e0b
...
...
@@ -53,7 +53,7 @@ public class PointsOperationControllerTest extends BaseTest {
@Test
public
void
grantPointsByManual
(){
TempPoints
tempPoints
=
new
TempPoints
();
tempPoints
.
setMemberId
(
5
L
);
tempPoints
.
setMemberId
(
10
L
);
tempPoints
.
setPoints
(
10L
);
tempPoints
.
setPointsType
(
0
);
tempPoints
.
setRightsSendStrategy
(
0
);
...
...
member-service-impl/src/test/java/com/topdraw/test/business/process/rest/TaskOperationControllerTest.java
View file @
61a8e0b
...
...
@@ -8,11 +8,13 @@ import com.topdraw.module.mq.DataSyncMsg;
import
com.topdraw.module.mq.EntityType
;
import
com.topdraw.module.mq.EventType
;
import
com.topdraw.BaseTest
;
import
com.topdraw.utils.StringUtils
;
import
org.junit.Test
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.concurrent.ArrayBlockingQueue
;
import
java.util.concurrent.FutureTask
;
import
java.util.concurrent.ThreadPoolExecutor
;
...
...
@@ -29,9 +31,9 @@ public class TaskOperationControllerTest extends BaseTest {
DataSyncMsg
dataSyncMsg
=
new
DataSyncMsg
();
dataSyncMsg
.
setEventType
(
EventType
.
VIEWING
.
name
());
DataSyncMsg
.
MsgData
msgData
=
new
DataSyncMsg
.
MsgData
();
msgData
.
setEvent
(
3
);
// 类型 1-登录 2-观影 3-参加活动 4-订购 5-优享会员 6-签到
msgData
.
setEvent
(
6
);
// 类型 1-登录 2-观影 3-参加活动 4-订购 5-优享会员 6-签到
msgData
.
setRemarks
(
"remark"
);
msgData
.
setMemberId
(
5
L
);
msgData
.
setMemberId
(
4
L
);
msgData
.
setDeviceType
(
2
);
msgData
.
setAppCode
(
"WEI_XIN_GOLD_PANDA"
);
dataSyncMsg
.
setMsg
(
msgData
);
...
...
@@ -44,7 +46,6 @@ public class TaskOperationControllerTest extends BaseTest {
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
...
...
member-service-impl/src/test/java/com/topdraw/test/business/process/service/PointsOperationServiceTest.java
View file @
61a8e0b
...
...
@@ -46,7 +46,7 @@ public class PointsOperationServiceTest extends BaseTest {
@Test
public
void
cleanInvalidAvailablePoints
()
{
Long
memberId
=
2
L
;
Long
memberId
=
10
L
;
this
.
pointsOperationService
.
cleanInvalidPointsAndCalculateCurrentPoints
(
memberId
);
}
...
...
Please
register
or
sign in
to post a comment