package com.dsh.activity.controller; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.dsh.activity.entity.Coupon; import com.dsh.activity.entity.UserCoupon; import com.dsh.activity.feignclient.model.CouponStuAvailableVo; import com.dsh.activity.service.ICouponService; import com.dsh.activity.service.UserCouponService; import io.swagger.annotations.Api; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Api @CrossOrigin @RestController @RequestMapping("") public class UserConponController { @Autowired private UserCouponService uconService; @Autowired private ICouponService cService; private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); @PostMapping("/base/userConpon/getStuOfConpons") public List queryUserWithConponList(@RequestParam("appUserId") Integer appUserId){ List availableVos = new ArrayList<>(); List list = uconService.list(new QueryWrapper() .eq("userId", appUserId) .eq("status",1)); if (list.size() > 0){ List collect = list.stream().map(UserCoupon::getCouponId).collect(Collectors.toList()); List conponList = cService.list(new QueryWrapper() .in("id", collect)); for (Coupon coupon : conponList) { CouponStuAvailableVo availableVo = new CouponStuAvailableVo(); availableVo.setConponId(coupon.getId()); availableVo.setConponName(coupon.getName()); availableVo.setConponType(coupon.getType()); Map conponRuleMap = cService.queryConponRuleOfJson(coupon.getId()); switch (coupon.getType()){ case 1: Object conditionalAmount = conponRuleMap.get("conditionalAmount"); Object deductionAmount = conponRuleMap.get("deductionAmount"); availableVo.setConditionalAmount((double) conditionalAmount); availableVo.setAmount((double) deductionAmount); break; case 2: Object amount = conponRuleMap.get("deductionAmount"); availableVo.setAmount((double)amount); break; default: break; } availableVo.setLifespan(format.format(coupon.getEndTime())); availableVos.add(availableVo); } } return availableVos; } }