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

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

暂时提交

parent 1912bec0
......@@ -28,7 +28,7 @@ public class CandyCouponRule implements Serializable {
private String couponId;
/**
* 适用范围[100-全场|90-演出|80-商品]
* 适用范围[100-全场|90-演出|91-场次|92-票|80-商品]
*/
private Integer useScope;
......
package com.liquidnet.service.candy.controller;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.util.CouponBaseUtil;
import com.liquidnet.service.candy.util.ObjectUtil;
import com.liquidnet.service.candy.util.RedisDataUtils;
import com.liquidnet.service.candy.vo.CandyCouponRulesVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -27,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
......@@ -48,6 +42,7 @@ public class CandyCouponController {
@Autowired
private RedisDataUtils redisDataUtils;
//我的券列表
@GetMapping("my")
@ApiOperation("我的券列表")
public ResponseDto<CandyMyCouponListVo> myCoupon() {
......@@ -73,7 +68,43 @@ public class CandyCouponController {
return ResponseDto.success(vo);
}
//要使用券列表
//要使用券列表 - 演出
@GetMapping("preUse/performance")
@ApiOperation("要使用券列表 - 演出")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "performanceId", value = "演出id", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "timeId", value = "场次id", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "ticketId", value = "票id", required = true),
})
public ResponseDto<CandyMyCouponListVo> preUseCoupon(@RequestParam("performanceId") String performanceId,
@RequestParam("timeId") String timeId,
@RequestParam("ticketId") String ticketId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
CandyMyCouponListVo vo = CandyMyCouponListVo.getNew();
List<CandyCouponVo> memberCoupon = ObjectUtil.getCandyCouponVoArrayList();
List<CandyCouponVo> myCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem,performanceId,timeId,ticketId);
if (dtoItem.getBusiType().equals(4)) { //会员券
memberCoupon.add(baseVo);
} else {//非会员券
myCoupon.add(baseVo);
}
}
//排序
memberCoupon.sort(Comparator.comparing(CandyCouponVo::getState));
myCoupon.sort(Comparator.comparing(CandyCouponVo::getState));
vo.setMemberCoupon(memberCoupon);
vo.setMyCoupon(myCoupon);
return ResponseDto.success(vo);
}
//要使用券列表 - 演出
//要使用券列表 - 演出提前
//判断券是否可用
@GetMapping("state")
......@@ -81,7 +112,7 @@ public class CandyCouponController {
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
public ResponseDto<HashMap<String, Integer>> state(@RequestParam("uCouponId") String uCouponId) {
public ResponseDto<HashMap<String, Integer>> stateCoupon(@RequestParam("uCouponId") String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dto == null) {
......@@ -99,7 +130,7 @@ public class CandyCouponController {
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
public ResponseDto<Boolean> use(@RequestParam("uCouponId") String uCouponId) {
public ResponseDto<Boolean> useCoupon(@RequestParam("uCouponId") String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
......@@ -116,7 +147,7 @@ public class CandyCouponController {
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
public ResponseDto<Boolean> useBack(@RequestParam("uCouponId") String uCouponId) {
public ResponseDto<Boolean> useBackCoupon(@RequestParam("uCouponId") String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
......
......@@ -15,6 +15,7 @@ public class CouponBaseUtil {
/**
* 获取 基础券vo
*
* @param dtoItem CandyUserCouponBasicDto
* @return
*/
......@@ -52,9 +53,74 @@ public class CouponBaseUtil {
return vo;
}
/**
* 获取 基础券vo
*
* @param dtoItem CandyUserCouponBasicDto
* @return
*/
public static CandyCouponVo getPerformanceCouponUserVo(CandyUserCouponBasicDto dtoItem,
String performanceId,
String timeId,
String ticketId) {
boolean isTarget = false;
LocalDateTime now = LocalDateTime.now();
CandyCouponVo vo = CandyCouponVo.getNew();
List<CandyCouponRulesVo> rulesVoList = ObjectUtil.getCandyCouponRulesVos();
vo.setTitle(dtoItem.getTitle());
vo.setExpireAt(DateUtil.format(dtoItem.getExpireAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setValFace(dtoItem.getValFace());
vo.setValOver(dtoItem.getValOver());
vo.setValMinus(dtoItem.getValMinus());
vo.setBindType(dtoItem.getBindType());
vo.setLabel(dtoItem.getLabel());
vo.setNotice(dtoItem.getNotice());
vo.setUcouponId(dtoItem.getUcouponId());
vo.setUsedAt(DateUtil.format(dtoItem.getUsedAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setUsedFor(dtoItem.getUsedFor());
//适用范围 规则
for (CandyCouponRuleDto ruleItem : dtoItem.getUseRules()) {
CandyCouponRulesVo voRules = CandyCouponRulesVo.getNew();
voRules.setUseScope(ruleItem.getUseScope());
voRules.setBusiId(ruleItem.getBusiId());
voRules.setBusiName(ruleItem.getBusiName());
rulesVoList.add(voRules);
isTarget = isTargetCoupon(ruleItem.getUseScope(),ruleItem.getBusiId());
}
//券类别
if (dtoItem.getBusiType().equals(3)) {
vo.setCouType(101);
} else {
vo.setCouType(dtoItem.getCouType());
}
int state = getCouponState(now, dtoItem.getExpireAt(), dtoItem.getState());
if(isTarget){
vo.setState(state);
}else{
vo.setState(state==1?21:state);//不在目标范围 如果可用改为不可用21
}
vo.setUseRules(rulesVoList);
return vo;
}
public static Boolean isTargetCoupon(Integer UseScope, String busiId){
boolean isTarget = false;
switch (UseScope){
case 90://演出
break;
case 91://场次
break;
case 92://票
break;
}
return isTarget;
}
/**
* 获取券状态
*
* @param currentTime 当前服务器时间
* @param expireAt 券过期时间
* @param state 券状态
......@@ -77,6 +143,7 @@ public class CouponBaseUtil {
/**
* 根据券id获取Dto
*
* @param dtoList CouponBaseDtoList
* @param uCouponId 券唯一id
* @return CandyUserCouponBasicDto
......@@ -92,6 +159,7 @@ public class CouponBaseUtil {
/**
* 使用券
*
* @param dtoList CouponBaseDtoList
* @param uCouponId 券唯一id
* @return List<CandyUserCouponBasicDto>
......@@ -117,6 +185,7 @@ public class CouponBaseUtil {
/**
* 回退券
*
* @param dtoList CouponBaseDtoList
* @param uCouponId 券唯一id
* @return List<CandyUserCouponBasicDto>
......
......@@ -29,7 +29,7 @@ public class CandyCouponVo implements Serializable,Cloneable {
/* --- --- --- CandyUserCoupon */
private String ucouponId;//券id
private Integer state;//券状态[1-可用|2-无效|3-已过期|5-已使用]
private Integer state;//券状态[1-可用|2-无效|3-已过期|5-已使用 |21-不可用]
// private String bindAt;//激活时间
private String usedAt;//使用时间
private String usedFor;//购买内容
......
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