src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsCouponConversion.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
src/main/java/cc/mrbird/febs/mall/vo/ApiCouponVo.java | ●●●●● patch | view | raw | blame | history |
src/main/java/cc/mrbird/febs/mall/controller/ApiMallActController.java
@@ -1,8 +1,11 @@ package cc.mrbird.febs.mall.controller; import cc.mrbird.febs.common.annotation.Limit; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.entity.LimitType; import cc.mrbird.febs.mall.service.IApiMallActService; import cc.mrbird.febs.mall.vo.ApiActivityVo; import cc.mrbird.febs.mall.vo.ApiCouponVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -26,9 +29,23 @@ @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiActivityVo.class) }) @GetMapping(value = "/getActiy/{id}") @GetMapping(value = "/getActivity/{id}") public FebsResponse getActivity(@PathVariable("id") Long id) { return new FebsResponse().success().data(iApiMallActService.findApiMallActDetailsById(id)); } @ApiOperation(value = "优惠卷详情", notes = "优惠卷详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiCouponVo.class) }) @GetMapping(value = "/getCoupon/{id}") public FebsResponse getCoupon(@PathVariable("id") Long id) { return new FebsResponse().success().data(iApiMallActService.findApiCouponById(id)); } @ApiOperation(value = "领取优惠卷", notes = "领取优惠卷") @GetMapping(value = "/addCoupon/{id}") @Limit(key = "addCoupon", period = 10, count = 1, name = "领取优惠卷", prefix = "limit",limitType = LimitType.IP) public FebsResponse addCoupon(@PathVariable("id") Long id) { return iApiMallActService.addCoupon(id); } } src/main/java/cc/mrbird/febs/mall/conversion/MallGoodsCouponConversion.java
New file @@ -0,0 +1,17 @@ package cc.mrbird.febs.mall.conversion; import cc.mrbird.febs.mall.entity.MallGoodsCoupon; import cc.mrbird.febs.mall.vo.ApiCouponVo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; /** * @author wzy * @date 2021-09-18 **/ @Mapper public abstract class MallGoodsCouponConversion { public static final MallGoodsCouponConversion INSTANCE = Mappers.getMapper(MallGoodsCouponConversion.class); public abstract ApiCouponVo entityToApiCouponVo(MallGoodsCoupon mallGoodsCoupon); } src/main/java/cc/mrbird/febs/mall/service/IApiMallActService.java
@@ -1,11 +1,9 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.ApiMallActListDto; import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto; import cc.mrbird.febs.mall.vo.ApiActivityVo; import cc.mrbird.febs.mall.vo.ApiMallActListVo; import cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo; import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo; import cc.mrbird.febs.mall.vo.*; import com.baomidou.mybatisplus.core.metadata.IPage; public interface IApiMallActService { @@ -17,4 +15,8 @@ IPage<ApiMallActWinDetailsVo> findApiMallActWinDetailsInPage(ApiMallActWinDetailsDto apiMallActWinDetailsDto); ApiMallAwardDetailsVo luckDraw(long actId); ApiCouponVo findApiCouponById(Long id); FebsResponse addCoupon(Long id); } src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java
@@ -1,11 +1,13 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.conversion.MallActivityConversion; import cc.mrbird.febs.mall.conversion.MallGoodsCouponConversion; import cc.mrbird.febs.mall.dto.ApiMallActListDto; import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto; import cc.mrbird.febs.mall.entity.*; @@ -13,13 +15,13 @@ import cc.mrbird.febs.mall.service.IApiMallActService; import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; import cc.mrbird.febs.mall.service.IMallMoneyFlowService; import cc.mrbird.febs.mall.vo.ApiActivityVo; import cc.mrbird.febs.mall.vo.ApiMallActListVo; import cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo; import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo; import cc.mrbird.febs.mall.vo.*; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.RandomUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -46,6 +48,8 @@ private final IMallMoneyFlowService mallMoneyFlowService; private final IApiMallMemberWalletService mallMemberWalletService; private final MallActivityMapper mallActivityMapper; private final MallGoodsCouponMapper mallGoodsCouponMapper; private final MallMemberCouponMapper mallMemberCouponMapper; @Override public IPage<ApiMallActListVo> findApiMallActListInPage(ApiMallActListDto apiMallActListDto) { @@ -552,5 +556,52 @@ return apiMallAwardDetailsVo; } @Override public ApiCouponVo findApiCouponById(Long id) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(id); ApiCouponVo apiCouponVo = MallGoodsCouponConversion.INSTANCE.entityToApiCouponVo(mallGoodsCoupon); List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectList( new LambdaQueryWrapper<MallMemberCoupon>() .eq(MallMemberCoupon::getMemberId, memberId) .eq(MallMemberCoupon::getCouponId, id) ); if(CollUtil.isNotEmpty(mallMemberCoupons)){ apiCouponVo.setState(1); }else{ apiCouponVo.setState(0); } return apiCouponVo; } @Override public FebsResponse addCoupon(Long couponId) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); if(mallGoodsCoupon.getState() == 2){ List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectList( new LambdaQueryWrapper<MallMemberCoupon>() .eq(MallMemberCoupon::getMemberId, memberId) .eq(MallMemberCoupon::getCouponId, couponId) ); if(CollUtil.isNotEmpty(mallMemberCoupons)){ return new FebsResponse().fail().message("优惠卷已领取,请刷新当前页面"); } MallMemberCoupon memberCoupon = new MallMemberCoupon(); memberCoupon.setMemberId(memberId); memberCoupon.setCouponId(couponId); memberCoupon.setCouponName(mallGoodsCoupon.getName()); memberCoupon.setCouponUuid(IdUtil.simpleUUID()); memberCoupon.setState(1); memberCoupon.setFromType(1); memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), mallGoodsCoupon.getExpireDay())); mallMemberCouponMapper.insert(memberCoupon); return new FebsResponse().success().message("操作成功"); } return new FebsResponse().fail().message("优惠卷已失效,请刷新当前页面"); } } src/main/java/cc/mrbird/febs/mall/vo/ApiCouponVo.java
New file @@ -0,0 +1,25 @@ package cc.mrbird.febs.mall.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data @ApiModel(value = "ApiCouponVo", description = "信息返回类") public class ApiCouponVo { @ApiModelProperty(value = "名称") private String name; @ApiModelProperty(value = "过期天数") private Integer expireDay; @ApiModelProperty(value = "类型 1:满100只减10 2:每满100减10") private Integer type; @ApiModelProperty(value = "1:已领取 0:未领取") private Integer state; @ApiModelProperty(value = "满足金额") private BigDecimal costAmount; @ApiModelProperty(value = "减免金额") private BigDecimal realAmount; }