Commit 61a8e0b2 61a8e0b26c45e0228bb442538ec3806900d3e915 by xianghan@topdraw.cn

演示前最后版本修改

1 parent 2cf78f54
Showing 19 changed files with 535 additions and 133 deletions
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';
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));
}
}
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> {
}
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();
}
}
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);
}
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;
}
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;
}
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);
}
}
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> {
}
......@@ -283,7 +283,7 @@ public class PointsOperationServiceImpl implements PointsOperationService {
*/
private void cleanInvalidAvailablePointsByMemberId(Long memberId) {
List<PointsAvailableDTO> pointsAvailableDTOS =
pointsAvailableService.findByMemberIdAndExpireTimeAfter(memberId,TimestampUtil.now());
pointsAvailableService.findByMemberIdAndExpireTimeBefore(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("#");
......
......@@ -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.每天都能做,但要求总次数达到行为量
......
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;
}
}
}
......@@ -2,14 +2,9 @@
spring:
datasource:
# 测试/演示库
url: jdbc:log4jdbc:mysql://139.196.192.242:3306/tj_user_0819?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
url: jdbc:log4jdbc:mysql://172.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: 122.112.214.149 # rabbitmq的连接地址
host: 172.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的部分属性。
......
server:
port: 8446
port: 8447
spring:
application:
name: member-service
......
......@@ -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 -> {
......
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);
}
}
......@@ -53,7 +53,7 @@ public class PointsOperationControllerTest extends BaseTest {
@Test
public void grantPointsByManual(){
TempPoints tempPoints = new TempPoints();
tempPoints.setMemberId(5L);
tempPoints.setMemberId(10L);
tempPoints.setPoints(10L);
tempPoints.setPointsType(0);
tempPoints.setRightsSendStrategy(0);
......
......@@ -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(5L);
msgData.setMemberId(4L);
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();
}
}
......
......@@ -46,7 +46,7 @@ public class PointsOperationServiceTest extends BaseTest {
@Test
public void cleanInvalidAvailablePoints() {
Long memberId = 2L;
Long memberId = 10L;
this.pointsOperationService.cleanInvalidPointsAndCalculateCurrentPoints(memberId);
}
......