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

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

提交 缺兑换券接口

parent f031a619
......@@ -5,6 +5,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.service.ICandyCouponService;
import com.liquidnet.service.candy.util.CouponBaseUtil;
import com.liquidnet.service.candy.util.ObjectUtil;
import com.liquidnet.service.candy.util.RedisDataUtils;
......@@ -42,32 +43,13 @@ import java.util.List;
public class CandyCouponController {
@Autowired
private RedisDataUtils redisDataUtils;
private ICandyCouponService candyCouponService;
//我的券列表
@GetMapping("my")
@ApiOperation("我的券列表")
public ResponseDto<CandyMyCouponListVo> myCoupon() {
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.getBaseCouponUserVo(dtoItem);
if (dtoItem.getExclusive().equals(1)) { //会员券
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);
return ResponseDto.success(candyCouponService.myCoupon());
}
//要使用券列表 - 演出
......@@ -80,27 +62,7 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "ticketId", value = "票id", required = true),
})
public ResponseDto<CandyMyCouponListVo> preUsePerformanceCoupon(@RequestParam("priceTotal") BigDecimal priceTotal, @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, priceTotal, performanceId, timeId, ticketId);
if (dtoItem.getExclusive().equals(1)) { //会员券
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);
return ResponseDto.success(candyCouponService.preUsePerformanceCoupon(priceTotal, performanceId, timeId, ticketId));
}
// 是否可用券演出
......@@ -113,19 +75,8 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "ticketId", value = "票id", required = true),
})
public ResponseDto<HashMap<String, Integer>> preCanUsePerformanceCoupon(@RequestParam("priceTotal") BigDecimal priceTotal, @RequestParam("performanceId") String performanceId, @RequestParam("timeId") String timeId, @RequestParam("ticketId") String ticketId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
HashMap<String, Integer> hashMap = CollectionUtil.mapStringInteger();
hashMap.put("canUse", 0);
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, priceTotal, performanceId, timeId, ticketId);
if (baseVo.getState().equals(1)) { //可用
hashMap.put("canUse", 1);
break;
} else {//不可用
continue;
}
}
hashMap.put("canUse", candyCouponService.preCanUsePerformanceCoupon(priceTotal, performanceId, timeId, ticketId));
return ResponseDto.success(hashMap);
}
......@@ -139,27 +90,7 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "produceId", value = "场次id", required = true),
})
public ResponseDto<CandyMyCouponListVo> preUseGoodCoupon(@RequestParam("priceTotal") BigDecimal priceTotal, @RequestParam("goodId") String goodId, @RequestParam("produceId") String produceId) {
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.getGoodCouponUserVo(dtoItem, priceTotal, goodId, produceId);
if (dtoItem.getExclusive().equals(1)) { //会员券
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);
return ResponseDto.success(candyCouponService.preUseGoodCoupon(priceTotal, goodId, produceId));
}
//是否可用券 - 商品
......@@ -171,19 +102,8 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "produceId", value = "场次id", required = true),
})
public ResponseDto<HashMap<String, Integer>> preCanUseGoodCoupon(@RequestParam("priceTotal") BigDecimal priceTotal, @RequestParam("goodId") String goodId, @RequestParam("produceId") String produceId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
HashMap<String, Integer> hashMap = CollectionUtil.mapStringInteger();
hashMap.put("canUse", 0);
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, produceId);
if (baseVo.getState().equals(1)) { //可用
hashMap.put("canUse", 1);
break;
} else {//不可用
continue;
}
}
hashMap.put("canUse", candyCouponService.preCanUseGoodCoupon(priceTotal, goodId, produceId));
return ResponseDto.success(hashMap);
}
......@@ -192,23 +112,7 @@ public class CandyCouponController {
@GetMapping("my/advance")
@ApiOperation("提前券列表")
public ResponseDto<List<CandyCouponVo>> myAdvanceCoupon() {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getBusiType().equals(3)) {
CandyCouponVo baseVo = CouponBaseUtil.getBaseCouponUserVo(dtoItem);
if (baseVo.getState().equals(1)) {
advanceCoupon.add(baseVo);
} else {
continue;
}
} else {
continue;
}
}
//排序
return ResponseDto.success(advanceCoupon);
return ResponseDto.success(candyCouponService.myAdvanceCoupon());
}
//判断券是否可用
......@@ -218,15 +122,13 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
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) {
return ResponseDto.failure();//券不存在
Integer result = candyCouponService.stateCoupon(uCouponId);
if (result == null) {
return ResponseDto.failure();
}
Integer state = CouponBaseUtil.getCouponState(LocalDateTime.now(), dto.getExpireAt(), dto.getState());
HashMap<String, Integer> map = CollectionUtil.mapStringInteger();
map.put("state", state);
return ResponseDto.success(map);
HashMap<String, Integer> hashMap = CollectionUtil.mapStringInteger();
hashMap.put("state", result);
return ResponseDto.success(hashMap);
}
//判断券是否可用并使用
......@@ -236,34 +138,11 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
public ResponseDto<CandyUseResultVo> useCoupon(@RequestParam("uCouponId") String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
CandyUseResultVo vo = CandyUseResultVo.getNew();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
CandyUseResultVo result = candyCouponService.useCoupon(uCouponId);
if (result == null) {
return ResponseDto.failure();
} else {
redisDataUtils.setCouponByUid(uid, dtoList);
}
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
switch (dto.getCouType()){//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券]
case 1:
vo.setValue(dto.getValFace());
break;
case 2:
vo.setValue(dto.getValMinus());
break;
case 3:
vo.setValue(BigDecimal.valueOf(-1));
break;
case 4:
vo.setValue(dto.getDiscount());
break;
default:
vo.setValue(BigDecimal.valueOf(0));
break;
}
vo.setCouType(dto.getCouType());
return ResponseDto.success(vo);
return ResponseDto.success(result);
}
//回退券
......@@ -273,13 +152,7 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
})
public ResponseDto<Boolean> useBackCoupon(@RequestParam("uCouponId") String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
return ResponseDto.failure();
} else {
redisDataUtils.setCouponByUid(uid, dtoList);
}
candyCouponService.useBackCoupon(uCouponId);
return ResponseDto.success();
}
......@@ -290,14 +163,12 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "ccode", value = "兑换码", required = true),
})
public ResponseDto<Boolean> receiveCoupon(@RequestParam("ccode") String ccode) {
String uid = CurrentUtil.getCurrentUid();
Boolean result = CouponBaseUtil.receiveCoupon(uid, ccode);
Boolean result = candyCouponService.receiveCoupon(ccode);
if (result) {
return ResponseDto.success();
} else {
return ResponseDto.failure();
}
return ResponseDto.success();
}
}
package com.liquidnet.service.candy.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import org.springframework.web.bind.annotation.RequestParam;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
/**
* <p>
......@@ -13,4 +22,23 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ICandyCouponService extends IService<CandyCoupon> {
CandyMyCouponListVo myCoupon();
CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId);
Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId);
CandyMyCouponListVo preUseGoodCoupon(BigDecimal priceTotal, String goodId, String produceId);
Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodId, String produceId);
List<CandyCouponVo> myAdvanceCoupon();
Integer stateCoupon(String uCouponId);
CandyUseResultVo useCoupon( String uCouponId);
Boolean useBackCoupon(String uCouponId);
Boolean receiveCoupon(String ccode);
}
package com.liquidnet.service.candy.service.impl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.mapper.CandyCouponMapper;
import com.liquidnet.service.candy.service.ICandyCouponService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
/**
* <p>
* 券基础信息 服务实现类
......@@ -17,4 +34,200 @@ import org.springframework.stereotype.Service;
@Service
public class CandyCouponServiceImpl extends ServiceImpl<CandyCouponMapper, CandyCoupon> implements ICandyCouponService {
@Autowired
private RedisDataUtils redisDataUtils;
@Override
public CandyMyCouponListVo myCoupon() {
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.getBaseCouponUserVo(dtoItem);
if (dtoItem.getExclusive().equals(1)) { //会员券
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 vo;
}
@Override
public CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, 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, priceTotal, performanceId, timeId, ticketId);
if (dtoItem.getExclusive().equals(1)) { //会员券
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 vo;
}
@Override
public Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, priceTotal, performanceId, timeId, ticketId);
if (baseVo.getState().equals(1)) { //可用
canUse = 1;
break;
} else {//不可用
continue;
}
}
return canUse;
}
@Override
public CandyMyCouponListVo preUseGoodCoupon(BigDecimal priceTotal, String goodId, String produceId) {
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.getGoodCouponUserVo(dtoItem, priceTotal, goodId, produceId);
if (dtoItem.getExclusive().equals(1)) { //会员券
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 vo;
}
@Override
public Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodId, String produceId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, produceId);
if (baseVo.getState().equals(1)) { //可用
canUse = 1;
break;
} else {//不可用
continue;
}
}
return canUse;
}
@Override
public List<CandyCouponVo> myAdvanceCoupon() {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getBusiType().equals(3)) {
CandyCouponVo baseVo = CouponBaseUtil.getBaseCouponUserVo(dtoItem);
if (baseVo.getState().equals(1)) {
advanceCoupon.add(baseVo);
} else {
continue;
}
} else {
continue;
}
}
return advanceCoupon;
}
@Override
public Integer stateCoupon(String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dto == null) {
return null;//券不存在
}
return CouponBaseUtil.getCouponState(LocalDateTime.now(), dto.getExpireAt(), dto.getState());
}
@Override
public CandyUseResultVo useCoupon(String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
CandyUseResultVo vo = CandyUseResultVo.getNew();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
return null;
} else {
redisDataUtils.setCouponByUid(uid, dtoList);
}
CandyUserCouponBasicDto dto = CouponBaseUtil.getSingleDtoByUCouponId(redisDataUtils.getCouponByUid(uid), uCouponId);
switch (dto.getCouType()){//券类型[1-代金券|2-满减券|3-兑换券|4-折扣券]
case 1:
vo.setValue(dto.getValFace());
break;
case 2:
vo.setValue(dto.getValMinus());
break;
case 3:
vo.setValue(BigDecimal.valueOf(-1));
break;
case 4:
vo.setValue(dto.getDiscount());
break;
default:
vo.setValue(BigDecimal.valueOf(0));
break;
}
vo.setCouType(dto.getCouType());
return vo;
}
@Override
public Boolean useBackCoupon(String uCouponId) {
String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.backCoupon(redisDataUtils.getCouponByUid(uid), uCouponId);
if (dtoList == null) {
return false;
} else {
redisDataUtils.setCouponByUid(uid, dtoList);
}
return true;
}
@Override
public Boolean receiveCoupon(String ccode) {
String uid = CurrentUtil.getCurrentUid();
Boolean result = CouponBaseUtil.receiveCoupon(uid, ccode);
if (result) {
} else {
return false;
}
return 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