package com.ruoyi.account.controller;
|
|
|
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.TAppUserCar;
|
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.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;
|
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.*;
|
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-08-06
|
*/
|
@RestController
|
@RequestMapping("/t-app-coupon")
|
public class TAppCouponController {
|
@Autowired
|
private TAppCouponService tAppCouponService;
|
|
@Autowired
|
private TAppUserCarService appUserCarService;
|
@Autowired
|
private TokenService tokenService;
|
@Autowired
|
private ChargingPileClient chargingPileClient;
|
@Autowired
|
private ChargingOrderClient chargingOrderClient;
|
/**
|
* 查询用户可用优惠券数量
|
* @return
|
*/
|
@ApiOperation(value = "通过桩编号获取电站详情", tags = {"小程序-扫一扫"})
|
@GetMapping(value = "/scan/siteInfo")
|
public AjaxResult<SiteInfoVO> siteInfo(String number) {
|
SiteInfoVO data = chargingPileClient.getSiteInfoByNumber(number).getData();
|
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());
|
}
|
}
|
}
|
}
|
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) {
|
// 最终结果 和优惠券id一一对应
|
List<Integer> res = new ArrayList<>();
|
String[] split = couponIds.split(",");
|
// 查询每个优惠券的发放数量
|
for (String s : split) {
|
res.add(tAppCouponService.list(new QueryWrapper<TAppCoupon>()
|
.eq("coupon_id", s)
|
.eq("del_flag",0)
|
).size());
|
}
|
return R.ok(res);
|
}
|
|
/**
|
* 后台远程调用 根据优惠券id 查询使用数量
|
* @param couponId
|
* @return
|
*/
|
@PostMapping("/getUseCountByCouponId")
|
public R<Integer> getUseCountByCouponId(Integer couponId){
|
return R.ok(tAppCouponService.list(new QueryWrapper<TAppCoupon>()
|
.eq("coupon_id", couponId)
|
.eq("status",2)).size());
|
}
|
/**
|
* 后台远程调用 根据优惠券id 查询领取记录
|
* @param couponId
|
* @return
|
*/
|
@PostMapping("/getExchangeRecordByCouponId")
|
public R<PageInfo<ExchangeRecordVO>> getExchangeRecordByCouponId(@RequestBody ExchangeRecordGoodsQuery couponId){
|
return R.ok(tAppCouponService.pagelist(couponId));
|
}
|
|
/**
|
* 后台远程调用 给用户发放优惠券
|
*/
|
@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);
|
}
|
tAppCouponService.saveBatch(res);
|
return R.ok();
|
}
|
}
|