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

Commit 583fb8ad authored by 胡佳晨's avatar 胡佳晨

修改下单接口

券 使用接口
券 提前下单接口
parent 4c118c46
...@@ -25,7 +25,7 @@ public interface ICandyCouponService { ...@@ -25,7 +25,7 @@ public interface ICandyCouponService {
List<CandyCouponVo> memberCoupon(String mCouponId); List<CandyCouponVo> memberCoupon(String mCouponId);
CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId,Integer type); CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId, Integer type);
Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId); Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId);
...@@ -33,11 +33,11 @@ public interface ICandyCouponService { ...@@ -33,11 +33,11 @@ public interface ICandyCouponService {
Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodI); Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodI);
List<CandyCouponVo> myAdvanceCoupon(); List<CandyCouponVo> myAdvanceCoupon(String performanceId, String timesId, String ticketId);
Integer stateCoupon(String uCouponId); Integer stateCoupon(String uCouponId);
CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice); CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice, String performanceId, String timesId, String ticketId, String goodIds);
Boolean useBackCoupon(List<BackCouponParam> backCouponParam); Boolean useBackCoupon(List<BackCouponParam> backCouponParam);
......
...@@ -129,8 +129,15 @@ public class CandyCouponController { ...@@ -129,8 +129,15 @@ public class CandyCouponController {
//要使用券列表 - 演出提前 //要使用券列表 - 演出提前
@GetMapping("my/advance") @GetMapping("my/advance")
@ApiOperation("提前券列表") @ApiOperation("提前券列表")
public ResponseDto<List<CandyCouponVo>> myAdvanceCoupon() { @ApiImplicitParams({
return ResponseDto.success(candyCouponService.myAdvanceCoupon()); @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<List<CandyCouponVo>> myAdvanceCoupon(@RequestParam("performanceId") @NotNull @NotBlank String performanceId,
@RequestParam("timeId") @NotNull @NotBlank String timeId,
@RequestParam("ticketId") @NotNull @NotBlank String ticketId) {
return ResponseDto.success(candyCouponService.myAdvanceCoupon(performanceId, timeId, ticketId));
} }
//判断券是否可用 //判断券是否可用
...@@ -156,11 +163,22 @@ public class CandyCouponController { ...@@ -156,11 +163,22 @@ public class CandyCouponController {
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true), @ApiImplicitParam(type = "form", dataType = "String", name = "uCouponId", value = "券唯一表示id", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "content", value = "消费内容", required = true), @ApiImplicitParam(type = "form", dataType = "String", name = "content", value = "消费内容", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "totalPrice", value = "消费价格", required = true), @ApiImplicitParam(type = "form", dataType = "String", name = "totalPrice", value = "消费价格", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "goodId", value = "商品id(逗号隔开的字符串)", required = true),
@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<CandyUseResultVo> useCoupon(@RequestParam("uCouponId") @NotNull @NotBlank String uCouponId, public ResponseDto<CandyUseResultVo> useCoupon(@RequestParam("uCouponId") @NotNull @NotBlank String uCouponId,
@RequestParam("content") @NotNull @NotBlank String content, @RequestParam("content") @NotNull @NotBlank String content,
@RequestParam("totalPrice") @NotNull String totalPrice) { @RequestParam("totalPrice") @NotNull String totalPrice,
CandyUseResultVo result = candyCouponService.useCoupon(uCouponId, content, totalPrice);
@RequestParam("goodId") @NotNull @NotBlank String goodId,
@RequestParam("performanceId") @NotNull @NotBlank String performanceId,
@RequestParam("timeId") @NotNull @NotBlank String timeId,
@RequestParam("ticketId") @NotNull @NotBlank String ticketId
) {
CandyUseResultVo result = candyCouponService.useCoupon(uCouponId, content, totalPrice, performanceId, ticketId, timeId, goodId);
if (result == null) { if (result == null) {
return ResponseDto.failure(); return ResponseDto.failure();
} }
......
...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -8,6 +8,7 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.dto.CandyCouponCodeDto; import com.liquidnet.service.candy.dto.CandyCouponCodeDto;
import com.liquidnet.service.candy.dto.CandyCouponInfoDto; import com.liquidnet.service.candy.dto.CandyCouponInfoDto;
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.param.BackCouponParam; import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.candy.service.ICandyCouponService; import com.liquidnet.service.candy.service.ICandyCouponService;
...@@ -163,7 +164,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -163,7 +164,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
continue; continue;
} }
} }
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId); CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId,dtoList.size());
if (dtoItem.getExclusive().equals(1)) { //会员券 if (dtoItem.getExclusive().equals(1)) { //会员券
memberCoupon.add(baseVo); memberCoupon.add(baseVo);
} else {//非会员券 } else {//非会员券
...@@ -185,7 +186,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -185,7 +186,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
int canUse = 0; int canUse = 0;
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId); CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId,dtoList.size());
if (baseVo.getState().equals(1)) { //可用 if (baseVo.getState().equals(1)) { //可用
canUse = 1; canUse = 1;
break; break;
...@@ -197,13 +198,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -197,13 +198,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
} }
@Override @Override
public List<CandyCouponVo> myAdvanceCoupon() { public List<CandyCouponVo> myAdvanceCoupon(String performanceId, String timesId, String ticketId) {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid);
List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList(); List<CandyCouponVo> advanceCoupon = ObjectUtil.getCandyCouponVoArrayList();
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
if (dtoItem.getBusiType().equals(3)) { if (dtoItem.getBusiType().equals(3)) {
CandyCouponVo baseVo = CouponBaseUtil.getBaseCouponUserVo(dtoItem); CandyCouponVo baseVo = CouponBaseUtil.getPerformanceCouponUserVo(dtoItem, BigDecimal.ZERO, performanceId, timesId, ticketId);
if (baseVo.getState().equals(1)) { if (baseVo.getState().equals(1)) {
advanceCoupon.add(baseVo); advanceCoupon.add(baseVo);
} else { } else {
...@@ -227,7 +228,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -227,7 +228,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
} }
@Override @Override
public CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice) { public CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice, String performanceId, String timesId, String ticketId, String goodId) {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
CandyUseResultVo vo = CandyUseResultVo.getNew(); CandyUseResultVo vo = CandyUseResultVo.getNew();
List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId, content); List<CandyUserCouponBasicDto> dtoList = CouponBaseUtil.useCoupon(redisDataUtils.getCouponByUid(uid), uCouponId, content);
...@@ -264,6 +265,36 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -264,6 +265,36 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
vo.setValue(BigDecimal.valueOf(0)); vo.setValue(BigDecimal.valueOf(0));
break; break;
} }
Boolean isTarget = false;
for (CandyCouponRuleDto ruleItem:dto.getUseRules()) {
switch (ruleItem.getUseScope()) {
case 80://商品
isTarget = CouponBaseUtil.isTargetCoupon(ruleItem.getBusiId(), dto.getCouType(), goodId, new BigDecimal(totalPrice), dto.getValOver());
break;
case 90://演出
isTarget = CouponBaseUtil.isTargetCoupon(ruleItem.getBusiId(), dto.getCouType(), performanceId, new BigDecimal(totalPrice), dto.getValOver());
break;
case 91://场次
isTarget = CouponBaseUtil.isTargetCoupon(ruleItem.getBusiId(), dto.getCouType(), timesId, new BigDecimal(totalPrice), dto.getValOver());
break;
case 92://票
isTarget = CouponBaseUtil.isTargetCoupon(ruleItem.getBusiId(), dto.getCouType(), ticketId, new BigDecimal(totalPrice), dto.getValOver());
break;
default:
isTarget = false;
break;
}
if (dto.getUseRules().size() > 1 && dto.getCouType().equals(4)) {
isTarget = false;
}
}
if(!isTarget){
vo.setCouType(-1);
vo.setValue(BigDecimal.ZERO);
}
if (vo.getCouType() != -1) { if (vo.getCouType() != -1) {
redisDataUtils.setCouponByUid(uid, dtoList); redisDataUtils.setCouponByUid(uid, dtoList);
//入库 //入库
......
...@@ -109,6 +109,9 @@ public class CouponBaseUtil { ...@@ -109,6 +109,9 @@ public class CouponBaseUtil {
isTarget = false; isTarget = false;
break; break;
} }
if (dtoItem.getUseRules().size() > 1 && dtoItem.getCouType().equals(4)) {
isTarget = false;
}
} }
} }
//券类别 //券类别
...@@ -135,7 +138,8 @@ public class CouponBaseUtil { ...@@ -135,7 +138,8 @@ public class CouponBaseUtil {
*/ */
public static CandyCouponVo getGoodCouponUserVo(CandyUserCouponBasicDto dtoItem, public static CandyCouponVo getGoodCouponUserVo(CandyUserCouponBasicDto dtoItem,
BigDecimal priceTotal, BigDecimal priceTotal,
String goodId) { String goodId,
Integer size) {
boolean isTarget = false; boolean isTarget = false;
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
CandyCouponVo vo = CandyCouponVo.getNew(); CandyCouponVo vo = CandyCouponVo.getNew();
...@@ -172,6 +176,9 @@ public class CouponBaseUtil { ...@@ -172,6 +176,9 @@ public class CouponBaseUtil {
isTarget = false; isTarget = false;
break; break;
} }
if (size > 1 && dtoItem.getCouType().equals(4)) {
isTarget = false;
}
} }
} }
//券类别 //券类别
...@@ -181,6 +188,7 @@ public class CouponBaseUtil { ...@@ -181,6 +188,7 @@ public class CouponBaseUtil {
vo.setCouType(dtoItem.getCouType()); vo.setCouType(dtoItem.getCouType());
} }
int state = getCouponState(now, dtoItem.getExpireAt(), dtoItem.getEffectAt(), dtoItem.getState()); int state = getCouponState(now, dtoItem.getExpireAt(), dtoItem.getEffectAt(), dtoItem.getState());
if (isTarget) { if (isTarget) {
vo.setState(state); vo.setState(state);
} else { } else {
...@@ -230,7 +238,7 @@ public class CouponBaseUtil { ...@@ -230,7 +238,7 @@ public class CouponBaseUtil {
if (state.equals(1)) { if (state.equals(1)) {
if (currentTime.isAfter(expireAt)) { if (currentTime.isAfter(expireAt)) {
data = 3; data = 3;
}else if (currentTime.isBefore(effectAt)) { } else if (currentTime.isBefore(effectAt)) {
data = 31; data = 31;
} else { } else {
data = state; data = state;
......
...@@ -178,7 +178,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -178,7 +178,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
//通用判断时间 //通用判断时间
if (payOrderParam.getAdvanceCode() != null) { if (payOrderParam.getAdvanceCode() != null) {
advanceMap = orderUtils.useCoupon(payOrderParam.getAdvanceCode(), "", BigDecimal.ZERO); advanceMap = orderUtils.useCoupon(payOrderParam.getAdvanceCode(), "", BigDecimal.ZERO,payOrderParam.getPerformanceId(),payOrderParam.getTimeId(),payOrderParam.getTicketId());
Integer typeVoucher = (Integer) advanceMap.get("type"); Integer typeVoucher = (Integer) advanceMap.get("type");
if (typeVoucher.equals(-1)) { if (typeVoucher.equals(-1)) {
throw new Exception("券不可用"); throw new Exception("券不可用");
...@@ -351,7 +351,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -351,7 +351,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
} }
if (payOrderParam.getVoucherCode() != null) { if (payOrderParam.getVoucherCode() != null) {
HashMap<String, Object> hashMap = orderUtils.useCoupon(payOrderParam.getVoucherCode(), content, orderTickets.getPriceTotal()); HashMap<String, Object> hashMap = orderUtils.useCoupon(payOrderParam.getVoucherCode(), content, orderTickets.getPriceTotal(),payOrderParam.getPerformanceId(),payOrderParam.getTimeId(),payOrderParam.getTicketId());
BigDecimal priceVoucher = (BigDecimal) hashMap.get("voucher"); BigDecimal priceVoucher = (BigDecimal) hashMap.get("voucher");
Integer typeVoucher = (Integer) hashMap.get("type"); Integer typeVoucher = (Integer) hashMap.get("type");
if (typeVoucher.equals(-1)) { if (typeVoucher.equals(-1)) {
......
...@@ -180,12 +180,17 @@ public class OrderUtils { ...@@ -180,12 +180,17 @@ public class OrderUtils {
* @param totalPrice 订单总价 * @param totalPrice 订单总价
* @return * @return
*/ */
public HashMap<String, Object> useCoupon(String uCouponId, String content, BigDecimal totalPrice) { public HashMap<String, Object> useCoupon(String uCouponId, String content, BigDecimal totalPrice,String performanceId,String timesId,String ticketId) {
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("uCouponId", uCouponId); params.add("uCouponId", uCouponId);
params.add("content", content); params.add("content", content);
params.add("totalPrice", totalPrice.toString()); params.add("totalPrice", totalPrice.toString());
params.add("goodId", "-1");
params.add("performanceId", performanceId);
params.add("timeId", timesId);
params.add("ticketId", ticketId);
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString(); MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Authorization", "Bearer " + CurrentUtil.getToken()); header.add("Authorization", "Bearer " + CurrentUtil.getToken());
......
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