ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ChargingPileFallbackFactory.java
@@ -2,6 +2,7 @@ import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -35,6 +36,11 @@ public R<BigDecimal> getServiceMoney(String param) { return R.fail("根据会员折扣、预付金额 计算服务费失败:"+throwable.getMessage()); } @Override public R<SiteInfoVO> getSiteInfoByNumber(String number) { return R.fail("通过桩编号获取电站信息失败:"+throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ChargingPileClient.java
@@ -2,6 +2,7 @@ import com.ruoyi.chargingPile.api.factory.ChargingPileFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.vo.SiteInfoVO; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import io.swagger.annotations.ApiOperation; @@ -24,12 +25,16 @@ */ @ApiOperation(value = "管理后台-通过站点id获取充电桩列表 不分页") @PostMapping(value = "/t-charging-pile/getChargingPileBySiteId") public R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId); R<List<TChargingPile>> getChargingPileBySiteId(@RequestParam("siteId") Integer siteId); /** * 小程序远程调用 根据会员折扣、预付金额 计算服务费 * @return */ @PostMapping(value = "/getServiceMoney") public R<BigDecimal> getServiceMoney(@RequestParam("param") String param); @PostMapping(value = "/t-accounting-strategy/getServiceMoney") R<BigDecimal> getServiceMoney(@RequestParam("param") String param); @PostMapping("/site/getSiteInfoByNumber") @ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"}) R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/vo/SiteInfoVO.java
@@ -20,4 +20,13 @@ private BigDecimal vipElectrovalence; @ApiModelProperty(value = "超时占位费说明") private String spaceChargeExplain; @ApiModelProperty(value = "上次选择车辆logo") private String carLogo; @ApiModelProperty(value = "上次选择车辆车牌号") private String licensePlate; @ApiModelProperty(value = "上次选择车辆品牌") private String vehicleBrand; @ApiModelProperty(value = "上次选择车辆id") private Long id; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/factory/ChargingOrderFallbackFactory.java
@@ -44,6 +44,11 @@ public R<TChargingOrder> getOrderDetailByGunId(Integer chargingGunId) { return R.fail("根据充电枪获取正在充电的订单:" + throwable.getMessage()); } @Override public R<Long> getCar() { return R.fail("获取用户最近使用车辆充电的车辆id:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/ChargingOrderClient.java
@@ -39,4 +39,11 @@ */ @PostMapping(value = "/t-charging-order/getOrderDetailByGunId") R<TChargingOrder> getOrderDetailByGunId(@RequestParam("chargingGunId") Integer chargingGunId); /** * 获取用户最近使用车辆充电的车辆id * @return */ @GetMapping(value = "/t-charging-order/getCar") public R<Long> getCar(); } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/feignClient/OrderClient.java
@@ -7,6 +7,7 @@ import com.ruoyi.order.api.query.TActivityStatisticsQuery; import com.ruoyi.order.api.vo.TActivityVO; 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.RequestBody; @@ -36,4 +37,5 @@ */ @PostMapping(value = "/t-exchange-order/activityStatistics") public R<TActivityVO> activityStatistics(@RequestBody TActivityStatisticsQuery dto); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java
@@ -12,23 +12,24 @@ 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.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** @@ -51,6 +52,40 @@ 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 @@ -69,9 +104,8 @@ @ApiOperation(value = "选择车辆列表", tags = {"小程序-扫一扫"}) @PostMapping(value = "/scan/carList") public R<List<TAppUserCar>> carList() { // todo 用户id List<TAppUserCar> appUserId = appUserCarService.list(new QueryWrapper<TAppUserCar>() .eq("app_user_id",tokenService.getLoginUserApplet().getUserid())); .eq("app_user_id",tokenService.getLoginUserApplet().getUserId())); return R.ok(appUserId); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -35,6 +35,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; @@ -86,6 +87,19 @@ private WeixinProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; @ApiOperation(value = "查询当前用户是否为会员 0否1是", tags = {"小程序--查询当前用户是否为会员"}) @PostMapping(value = "/getUserInfo") public AjaxResult<Integer> getUserInfo() { TAppUser byId = appUserService.getById(tokenService.getLoginUserApplet().getUserId()); if (byId.getVipEndTime() == null){ return AjaxResult.ok(0); }else if (byId.getVipEndTime().isAfter(LocalDateTime.now())){ return AjaxResult.ok(1); }else{ return AjaxResult.ok(0); } } @ApiOperation(value = "通过code获得openid, 1 --->对应的appid:wx4c405fa42539fc21 2---->对应的appid:wx02d9f6c92e6d3c86") @GetMapping("openId-by-jscode2session/{code}") public AjaxResult<Map<String, Object>> jscode2session(@PathVariable String code) { ruoyi-service/ruoyi-chargingPile/pom.xml
@@ -15,7 +15,12 @@ </description> <dependencies> <dependency> <groupId>com.ruoyi</groupId> <artifactId>ruoyi-api-account</artifactId> <version>3.6.2</version> <scope>compile</scope> </dependency> <!-- ruoyi-modules-chargingPile-api --> <dependency> <groupId>com.ruoyi</groupId> ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -5,17 +5,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.*; import com.ruoyi.chargingPile.api.query.GetSiteList; import com.ruoyi.chargingPile.api.query.SiteDetailQuery; import com.ruoyi.chargingPile.api.query.SiteQuery; import com.ruoyi.chargingPile.api.vo.ChargingGunCountVO; import com.ruoyi.chargingPile.api.vo.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.chargingPile.api.vo.TChargingPileVO; import com.ruoyi.chargingPile.api.vo.*; import com.ruoyi.chargingPile.domain.SiteMenu; import com.ruoyi.chargingPile.service.*; import com.ruoyi.common.core.domain.R; @@ -36,6 +30,8 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.util.*; /** @@ -69,18 +65,44 @@ @Autowired private TParkingLotService parkingLotService; @Autowired private TAccountingStrategyService accountingStrategyService; @Autowired private TAccountingStrategyDetailService accountingStrategyDetailService; /** * 小程序扫一扫 * @param number * @return */ @PostMapping("/getSiteInfoByNumber") @ApiOperation(value = "扫一扫后通过桩编号获取电站信息", tags = {"小程序-扫一扫"}) public R<SiteInfoVO> getSiteInfoByNumber(@RequestParam("number") String number){ SiteInfoVO siteInfoVO = new SiteInfoVO(); TChargingPile one = chargingPileService.lambdaQuery().eq(TChargingPile::getNumber, number).one(); Site byId = siteService.getById(one.getSiteId()); TAccountingStrategy byId1 = accountingStrategyService.getById(byId.getAccountingStrategyId()); List<TAccountingStrategyDetail> list = accountingStrategyDetailService.lambdaQuery().eq(TAccountingStrategyDetail::getAccountingStrategyId, byId1.getId()).list(); for (TAccountingStrategyDetail tAccountingStrategyDetail : list) { // 当前时间属于那个阶段 取哪个阶段的电价 if(LocalTime.now().isAfter(LocalTime.parse(tAccountingStrategyDetail.getStartTime())) && LocalTime.now().isBefore(LocalTime.parse(tAccountingStrategyDetail.getEndTime()))){ siteInfoVO.setElectrovalence(tAccountingStrategyDetail.getElectrovalence()); siteInfoVO.setVipElectrovalence(tAccountingStrategyDetail.getElectrovalence().multiply(byId1.getDiscount()).setScale(2, BigDecimal.ROUND_HALF_UP)); } } siteInfoVO.setName(byId.getName()); siteInfoVO.setNumber(one.getNumber().toString()); siteInfoVO.setSpaceChargeExplain(byId.getSpaceChargeExplain()); return R.ok(siteInfoVO); } @ResponseBody @GetMapping("/getSiteList") @ApiOperation(value = "获取站点列表", tags = {"管理后台-站点管理"}) public AjaxResult<PageInfo<GetSiteListDTO>> getSiteList(GetSiteList siteList){ PageInfo<GetSiteListDTO> list = siteService.getSiteList(siteList); return AjaxResult.success(list); } @ResponseBody @GetMapping("/getSiteList1") @ApiOperation(value = "获取站点列表 不分页", tags = {"管理后台-活动费用统计"}) public AjaxResult<List<Site>> getSiteList1(){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -44,10 +44,10 @@ * @param * @return */ @PostMapping(value = "/getCar") @GetMapping(value = "/getCar") public R<Long> getCar() { List<TChargingOrder> list = chargingOrderService.list(new LambdaQueryWrapper<TChargingOrder>() .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserid()) .eq(TChargingOrder::getAppUserId, tokenService.getLoginUserApplet().getUserId()) .isNotNull(TChargingOrder::getAppUserCarId)); if (!list.isEmpty()){ // 最近使用的车辆id ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java
@@ -87,10 +87,6 @@ THtml tHtml = new THtml(); tHtml.setType(type); tHtml.setContent(info); tHtml.setCreateTime(LocalDateTime.now()); tHtml.setDelFlag(false); htmlService.save(tHtml); }else{ g.setContent(info);