package com.ishop.mobile.api; import com.iplatform.base.Constants; import com.ishop.mobile.BaseApi; import com.ishop.mobile.pojo.CouponParam; import com.ishop.mobile.util.VoUtils; import com.ishop.model.po.EbCouponUser; import com.ishop.model.request.OrderUseCouponRequest; import com.ishop.model.response.CouponUserOrderResponse; import com.ishop.model.vo.CouponFrontVo; import com.ishop.model.vo.PreMerchantOrderVo; import com.ishop.model.vo.PreOrderDetailVo; import com.ishop.model.vo.PreOrderVo; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.StringUtils; import com.walker.web.ResponseValue; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @RestController @RequestMapping("/front/coupon") public class CouponApi extends BaseApi { @RequestMapping(value = "/page/list", method = RequestMethod.GET) public ResponseValue list(CouponParam param){ if(param == null){ return ResponseValue.error(Constants.ERROR_ARGUMENT); } if((param.getMerId() == null || param.getMerId().intValue() <=0) && (param.getProductId() == null || param.getProductId().longValue() <= 0)){ throw new IllegalArgumentException("商户ID与商品ID不能都为空"); } long userId = this.getCurrentUserId(); GenericPager pager = this.getCouponService().queryPageH5CouponList(userId, param.getCategory(), param.getMerId(), param.getProductId()); return ResponseValue.success(pager); } /** * 当前订单可用优惠券 * @return */ @RequestMapping(value = "/order/list", method = RequestMethod.GET) public ResponseValue getCouponsListByPreOrderNo(OrderUseCouponRequest request){ if(request == null || StringUtils.isEmpty(request.getPreOrderNo()) || request.getMerId() == null){ return ResponseValue.error("参数为空,无法获取订单优惠券信息"); } PreOrderVo preOrderVo = this.getPreOrderCache().get(request.getPreOrderNo()); if(preOrderVo == null){ return ResponseValue.error("预下单记录不存在"); } long userId = this.getCurrentUserId(); //产品id集合 List pidList = null; Double maxPrice = 0d; for (PreMerchantOrderVo merchantOrderVo : preOrderVo.getMerchantOrderVoList()) { if (merchantOrderVo.getMerId().equals(request.getMerId())) { pidList = merchantOrderVo.getOrderInfoList().stream().map(PreOrderDetailVo::getProductId).distinct().collect(Collectors.toList()); maxPrice = merchantOrderVo.getProTotalFee(); } } List data = new ArrayList<>(8); List list = this.getCouponUserService() .queryListByPreOrderNo(request.getPreOrderNo(), request.getMerId(), maxPrice, null, userId, pidList); if(!StringUtils.isEmptyList(list)){ for(EbCouponUser couponUser: list){ data.add(VoUtils.acquireCouponUserOrder(couponUser)); } } return ResponseValue.success(data); } }