From d8150effd61b8c22eea031de7789ecd610435b3b Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 14 八月 2024 10:16:36 +0800 Subject: [PATCH] 小程序扫一扫选择优惠券 --- ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java | 2 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java | 6 ++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java | 9 ++ ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 10 +++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java | 61 ++++++++++++++++++++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java | 1 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 4 - ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java | 10 +++ ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java | 5 + ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java | 23 ------- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java | 21 +++++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 21 +++++- 12 files changed, 141 insertions(+), 32 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java index ca3ede2..28287eb 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/vo/CouponListVOVO.java @@ -38,4 +38,6 @@ private BigDecimal payMoney; @ApiModelProperty(value = "最高折扣金额 用于判断哪一张优惠券优惠力度最大 前端忽略") private BigDecimal money; + @ApiModelProperty(value = "当前用户是否为会员0否1是 前端忽略") + private Integer isVip; } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java index 024bd8a..7487856 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java @@ -25,4 +25,5 @@ @PostMapping(value = "/t-charging-pile/getChargingPileBySiteId") public R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId); + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java index 5ad039d..f29864d 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java @@ -3,6 +3,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.query.TChargingCountQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -33,6 +34,11 @@ public R<TChargingOrder> orderDetail(Long orderId) { return R.fail("订单详情:" + throwable.getMessage()); } + + @Override + public R<Integer> getChargingCount(TChargingCountQuery req) { + return R.fail("根据会员id和有效期查询有效期内享受充电折扣次数:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java index 6fcf8eb..3765568 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java @@ -4,8 +4,10 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.api.factory.ChargingOrderFallbackFactory; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.query.TChargingCountQuery; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; /** @@ -20,5 +22,11 @@ @PostMapping(value = "/t-charging-order/detail") R<TChargingOrder> orderDetail(@RequestParam Long orderId); - + /** + * 查询会员在本月有多少次享受了充电折扣 + * @param req + * @return + */ + @PostMapping(value = "/t-charging-order/getChargingCount") + public R<Integer> getChargingCount(@RequestBody TChargingCountQuery req); } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java new file mode 100644 index 0000000..d42d8fa --- /dev/null +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java @@ -0,0 +1,21 @@ +package com.ruoyi.order.api.query; + +import com.ruoyi.common.core.web.page.BasePage; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel(value = "查询用户在会员期 有多少次享用了充电折扣订单") +public class TChargingCountQuery { + @ApiModelProperty(value = "会员开始时间") + private LocalDateTime startTime; + @ApiModelProperty(value = "会员结束时间") + private LocalDateTime endTime; + @ApiModelProperty(value = "用户id") + private Long userId; + +} diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java index 0965d9a..a4e1f0a 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/VipFallbackFactory.java @@ -28,6 +28,11 @@ return R.fail("获取最高抵扣、最低起步价,最高折扣的会员失败:" + throwable.getMessage()); } + + @Override + public R<TVip> getInfo1(Integer id) { + return R.fail("根据会员id 获取会员信息:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java index b1a8126..305c332 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/VipClient.java @@ -5,6 +5,7 @@ import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.factory.VipFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -23,5 +24,11 @@ @PostMapping(value = "/vip/getVipInfoByType") R<TVip> getVipInfoByType(@RequestParam Integer type); - + /** + * 远程调用 + * @param id + * @return + */ + @PostMapping("/vip/getInfo1") + public R<TVip> getInfo1(@RequestParam("id") Integer id); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index bf67953..5f5f700 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -52,9 +52,7 @@ @ApiOperation(value = "选择优惠券分页查询", tags = {"小程序-扫一扫"}) @PostMapping(value = "/scan/couponList") public AjaxResult<PageInfo<CouponListVOVO>> couponList(@RequestBody CouponListDto dto) { - // todo token获取用户id - Long userId = 11L; - dto.setUserId(userId); + PageInfo<CouponListVOVO> res = tAppCouponService.couponList(dto); return AjaxResult.ok(res); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java index a821517..d7c6dcc 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java @@ -1,25 +1,38 @@ package com.ruoyi.account.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.model.TAppCoupon; +import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; import com.ruoyi.account.api.vo.CouponListVOVO; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.mapper.TAppCouponMapper; +import com.ruoyi.account.mapper.TAppUserMapper; import com.ruoyi.account.service.TAppCouponService; +import com.ruoyi.account.service.TAppUserVipDetailService; +import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.feignClient.OrderClient; +import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.other.api.domain.TCoupon; +import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; +import com.ruoyi.other.api.feignClient.VipClient; +import io.swagger.models.auth.In; import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.util.Date; import java.util.List; @@ -38,6 +51,15 @@ private OrderClient orderClient; @Autowired private OtherClient otherClient; + @Autowired + private VipClient vipClient; + @Autowired + private ChargingPileClient chargingPileClient; + @Autowired + private ChargingOrderClient chargingOrderClient; + @Autowired + private TAppUserVipDetailService tAppUserVipDetailService; + @Override public PageInfo<ExchangeRecordVO> pagelist(ExchangeRecordGoodsQuery dto) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -105,15 +127,54 @@ return pageInfo; } + + @Autowired + private TAppUserMapper tAppUserMapper; @Override public PageInfo<CouponListVOVO> couponList(CouponListDto dto) { + // todo token获取用户id + Long userId = 11L; + dto.setUserId(userId); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); PageInfo<CouponListVOVO> pageInfo = new PageInfo<>(dto.getPageCurr(),dto.getPageSize()); List<CouponListVOVO> list = this.baseMapper.couponList(pageInfo,dto.getUserId()); + TAppUser tAppUser = tAppUserMapper.selectById(dto.getUserId()); + Integer isVip = 0;// 是否能享受会员折扣 + if (tAppUser.getVipEndTime() == null){ + // 不是会员 + }else { + // 判断会员有没有过期 + if (tAppUser.getVipEndTime().isAfter(java.time.LocalDateTime.now())){ + // 没过期 判断用户本月会员充电折扣次数是否还有剩余 + TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.list(new LambdaQueryWrapper<TAppUserVipDetail>() + .orderByDesc(TAppUserVipDetail::getStartTime)).get(0); + LocalDateTime startTime = tAppUserVipDetail.getStartTime(); + LocalDateTime endTime = tAppUserVipDetail.getEndTime(); + TChargingCountQuery tChargingCountQuery = new TChargingCountQuery(); + tChargingCountQuery.setStartTime(startTime); + tChargingCountQuery.setEndTime(endTime); + tChargingCountQuery.setUserId(dto.getUserId()); + // 当月已享受会员折扣充电次数 + Integer data = chargingOrderClient.getChargingCount(tChargingCountQuery).getData(); + // 查询用户当前会员每月享受折扣次数和折扣比例是多少 + Integer vipId = tAppUser.getVipId(); + TVip data1 = vipClient.getInfo1(vipId).getData(); + Integer discountTimes = data1.getDiscountTimes(); + if (data>=discountTimes){ + // 不能再享受会员折扣 + }else{ + isVip = 1; + } + } + } for (CouponListVOVO couponListVOVO : list) { couponListVOVO.setValidityTime("有效期:"+format.format(couponListVOVO.getCreateTime())+" - "+format.format(couponListVOVO.getEndTime())); } List<CouponListVOVO> data = otherClient.getCouponInfoByCouponIds(list).getData(); + for (CouponListVOVO datum : data) { + // 根据当前时间段和预付金额计算服务费 + + } pageInfo.setRecords(data); return pageInfo; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 8d13b9d..f93fba8 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -1,14 +1,13 @@ package com.ruoyi.order.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.api.model.TChargingOrder; +import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.service.TChargingOrderService; import io.swagger.annotations.Api; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -27,6 +26,20 @@ @Resource private TChargingOrderService chargingOrderService; + + /** + * 查询会员在本月有多少次享受了充电折扣 + * @param req + * @return + */ + @PostMapping(value = "/getChargingCount") + public R<Integer> getChargingCount(@RequestBody TChargingCountQuery req) { + int size = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>() + .eq(TChargingOrder::getAppUserId, req.getUserId()) + .eq(TChargingOrder::getRechargePaymentStatus,2) + .between(TChargingOrder::getStartTime, req.getStartTime(), req.getEndTime())).size(); + return R.ok(size); + } //用户订单数量 @PostMapping(value = "/useOrderCount") public R<Long> useOrderCount(@RequestParam Long userId) { diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java index cbcd8b3..f2d803e 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java @@ -124,29 +124,6 @@ TCoupon byId = tCouponService.getById(couponListVOVO.getCouponId()); BeanUtils.copyProperties(byId,couponListVOVO); couponListVOVO.setCouponName(byId.getName()); - // 根据预付金额 判断是否满足 - if (byId.getMeetTheConditions().compareTo(BigDecimal.ZERO) == 0){ - // 无门槛 - couponListVOVO.setIsUse(1); - }else if (couponListVOVO.getPayMoney().compareTo(byId.getMeetTheConditions()) < 0){ - couponListVOVO.setIsUse(0); - }else{ - couponListVOVO.setIsUse(1); - } - // 根据优惠券类型和预付金额 判断哪一个优惠券减免的金额最大 将其排在第一位 - if (couponListVOVO.getIsUse() == 1){ - switch (byId.getPreferentialMode()){ - case 1: - couponListVOVO.setMoney(byId.getDiscountAmount()); - break; - case 2: - - break; - } - }else{ - couponListVOVO.setMoney(BigDecimal.ZERO); - } - } return R.ok(list); } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java index 6942f7e..69430e4 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java @@ -56,6 +56,16 @@ public AjaxResult<TVip> getInfo(Integer id) { return AjaxResult.ok(vipService.getById(id)); } + + /** + * 远程调用 + * @param id + * @return + */ + @PostMapping("/getInfo1") + public R<TVip> getInfo1(@RequestParam("id")Integer id) { + return R.ok(vipService.getById(id)); + } @ApiOperation(value = "会员列表分页查询") @PostMapping(value = "/pageList") @ApiImplicitParams({ -- Gitblit v1.7.1