From a146097a15d719c60af3cdeb4de1f21aa7b5ca8d Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 20 九月 2024 10:47:53 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 167 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 145 insertions(+), 22 deletions(-) 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 c95557e..56842b3 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 @@ -1,20 +1,26 @@ package com.ruoyi.account.controller; +import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.account.api.dto.CouponListDto; import com.ruoyi.account.api.dto.GrantCouponDto; import com.ruoyi.account.api.model.TAppCoupon; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.account.api.model.TAppUserTag; import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; -import com.ruoyi.account.api.vo.CarListVO; -import com.ruoyi.account.api.vo.CouponListVOVO; +import com.ruoyi.account.service.TAppUserService; +import com.ruoyi.account.service.TAppUserTagService; +import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; +import com.ruoyi.chargingPile.api.model.TChargingGun; +import com.ruoyi.chargingPile.api.model.TChargingPile; +import com.ruoyi.other.api.vo.CouponListVOVO; import com.ruoyi.account.api.vo.ExchangeRecordVO; import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; -import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; @@ -26,12 +32,18 @@ import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import java.math.BigDecimal; +import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -46,23 +58,60 @@ public class TAppCouponController { @Autowired private TAppCouponService tAppCouponService; + @Resource + private OtherClient otherClient; @Autowired private TAppUserCarService appUserCarService; @Autowired private TokenService tokenService; - @Autowired + @Resource private ChargingPileClient chargingPileClient; - @Autowired + @Resource private ChargingOrderClient chargingOrderClient; + @Resource + private ChargingGunClient chargingGunClient; + + @Autowired + private TAppUserTagService appUserTagService; + @Autowired + private TAppUserService appUserService; + + + /** + * 后台退款 回退优惠券使用状态 + * @return + */ + @PostMapping(value = "/refund/{id}") + public R refund(@PathVariable("id") String id) { + TAppCoupon byId = tAppCouponService.getById(id); + byId.setStatus(1); + tAppCouponService.updateById(byId); + return R.ok(); + } + /** + * 小程序扫一扫 添加车辆 + * @param dto + * @return + */ + @ApiOperation(value = "添加车辆", tags = {"小程序-扫一扫"}) + @PostMapping(value = "/scan/addCar") + public AjaxResult addCar(@RequestBody TAppUserCar dto) { + dto.setAppUserId(tokenService.getLoginUserApplet().getUserId()); + appUserCarService.save(dto); + return AjaxResult.success(); + } /** * 查询用户可用优惠券数量 * @return */ - @ApiOperation(value = "通过桩编号获取电站详情", tags = {"小程序-扫一扫"}) + @ApiOperation(value = "通过充电枪id和预付金额获取电站详情", tags = {"小程序-扫一扫"}) @GetMapping(value = "/scan/siteInfo") - public AjaxResult<SiteInfoVO> siteInfo(String number) { - SiteInfoVO data = chargingPileClient.getSiteInfoByNumber(number).getData(); + public AjaxResult<SiteInfoVO> siteInfo(Integer id, BigDecimal money) { + TChargingGun chargingGun = chargingGunClient.getChargingGunById(id).getData(); + TChargingPile chargingPile = chargingPileClient.getChargingPileById(chargingGun.getChargingPileId()).getData(); + SiteInfoVO data = chargingPileClient.getSiteInfoByNumber(chargingPile.getNumber().toString()).getData(); + data.setChargingGunId(id); List<TAppUserCar> cars = appUserCarService.list(new QueryWrapper<TAppUserCar>() .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()) .orderByDesc("create_time")); @@ -83,6 +132,15 @@ } } } + BigDecimal electrovalence = data.getElectrovalence(); + BigDecimal vipElectrovalence = data.getVipElectrovalence(); + // 计算预付金额能充多少度普通电 + BigDecimal divide1 = money.divide(electrovalence, 2, BigDecimal.ROUND_HALF_UP); + // 计算冲会员电能充多少度会员电 + BigDecimal divide = vipElectrovalence.divide(electrovalence, 2, BigDecimal.ROUND_HALF_UP); + BigDecimal subtract = divide.subtract(divide1); + // 优惠金额 + data.setMoney(subtract.multiply(vipElectrovalence).setScale(2, BigDecimal.ROUND_HALF_UP)); return AjaxResult.ok(data); } /** @@ -112,8 +170,8 @@ * 管理后台远程调用 根据优惠券ids 查询对应的发放数量 * @return 优惠券ids 查询每个优惠券的发放数量 */ - @PostMapping("/getCountByCouponIds") - public R<List<Integer>> getCountByCouponIds(@RequestParam("couponIds") String couponIds) { + @PostMapping("/getCountByCouponIds/{couponIds}") + public R<List<Integer>> getCountByCouponIds(@PathVariable("couponIds")String couponIds) { // 最终结果 和优惠券id一一对应 List<Integer> res = new ArrayList<>(); String[] split = couponIds.split(","); @@ -132,8 +190,8 @@ * @param couponId * @return */ - @PostMapping("/getUseCountByCouponId") - public R<Integer> getUseCountByCouponId(Integer couponId){ + @PostMapping("/getUseCountByCouponId/{couponId}") + public R<Integer> getUseCountByCouponId(@PathVariable("couponId") Integer couponId){ return R.ok(tAppCouponService.list(new QueryWrapper<TAppCoupon>() .eq("coupon_id", couponId) .eq("status",2)).size()); @@ -144,9 +202,18 @@ * @return */ @PostMapping("/getExchangeRecordByCouponId") - public R<PageInfo<ExchangeRecordVO>> getExchangeRecordByCouponId(@RequestBody ExchangeRecordGoodsQuery couponId){ + public R<List<ExchangeRecordVO>> getExchangeRecordByCouponId(@RequestBody ExchangeRecordGoodsQuery couponId){ return R.ok(tAppCouponService.pagelist(couponId)); } + + @ApiOperation(value = "优惠卷可用数量", tags = {"小程序-站点管理-站点详情"}) + @GetMapping(value = "/couponCount") + public R<Long> couponCount() { + LocalDateTime now = LocalDateTime.now(); + return R.ok(tAppCouponService.lambdaQuery().le(TAppCoupon::getStartTime, now).ge(TAppCoupon::getEndTime, now).eq(TAppCoupon::getStatus, 1).count()); + } + + /** * 后台远程调用 给用户发放优惠券 @@ -154,17 +221,73 @@ @PostMapping("/grantCoupon") public R grantCoupon(@RequestBody GrantCouponDto dto){ List<TAppCoupon> res = new ArrayList<>(); - for (String s : dto.getUserIds().split(",")) { - TAppCoupon tAppCoupon = new TAppCoupon(); - tAppCoupon.setAppUserId(Long.valueOf(s)); - tAppCoupon.setCouponId(dto.getCouponId()); - tAppCoupon.setEndTime(dto.getEndTime()); - tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); - tAppCoupon.setStatus(1); - res.add(tAppCoupon); + TCoupon coupon = otherClient.getCouponById(dto.getCouponId()).getData(); + + switch (dto.getType()){ + case 1: + // 根据标签ids 查询用户ids + List<Long> collect = appUserTagService.list(new QueryWrapper<TAppUserTag>() + .in("user_tag_id", Arrays.asList(dto.getTags().split(",")))) + .stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList()); + for (Long l : collect) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(l); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; + case 2: + // 根据市codes 查询用户ids + List<Long> collect1 = appUserService.list(new QueryWrapper<TAppUser>() + .in("city_code", Arrays.asList(dto.getCityCode().split(",")))) + .stream().map(TAppUser::getId).collect(Collectors.toList()); + for (Long l : collect1) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(l); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; + case 3: + for (String s : dto.getUserIds().split(",")) { + TAppCoupon tAppCoupon = new TAppCoupon(); + tAppCoupon.setAppUserId(Long.valueOf(s)); + tAppCoupon.setCouponId(dto.getCouponId()); + tAppCoupon.setEndTime(dto.getEndTime()); + tAppCoupon.setWaysToObtain(dto.getWaysToObtain()); + tAppCoupon.setStatus(1); + tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); + res.add(tAppCoupon); + } + tAppCouponService.saveBatch(res); + break; } - tAppCouponService.saveBatch(res); + + + return R.ok(); } + + + /** + * 根据id获取优惠券领取记录 + * @param id + * @return + */ + @PostMapping("/getAppCouponById") + public R<TAppCoupon> getAppCouponById(@RequestParam("id") Long id){ + TAppCoupon appCoupon = tAppCouponService.getById(id); + return R.ok(appCoupon); + } } -- Gitblit v1.7.1