| | |
| | | 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.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.common.core.domain.R; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | 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.other.api.domain.TCoupon; |
| | | import com.ruoyi.other.api.feignClient.OtherClient; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | 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.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | public class TAppCouponController { |
| | | @Autowired |
| | | private TAppCouponService tAppCouponService; |
| | | @Resource |
| | | private OtherClient otherClient; |
| | | |
| | | @Autowired |
| | | private TAppUserCarService appUserCarService; |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | @Autowired |
| | | private ChargingPileClient chargingPileClient; |
| | | @Autowired |
| | | private ChargingOrderClient chargingOrderClient; |
| | | |
| | | @Resource |
| | | private ChargingGunClient chargingGunClient; |
| | | |
| | | |
| | | /** |
| | | * 小程序扫一扫 添加车辆 |
| | | * @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 = "通过充电枪id和预付金额获取电站详情", tags = {"小程序-扫一扫"}) |
| | | @GetMapping(value = "/scan/siteInfo") |
| | | 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")); |
| | | Long data1 = chargingOrderClient.getCar().getData(); |
| | | if (!cars.isEmpty()){ |
| | | if (data1 == -1){ |
| | | // 没有充电订单 展示最新添加的车辆 |
| | | data.setLicensePlate(cars.get(0).getLicensePlate()); |
| | | data.setVehicleBrand(cars.get(0).getVehicleBrand()); |
| | | data.setId(cars.get(0).getId()); |
| | | }else{ |
| | | for (TAppUserCar car : cars) { |
| | | if (car.getId().equals(data1)){ |
| | | data.setLicensePlate(car.getLicensePlate()); |
| | | data.setVehicleBrand(car.getVehicleBrand()); |
| | | data.setId(car.getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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); |
| | | } |
| | | /** |
| | | * 查询用户可用优惠券数量 |
| | | * @param dto |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "选择优惠券分页查询", tags = {"小程序-扫一扫"}) |
| | | @PostMapping(value = "/scan/couponList") |
| | | public AjaxResult<PageInfo<CouponListVOVO>> couponList(@RequestBody CouponListDto dto) { |
| | | PageInfo<CouponListVOVO> res = tAppCouponService.couponList(dto); |
| | | return AjaxResult.ok(res); |
| | | } |
| | | /** |
| | | * 选择车辆列表 远程调用 |
| | | * @return |
| | | */ |
| | | @ApiOperation(value = "选择车辆列表", tags = {"小程序-扫一扫"}) |
| | | @PostMapping(value = "/scan/carList") |
| | | public R<List<TAppUserCar>> carList() { |
| | | List<TAppUserCar> appUserId = appUserCarService.list(new QueryWrapper<TAppUserCar>() |
| | | .eq("app_user_id",tokenService.getLoginUserApplet().getUserId())); |
| | | return R.ok(appUserId); |
| | | } |
| | | |
| | | /** |
| | | * 管理后台远程调用 根据优惠券ids 查询对应的发放数量 |
| | | * @return 优惠券ids 查询每个优惠券的发放数量 |
| | | */ |
| | | @PostMapping("/getCountByCouponIds") |
| | | public R<List<Integer>> getCountByCouponIds(String couponIds) { |
| | | @PostMapping("/getCountByCouponIds/{couponIds}") |
| | | public R<List<Integer>> getCountByCouponIds(@PathVariable("couponIds")String couponIds) { |
| | | // 最终结果 和优惠券id一一对应 |
| | | List<Integer> res = new ArrayList<>(); |
| | | String[] split = couponIds.split(","); |
| | | // 查询每个优惠券的发放数量 |
| | | List<TAppCoupon> couponId = tAppCouponService.list(new QueryWrapper<TAppCoupon>() |
| | | .in("coupon_id", Arrays.asList(split))); |
| | | for (String s : split) { |
| | | res.add(tAppCouponService.list(new QueryWrapper<TAppCoupon>() |
| | | .eq("coupon_id", s)).size()); |
| | | .eq("coupon_id", s) |
| | | .eq("del_flag",0) |
| | | ).size()); |
| | | } |
| | | return R.ok(res); |
| | | } |
| | |
| | | * @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()); |
| | |
| | | return R.ok(tAppCouponService.pagelist(couponId)); |
| | | } |
| | | |
| | | @Autowired |
| | | private TAppUserTagService appUserTagService; |
| | | @Autowired |
| | | private TAppUserService appUserService; |
| | | |
| | | /** |
| | | * 后台远程调用 给用户发放优惠券 |
| | | */ |
| | | @PostMapping("/grantCoupon") |
| | | public R getExchangeRecordByCouponId(@RequestBody GrantCouponDto dto){ |
| | | 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(); |
| | | } |
| | | } |