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

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

暂时提交

parent 1912bec0
...@@ -28,7 +28,7 @@ public class CandyCouponRule implements Serializable { ...@@ -28,7 +28,7 @@ public class CandyCouponRule implements Serializable {
private String couponId; private String couponId;
/** /**
* 适用范围[100-全场|90-演出|80-商品] * 适用范围[100-全场|90-演出|91-场次|92-票|80-商品]
*/ */
private Integer useScope; private Integer useScope;
......
package com.liquidnet.service.candy.controller; 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.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil; import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto; 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.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.util.CouponBaseUtil; import com.liquidnet.service.candy.util.CouponBaseUtil;
import com.liquidnet.service.candy.util.ObjectUtil; import com.liquidnet.service.candy.util.ObjectUtil;
import com.liquidnet.service.candy.util.RedisDataUtils; 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.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo; import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -27,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -27,7 +22,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -48,6 +42,7 @@ public class CandyCouponController { ...@@ -48,6 +42,7 @@ public class CandyCouponController {
@Autowired @Autowired
private RedisDataUtils redisDataUtils; private RedisDataUtils redisDataUtils;
//我的券列表
@GetMapping("my") @GetMapping("my")
@ApiOperation("我的券列表") @ApiOperation("我的券列表")
public ResponseDto<CandyMyCouponListVo> myCoupon() { public ResponseDto<CandyMyCouponListVo> myCoupon() {
...@@ -73,7 +68,43 @@ public class CandyCouponController { ...@@ -73,7 +68,43 @@ public class CandyCouponController {
return ResponseDto.success(vo); 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") @GetMapping("state")
...@@ -81,7 +112,7 @@ public class CandyCouponController { ...@@ -81,7 +112,7 @@ public class CandyCouponController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true), @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(); String uid = CurrentUtil.getCurrentUid();
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId); CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dto == null) { if (dto == null) {
...@@ -99,7 +130,7 @@ public class CandyCouponController { ...@@ -99,7 +130,7 @@ public class CandyCouponController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true), @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(); String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId); List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) { if (dtoList == null) {
...@@ -116,7 +147,7 @@ public class CandyCouponController { ...@@ -116,7 +147,7 @@ public class CandyCouponController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true), @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(); String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponId); List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) { if (dtoList == null) {
......
...@@ -15,7 +15,8 @@ public class CouponBaseUtil { ...@@ -15,7 +15,8 @@ public class CouponBaseUtil {
/** /**
* 获取 基础券vo * 获取 基础券vo
* @param dtoItem CandyUserCouponBasicDto *
* @param dtoItem CandyUserCouponBasicDto
* @return * @return
*/ */
public static CandyCouponVo getBaseCouponUserVo(CandyUserCouponBasicDto dtoItem) { public static CandyCouponVo getBaseCouponUserVo(CandyUserCouponBasicDto dtoItem) {
...@@ -52,13 +53,78 @@ public class CouponBaseUtil { ...@@ -52,13 +53,78 @@ public class CouponBaseUtil {
return vo; 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 currentTime 当前服务器时间
* @param state 券状态 * @param expireAt 券过期时间
* @return 判断过后的券状态 * @param state 券状态
* @return 判断过后的券状态
*/ */
public static Integer getCouponState(LocalDateTime currentTime, LocalDateTime expireAt, Integer state) { public static Integer getCouponState(LocalDateTime currentTime, LocalDateTime expireAt, Integer state) {
//券状态 //券状态
...@@ -77,9 +143,10 @@ public class CouponBaseUtil { ...@@ -77,9 +143,10 @@ public class CouponBaseUtil {
/** /**
* 根据券id获取Dto * 根据券id获取Dto
* @param dtoList CouponBaseDtoList *
* @param uCouponId 券唯一id * @param dtoList CouponBaseDtoList
* @return CandyUserCouponBasicDto * @param uCouponId 券唯一id
* @return CandyUserCouponBasicDto
*/ */
public static CandyUserCouponBasicDto getSingleDtoByUCouponId(List<CandyUserCouponBasicDto> dtoList, String uCouponId) { public static CandyUserCouponBasicDto getSingleDtoByUCouponId(List<CandyUserCouponBasicDto> dtoList, String uCouponId) {
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
...@@ -92,9 +159,10 @@ public class CouponBaseUtil { ...@@ -92,9 +159,10 @@ public class CouponBaseUtil {
/** /**
* 使用券 * 使用券
* @param dtoList CouponBaseDtoList *
* @param uCouponId 券唯一id * @param dtoList CouponBaseDtoList
* @return List<CandyUserCouponBasicDto> * @param uCouponId 券唯一id
* @return List<CandyUserCouponBasicDto>
*/ */
public static List<CandyUserCouponBasicDto> useCoupon(List<CandyUserCouponBasicDto> dtoList, String uCouponId) { public static List<CandyUserCouponBasicDto> useCoupon(List<CandyUserCouponBasicDto> dtoList, String uCouponId) {
boolean isHas = false; boolean isHas = false;
...@@ -117,9 +185,10 @@ public class CouponBaseUtil { ...@@ -117,9 +185,10 @@ public class CouponBaseUtil {
/** /**
* 回退券 * 回退券
* @param dtoList CouponBaseDtoList *
* @param uCouponId 券唯一id * @param dtoList CouponBaseDtoList
* @return List<CandyUserCouponBasicDto> * @param uCouponId 券唯一id
* @return List<CandyUserCouponBasicDto>
*/ */
public static List<CandyUserCouponBasicDto> backCoupon(List<CandyUserCouponBasicDto> dtoList, String uCouponId) { public static List<CandyUserCouponBasicDto> backCoupon(List<CandyUserCouponBasicDto> dtoList, String uCouponId) {
boolean isHas = false; boolean isHas = false;
......
...@@ -29,7 +29,7 @@ public class CandyCouponVo implements Serializable,Cloneable { ...@@ -29,7 +29,7 @@ public class CandyCouponVo implements Serializable,Cloneable {
/* --- --- --- CandyUserCoupon */ /* --- --- --- CandyUserCoupon */
private String ucouponId;//券id private String ucouponId;//券id
private Integer state;//券状态[1-可用|2-无效|3-已过期|5-已使用] private Integer state;//券状态[1-可用|2-无效|3-已过期|5-已使用 |21-不可用]
// private String bindAt;//激活时间 // private String bindAt;//激活时间
private String usedAt;//使用时间 private String usedAt;//使用时间
private String usedFor;//购买内容 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