| | |
| | | |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | 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.TAppUser; |
| | | import com.ruoyi.account.api.model.TAppUserCar; |
| | | import com.ruoyi.account.api.model.TAppUserTag; |
| | | import com.ruoyi.account.api.vo.AppUserWhitelistMatchVO; |
| | | import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery; |
| | | import com.ruoyi.account.service.TAppUserService; |
| | | import com.ruoyi.account.service.TAppUserTagService; |
| | | import com.ruoyi.account.service.TAppUserWhitelistService; |
| | | import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; |
| | | import com.ruoyi.chargingPile.api.model.TChargingGun; |
| | | import com.ruoyi.chargingPile.api.model.TChargingPile; |
| | |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.log.enums.OperatorType; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.utils.SecurityUtils; |
| | | import com.ruoyi.other.api.vo.CouponListVOVO; |
| | | import com.ruoyi.account.api.vo.ExchangeRecordVO; |
| | |
| | | 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.dto.ExchangeCodeBindDTO; |
| | | import com.ruoyi.other.api.feignClient.OtherClient; |
| | | import com.ruoyi.other.api.vo.ExchangeCodeBindResultVO; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.redisson.api.RLock; |
| | | import org.redisson.api.RedissonClient; |
| | | 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.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private TAppUserTagService appUserTagService; |
| | | @Autowired |
| | | private TAppUserService appUserService; |
| | | @Resource |
| | | private TAppUserWhitelistService whitelistService; |
| | | |
| | | @Autowired |
| | | private RedissonClient redissonClient; |
| | | |
| | | |
| | | /** |
| | |
| | | @ApiOperation(value = "添加车辆", tags = {"小程序-扫一扫"}) |
| | | @PostMapping(value = "/scan/addCar") |
| | | public AjaxResult addCar(@RequestBody TAppUserCar dto) { |
| | | dto.setAppUserId(tokenService.getLoginUserApplet().getUserId()); |
| | | appUserCarService.save(dto); |
| | | Long userId = tokenService.getLoginUserApplet().getUserId(); |
| | | RLock lock = redissonClient.getLock("CREATE_CAR:" + userId); |
| | | try { |
| | | boolean tryLock = lock.tryLock(10, 10, TimeUnit.SECONDS); |
| | | if(tryLock){ |
| | | dto.setAppUserId(userId); |
| | | TAppUserCar one = appUserCarService.getOne(new LambdaQueryWrapper<TAppUserCar>() |
| | | .eq(TAppUserCar::getLicensePlate, dto.getLicensePlate()) |
| | | .eq(TAppUserCar::getAppUserId, dto.getAppUserId()) |
| | | .eq(TAppUserCar::getDelFlag, 0)); |
| | | if(null != one){ |
| | | return AjaxResult.error("车辆已存在"); |
| | | } |
| | | appUserCarService.save(dto); |
| | | } |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | }finally { |
| | | lock.unlock(); |
| | | } |
| | | return AjaxResult.success(); |
| | | } |
| | | /** |
| | |
| | | String token = SecurityUtils.getToken(ServletUtils.getRequest()); |
| | | if(com.ruoyi.common.core.utils.StringUtils.isNotEmpty(token)){ |
| | | List<TAppUserCar> cars = appUserCarService.list(new QueryWrapper<TAppUserCar>() |
| | | .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()) |
| | | .eq("app_user_id",tokenService.getLoginUserApplet().getUserId()) |
| | | .eq("del_flag", 0) |
| | | .orderByDesc("create_time")); |
| | | Long data1 = chargingOrderClient.getCar(tokenService.getLoginUserApplet().getUserId().toString()).getData(); |
| | | if (!cars.isEmpty()){ |
| | | if (null == data1 || data1 == -1){ |
| | | // 没有充电订单 展示最新添加的车辆 |
| | | data.setLicensePlate(cars.get(0).getLicensePlate()); |
| | | data.setVehicleBrand(cars.get(0).getVehicleBrand()); |
| | | data.setId(cars.get(0).getId().toString()); |
| | | }else{ |
| | | for (TAppUserCar car : cars) { |
| | | if (car.getId().equals(data1)){ |
| | | data.setLicensePlate(car.getLicensePlate()); |
| | | data.setVehicleBrand(car.getVehicleBrand()); |
| | | data.setId(car.getId().toString()); |
| | | } |
| | | } |
| | | } |
| | | data.setLicensePlate(cars.get(0).getLicensePlate()); |
| | | data.setVehicleBrand(cars.get(0).getVehicleBrand()); |
| | | data.setId(cars.get(0).getId().toString()); |
| | | } |
| | | AppUserWhitelistMatchVO whitelist = whitelistService.matchWhitelist(tokenService.getLoginUserApplet().getUserId(), chargingGun.getSiteId()); |
| | | data.setWhitelistMatched(Boolean.TRUE.equals(whitelist.getMatched())); |
| | | data.setWhitelistBenefitType(whitelist.getBenefitType()); |
| | | data.setWhitelistBenefitName(whitelist.getBenefitName()); |
| | | } |
| | | Integer data2 = otherClient.getAddCarIntegral().getData(); |
| | | data.setIntegral(data2); |
| | |
| | | count = 0L; |
| | | } |
| | | return R.ok(count); |
| | | } |
| | | |
| | | @ApiOperation(value = "兑换码绑定", tags = {"小程序-兑换码"}) |
| | | @PostMapping(value = "/exchangeCode/bind") |
| | | public AjaxResult<ExchangeCodeBindResultVO> bindExchangeCode(@RequestBody ExchangeCodeBindDTO dto) { |
| | | Long userId = tokenService.getLoginUserApplet().getUserId(); |
| | | TAppUser user = appUserService.getById(userId); |
| | | ExchangeCodeBindResultVO data = otherClient.bindExchangeCode(dto, userId, user == null ? "" : user.getPhone()).getData(); |
| | | return AjaxResult.ok(data); |
| | | } |
| | | |
| | | |
| | |
| | | return R.ok(); |
| | | } |
| | | } |
| | | |