记得上下班打卡 | git大法好,push需谨慎

Commit e7b0b866 authored by 胡佳晨's avatar 胡佳晨

通用券逻辑

parent b1aa25ef
......@@ -47,7 +47,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public CandyMyCouponListVo myCoupon(Integer type) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
List<CandyCouponVo> myCoupon = ObjectUtil.getCandyCouponVoArrayList();
......@@ -80,8 +86,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public List<CandyCouponPreVo> memberCouponPre(String uid) {
ArrayList<CandyCouponPreVo> voArrayList = ObjectUtil.getCandyCouponPreVoArrayList();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
if (!CollectionUtil.isEmpty(dtoList)) {
Map<String, Long> mCouponCountMap = dtoList.parallelStream()
.filter(r -> (r.getExclusive() == 1 && r.getState() == 1))
......@@ -95,7 +106,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public List<CandyCouponVo> memberCoupon(String mCouponId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
......@@ -115,7 +132,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId, Integer type) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
List<CandyCouponVo> myCoupon = ObjectUtil.getCandyCouponVoArrayList();
......@@ -131,7 +154,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
continue;
}
}
if(baseVo.getCouType().equals(101)){
if (baseVo.getCouType().equals(101)) {
continue;
}
if (dtoItem.getExclusive().equals(1)) { //会员券
......@@ -152,11 +175,17 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, priceTotal, performanceId, timeId, ticketId);
if(baseVo.getCouType().equals(101)){
if (baseVo.getCouType().equals(101)) {
continue;
}
if (baseVo.getState().equals(1)) { //可用
......@@ -172,7 +201,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public CandyMyCouponListVo preUseGoodCoupon(BigDecimal priceTotal, String goodId, Integer type) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
List<CandyCouponVo> myCoupon = ObjectUtil.getCandyCouponVoArrayList();
......@@ -189,7 +224,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
continue;
}
}
if(baseVo.getCouType().equals(101)){
if (baseVo.getCouType().equals(101)) {
continue;
}
if (dtoItem.getExclusive().equals(1)) { //会员券
......@@ -210,11 +245,17 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, dtoList.size());
if(baseVo.getCouType().equals(101)){
if (baseVo.getCouType().equals(101)) {
continue;
}
if (baseVo.getState().equals(1)) { //可用
......@@ -230,7 +271,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public List<CandyCouponVo> myAdvanceCoupon(String performanceId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getBusiType().equals(3)) {
......@@ -250,7 +297,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public Integer stateCoupon(String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId);
if (dto == null) {
return null;//券不存在
}
......@@ -260,13 +313,19 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice, String performanceId, String timesId, String ticketId, String goodId) {
String uid = CurrentUtil.getCurrentUid();
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
CandyUseResultVo vo = CandyUseResultVo.getNew();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId, content);
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId, content);
if (dtoList == null) {
vo.setCouType(-1);
vo.setValue(BigDecimal.ZERO);
} else {
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponId);
if (dto.getBusiType().equals(3)) {
dto.setCouType(101);
} else {
......@@ -323,7 +382,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
}
}
if(dto.getBusiType().equals(0)){
if (dto.getBusiType().equals(0)) {
isTarget = true;
}
......@@ -359,8 +418,14 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
public Boolean useBackCoupon(List<BackCouponParam> backCouponParams) {
for (BackCouponParam item : backCouponParams) {
String uid = item.getUid();
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
ArrayList<String> uCouponIdList = new ArrayList(Arrays.asList(item.getuCouponIds().split(",")));
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponIdList);
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid, userCreateTime), uCouponIdList);
if (dtoList == null) {
return false;
} else {
......@@ -419,7 +484,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
SqlMapping.gets(toMqSqls, objsUserCoupon, objsCouponCode)
);
return ResponseDto.success(uCouponId);
}else if(dto.getState().equals(1)){
} else if (dto.getState().equals(1)) {
return ResponseDto.failure("兑换已使用");
} else {
return ResponseDto.failure("兑换失败,请稍后再试");
......@@ -439,7 +504,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
}
String uCouponId = IDGenerator.get32UUID();
//构建baseDto
CandyUserCouponBasicDto baseDto = CandyUserCouponBasicDto.getNew().copyToRedisBaseCoupon(uCouponId, uid, ccode, infoDto,LocalDateTime.now().plusDays(infoDto.getRedeemValidity()));
CandyUserCouponBasicDto baseDto = CandyUserCouponBasicDto.getNew().copyToRedisBaseCoupon(uCouponId, uid, ccode, infoDto, LocalDateTime.now().plusDays(infoDto.getRedeemValidity()));
return ResponseDto.success(CouponBaseUtil.getBaseCouponUserVo(baseDto));
} else {
return ResponseDto.failure("兑换失败,请稍后再试");
......@@ -449,15 +514,21 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
@Override
public ResponseDto<List<CandyCouponVo>> couponListById(String uCouponIds) {
String uid = CurrentUtil.getCurrentUid();
LocalDateTime userCreateTime;
try {
userCreateTime = (LocalDateTime) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED);
} catch (Exception e) {
userCreateTime = null;
}
ArrayList<String> uCouponIdList = new ArrayList(Arrays.asList(uCouponIds.split(",")));
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
List<CandyCouponVo> vo = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
if(uCouponIdList.contains(dtoItem.getUcouponId())) {
if (uCouponIdList.contains(dtoItem.getUcouponId())) {
CandyCouponVo baseVo = CouponBaseUtil.getBaseCouponUserVo(dtoItem);
vo.add(baseVo);
}else{
} else {
continue;
}
}
......
......@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
......@@ -23,7 +24,7 @@ public class RedisDataUtils {
RedisUtil redisUtil;
// 获取 CandyUserCouponBasicDto数组 根据用户id
public List<CandyUserCouponBasicDto> getCouponByUid(String uid) {
public List<CandyUserCouponBasicDto> getCouponByUid(String uid, LocalDateTime userCreateTime) {
String redisKey = CandyRedisConst.BASIC_USER_COUPON.concat(uid);
String publicRedisKey = CandyRedisConst.BASIC_COMMON_COUPON;
......@@ -47,14 +48,14 @@ public class RedisDataUtils {
}
boolean needSet = false;
if (userCreateTime == null) {
userCreateTime = LocalDateTime.MIN;
}
List<String> userIds = userDto.stream().map(CandyUserCouponBasicDto::getCcouponId).collect(Collectors.toList());
log.info("userIds = "+userIds.toString());
for (CandyCommonCouponBasicDto item : pubDto) {
log.info("pubDto = "+item.getCcouponId());
if (userIds.contains(item.getCcouponId())) {
if (userIds.contains(item.getCcouponId()) || userCreateTime.isAfter(item.getCreatedAt())) {
continue;
} else {
log.info("pubDto = add");
CandyUserCouponBasicDto userCouponBasicDto = CandyUserCouponBasicDto.getNew().copyToRedisCommonBaseCoupon(IDGenerator.get32UUID(), uid, item);
userDto.add(userCouponBasicDto);
needSet = true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment