diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/act/controller/H5CouponController.java b/ruoyi-mall/src/main/java/com/cyl/manager/act/controller/H5CouponController.java new file mode 100644 index 0000000..c7611a4 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/act/controller/H5CouponController.java @@ -0,0 +1,40 @@ +package com.cyl.manager.act.controller; + +import com.cyl.manager.act.domain.entity.CouponActivity; +import com.cyl.manager.act.domain.entity.IntegralHistory; +import com.cyl.manager.act.domain.query.CouponActivityQuery; +import com.cyl.manager.act.domain.query.IntegralHistoryQuery; +import com.cyl.manager.act.domain.vo.CouponActivityVO; +import com.cyl.manager.act.service.CouponActivityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(description = "优惠券接口列表") +@RestController +@RequestMapping("/h5/coupon") +public class H5CouponController { + + @Autowired + private CouponActivityService couponActivityService; + + @ApiOperation("优惠券活动列表") + @PostMapping("/activity/list") + public ResponseEntity> list(Pageable page) { + //获取所有未过期且运行中的活动 + return ResponseEntity.ok(couponActivityService.selectListByH5(page)); + } + + @GetMapping("/activity/get") + public ResponseEntity getDetail(Long id) { + CouponActivity detail = couponActivityService.getDetail(id); + return ResponseEntity.ok(detail); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/act/domain/vo/CouponActivityVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/act/domain/vo/CouponActivityVO.java index 0ebd274..2734339 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/act/domain/vo/CouponActivityVO.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/act/domain/vo/CouponActivityVO.java @@ -93,5 +93,11 @@ public class CouponActivityVO { private List productList; + //使用的张数 private Integer useCount; + + private Boolean canGet; + + //获取的张数 + private Integer getCount; } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/act/mapper/MemberCouponMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/act/mapper/MemberCouponMapper.java index fe2d5bb..c9b8a87 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/act/mapper/MemberCouponMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/act/mapper/MemberCouponMapper.java @@ -2,6 +2,7 @@ package com.cyl.manager.act.mapper; import java.util.Collection; import java.util.List; +import java.util.Set; import java.util.stream.Stream; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -24,4 +25,6 @@ public interface MemberCouponMapper extends BaseMapper { List selectByEntity(MemberCoupon memberCoupon); List countUseCoupon(@Param("couponIds") Collection couponIds); + + List countGetCoupon(@Param("couponIds") Set ids, @Param("memberId") Long memberId); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/act/service/CouponActivityService.java b/ruoyi-mall/src/main/java/com/cyl/manager/act/service/CouponActivityService.java index c63226d..8ea6f29 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/act/service/CouponActivityService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/act/service/CouponActivityService.java @@ -7,6 +7,7 @@ import java.util.stream.Collectors; import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.cyl.h5.config.SecurityUtil; import com.cyl.manager.act.domain.entity.MemberCoupon; import com.cyl.manager.act.domain.vo.CouponActivityVO; import com.cyl.manager.act.mapper.MemberCouponMapper; @@ -87,14 +88,14 @@ public class CouponActivityService { //查找商品列表 Map productMap = new HashMap<>(); if (productIds.size() > 0) { - productMap = productMapper.selectBatchIds(productIds).stream().collect(Collectors.toMap(it->it.getId(),it->it)); + productMap = productMapper.selectBatchIds(productIds).stream().collect(Collectors.toMap(it -> it.getId(), it -> it)); } for (CouponActivity couponActivity : list) { CouponActivityVO vo = new CouponActivityVO(); - BeanUtils.copyProperties(couponActivity,vo); + BeanUtils.copyProperties(couponActivity, vo); Integer integer = useCountMap.get(couponActivity.getId()); vo.setUseCount(integer == null ? 0 : integer); - if (Arrays.asList(2, 3).contains(couponActivity.getUseScope()) && StringUtils.isNotEmpty(couponActivity.getProductIds())){ + if (Arrays.asList(2, 3).contains(couponActivity.getUseScope()) && StringUtils.isNotEmpty(couponActivity.getProductIds())) { List products = new ArrayList<>(); for (String s : couponActivity.getProductIds().split(",")) { Product product = productMap.get(Long.parseLong(s)); @@ -109,6 +110,21 @@ public class CouponActivityService { return new PageImpl<>(resList, page, total); } + + public CouponActivity getDetail(Long id) { + return couponActivityMapper.selectById(id); +// if (couponActivity == null) { +// return null; +// } +// CouponActivityVO res = new CouponActivityVO(); +// BeanUtils.copyProperties(couponActivity,res); +// if (Arrays.asList(2, 3).contains(couponActivity.getUseScope()) && StringUtils.isNotEmpty(couponActivity.getProductIds())) { +// List products = productMapper.selectBatchIds(Arrays.stream(couponActivity.getProductIds().split(",")).map(item -> Long.parseLong(item)).collect(Collectors.toSet())); +// res.setProductList(products); +// } +// return res; + } + /** * 新增优惠券活动表 * @@ -129,7 +145,7 @@ public class CouponActivityService { */ public int update(CouponActivity couponActivity) { CouponActivity dbActivity = couponActivityMapper.selectById(couponActivity.getId()); - if (dbActivity==null) { + if (dbActivity == null) { return 0; } couponActivity.setLeftCount(dbActivity.getLeftCount()); @@ -146,4 +162,36 @@ public class CouponActivityService { public int deleteById(Long id) { return couponActivityMapper.deleteById(id); } + + public Page selectListByH5(Pageable page) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + QueryWrapper qw = new QueryWrapper<>(); + LocalDateTime now = LocalDateTime.now(); + qw.lt("begin_time", now) + .gt("end_time", now); + List list = couponActivityMapper.selectList(qw); + if (CollectionUtil.isEmpty(list)) { + return new PageImpl<>(Collections.emptyList(), page, 0); + } + long total = ((com.github.pagehelper.Page) list).getTotal(); + //看用户已领取的张数 + Set ids = list.stream().map(it -> it.getId()).collect(Collectors.toSet()); + Map countMap = memberCouponMapper.countGetCoupon(ids, SecurityUtil.getLocalMember().getId()).stream().collect(Collectors.toMap(it -> it.getId(), it -> it.getGetCount())); + List resList = new ArrayList<>(); + for (CouponActivity it : list) { + CouponActivityVO vo = new CouponActivityVO(); + BeanUtils.copyProperties(it, vo); + Integer integer = countMap.get(it.getId()); + if (integer == null || integer < it.getUserLimit()) { + vo.setGetCount(integer == null ? 0 : integer); + vo.setCanGet(true); + } else { + vo.setGetCount(integer); + vo.setCanGet(false); + } + resList.add(vo); + } + + return new PageImpl<>(resList, page, total); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/query/ProductQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/query/ProductQuery.java index 342ca39..06441f1 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/query/ProductQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/domain/query/ProductQuery.java @@ -75,4 +75,6 @@ public class ProductQuery { //排查的id private List excludeProductIds; + private List ids; + } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java index c570caf..6007056 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/pms/service/ProductService.java @@ -98,6 +98,9 @@ public class ProductService { if (CollectionUtil.isNotEmpty(query.getExcludeProductIds())) { qw.notIn("id",query.getExcludeProductIds()); } + if (CollectionUtil.isNotEmpty(query.getIds())) { + qw.in("id",query.getIds()); + } return productMapper.selectList(qw); } diff --git a/ruoyi-mall/src/main/resources/mapper/act/MemberCouponMapper.xml b/ruoyi-mall/src/main/resources/mapper/act/MemberCouponMapper.xml index 9cd8a5a..859511d 100644 --- a/ruoyi-mall/src/main/resources/mapper/act/MemberCouponMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/act/MemberCouponMapper.xml @@ -56,4 +56,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and use_status = 1 group by coupon_activity_id +