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; } 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); } 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()); } }; } } 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); } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/query/TChargingCountQuery.java
New file @@ -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; } 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()); } }; } } 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); } 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); } 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; } 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) { 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); } 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({