From c80c0184b6e560d41d5aa5691874e07b681fa18f Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 17 一月 2025 18:41:24 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java | 6 + ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/IntegralRuleClient.java | 2 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java | 14 +++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 2 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 45 +++++++++++ ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java | 7 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java | 57 ++++---------- ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 13 +-- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 40 +++++----- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java | 4 12 files changed, 119 insertions(+), 78 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java index 904e7aa..cc1ff3b 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/feignClient/AppUserClient.java @@ -84,7 +84,7 @@ @PostMapping(value = "/t-app-user/refundPoints/{param}") public R refundPoints(@PathVariable("param")String param); - @PostMapping(value = "/t-app-user/user/give/vip") + @PostMapping(value = "/t-app-user/user/give/vip1") public R giveVip(@RequestBody GiveVipDto giveVipDto); diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/IntegralRuleClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/IntegralRuleClient.java index cdf5d67..cc56da2 100644 --- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/IntegralRuleClient.java +++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/IntegralRuleClient.java @@ -19,6 +19,6 @@ * 获取积分设置 * @return */ - @GetMapping("/integral/getSet") + @PostMapping("/integral/getSet2") R<TIntegralRule> getSet(); } diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java index ff52f59..e931bb3 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/handler/GlobalExceptionHandler.java @@ -4,6 +4,7 @@ import javax.servlet.http.HttpServletRequest; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.auth.NotLoginException; import com.ruoyi.common.core.exception.user.UserAppletException; import org.apache.commons.fileupload.FileUploadBase; import org.slf4j.Logger; @@ -61,6 +62,19 @@ } /** + * 没有登录异常 + * @param e + * @param request + * @return + */ + @ExceptionHandler(NotLoginException.class) + public AjaxResult notLoginException(NotLoginException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + log.error("请求地址'{}',登录校验失败'{}'", requestURI, e.getMessage()); + return AjaxResult.error(HttpStatus.UNAUTHORIZED, e.getMessage()); + } + + /** * 请求方式不支持 */ @ExceptionHandler(HttpRequestMethodNotSupportedException.class) diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java index d748b39..d30a11f 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java @@ -5,6 +5,7 @@ import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; +import com.ruoyi.common.core.exception.auth.NotLoginException; import com.ruoyi.common.core.exception.user.UserAppletException; import com.ruoyi.system.api.model.LoginUserApplet; import org.springframework.beans.factory.annotation.Autowired; @@ -94,7 +95,7 @@ public LoginUserApplet getLoginUserApplet() { LoginUserApplet loginUserAppletToken = getLoginUserAppletToken(ServletUtils.getRequest()); if (loginUserAppletToken == null) { - throw new RuntimeException("令牌已过期,请重新登录!"); + throw new NotLoginException("令牌已过期,请重新登录!"); } return loginUserAppletToken; } @@ -132,7 +133,7 @@ public LoginUser getLoginUser() { LoginUser loginUser = getLoginUser(ServletUtils.getRequest()); if (loginUser == null) { - throw new RuntimeException("令牌已过期,请重新登录!"); + throw new NotLoginException("令牌已过期,请重新登录!"); } return loginUser; } diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java index bf60f1c..ff02153 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/AuthFilter.java @@ -1,5 +1,6 @@ package com.ruoyi.gateway.filter; +import com.ruoyi.common.core.exception.auth.NotLoginException; import com.ruoyi.gateway.config.properties.AntiShakeProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -179,15 +180,15 @@ public void verifyToken(ServerHttpRequest request) throws Exception{ String token = getToken(request); if (StringUtils.isEmpty(token)) { - throw new RuntimeException("令牌不能为空"); + throw new NotLoginException("令牌不能为空"); } Claims claims = JwtUtils.parseToken(token); if (claims == null) { - throw new RuntimeException("令牌已过期或验证不正确!"); + throw new NotLoginException("令牌已过期或验证不正确!"); } String userid = JwtUtils.getUserId(claims); if (StringUtils.isEmpty(userid)) { - throw new RuntimeException("令牌验证失败"); + throw new NotLoginException("令牌验证失败"); } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index 2ea18aa..83f0fd9 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -835,6 +835,51 @@ } return R.ok(); } + + + + @PostMapping(value = "/user/give/vip1") + public R giveVip1(@RequestBody GiveVipDto giveVipDto) { + String[] split = giveVipDto.getUserIds().split(","); + for (String s : split) { + TAppUser nowUser = appUserService.getById(s); + int plusDay = 0; + if (giveVipDto.getType() == 1) { + plusDay = 1; + } else if (giveVipDto.getType() == 2) { + plusDay = 3; + } else if (giveVipDto.getType() == 3) { + plusDay = 12; + } + BigDecimal bigDecimal = new BigDecimal("0"); + TVip info = vipClient.getInfo1(giveVipDto.getVipId()).getData(); + switch (giveVipDto.getType()){ + case 1: + bigDecimal = bigDecimal.add(info.getMonthlyCard()==null?new BigDecimal(0):info.getMonthlyCard()); + break; + case 2: + bigDecimal = bigDecimal.add(info.getSeasonCard()==null?new BigDecimal(0):info.getSeasonCard()); + break; + case 3: + bigDecimal = bigDecimal.add(info.getAnnualCard()==null?new BigDecimal(0):info.getAnnualCard()); + break; + } + //增加vipDetail + giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay,giveVipDto.getType()); + appUserService.updateById(nowUser); + // 新增后台赠送记录 + TGrantVip tGrantVip = new TGrantVip(); + tGrantVip.setCode(OrderCodeUtil.getOrderCode("ZS")); + tGrantVip.setAppUserId(nowUser.getId()); + tGrantVip.setVipId(giveVipDto.getVipId()); + tGrantVip.setOrderAmount(bigDecimal); + tGrantVip.setCreateTime(LocalDateTime.now()); + tGrantVip.setAppUserId(nowUser.getId()); + orderClient.managementGiveVip(tGrantVip); + } + return R.ok(); + } + @ApiOperation(value = "已赠送列表", tags = {"小程序-个人中心-邀请好友"}) @PostMapping(value = "/user/invite/page") diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java index 2e9bd75..70dda50 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java @@ -32,7 +32,6 @@ private TAppCouponService appCouponService; public void sendVip(TAppUser nowUser,Integer vipId,Integer plusDay,Integer type){ if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) { - nowUser.setVipEndTime(LocalDateTime.now().plusMonths(plusDay).minusDays(1)); nowUser.setVipId(vipId); //直接再detail里新增数据,因为不是续费 @@ -56,6 +55,7 @@ tAppUserVipDetail.setSendMonth(1); tAppUserVipDetail.setVipJson(JSON.toJSONString(info.getData())); tAppUserVipDetail.setVipType(type); + tAppUserVipDetail.setCreateTime(LocalDateTime.now()); tAppUserVipDetailService.save(tAppUserVipDetail); //直接赠送优惠卷 for (SendCouponDto sendCouponDto : javaList) { @@ -81,47 +81,24 @@ appCouponService.save(tAppCoupon); } } - - }else { -// nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(plusDay).minusDays(1)); - //获取detail里结束时间大于当前时间的数据,并将enttime延长 -// TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getVipId,vipId).eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one(); -// if (tAppUserVipDetail!=null) { -// List<TAppUserVipDetail> list = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).ge(TAppUserVipDetail::getStartTime, tAppUserVipDetail.getEndTime()).list(); -// for (TAppUserVipDetail appUserVipDetail : list) { -// appUserVipDetail.setStartTime(appUserVipDetail.getStartTime().plusMonths(plusDay).minusDays(1)); -// appUserVipDetail.setEndTime(appUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1)); -// } -// tAppUserVipDetailService.updateBatchById(list); -// tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1)); -// -// tAppUserVipDetailService.updateById(tAppUserVipDetail); -// }else -// { - TAppUserVipDetail tAppUserVipDetail2 = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one(); - - TAppUserVipDetail tAppUserVipDetail1 = new TAppUserVipDetail(); - tAppUserVipDetail1.setAppUserId(nowUser.getId()); - tAppUserVipDetail1.setStartTime(tAppUserVipDetail2.getEndTime()); - tAppUserVipDetail1.setEndTime(tAppUserVipDetail2.getEndTime().plusMonths(plusDay).minusDays(1)); - tAppUserVipDetail1.setVipId(vipId); - - R<TVip> info = vipClient.getInfo1(vipId); - TVip vip = info.getData(); - - - tAppUserVipDetail1.setCouponIds(vip.getCoupon()); - tAppUserVipDetail1.setSendChargeNum(vip.getDiscountTimes()); - tAppUserVipDetail1.setChargeNum(vip.getDiscountTimes()); - tAppUserVipDetail1.setDiscountMoney(vip.getMaximumDeduction()); - tAppUserVipDetail1.setSendMonth(1); + TAppUserVipDetail tAppUserVipDetail2 = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one(); + TAppUserVipDetail tAppUserVipDetail1 = new TAppUserVipDetail(); + tAppUserVipDetail1.setAppUserId(nowUser.getId()); + tAppUserVipDetail1.setStartTime(tAppUserVipDetail2.getEndTime()); + tAppUserVipDetail1.setEndTime(tAppUserVipDetail2.getEndTime().plusMonths(plusDay).minusDays(1)); + tAppUserVipDetail1.setVipId(vipId); + R<TVip> info = vipClient.getInfo1(vipId); + TVip vip = info.getData(); + tAppUserVipDetail1.setCouponIds(vip.getCoupon()); + tAppUserVipDetail1.setSendChargeNum(vip.getDiscountTimes()); + tAppUserVipDetail1.setChargeNum(vip.getDiscountTimes()); + tAppUserVipDetail1.setDiscountMoney(vip.getMaximumDeduction()); + tAppUserVipDetail1.setSendMonth(1); tAppUserVipDetail1.setVipType(type); - tAppUserVipDetail1.setVipJson(JSON.toJSONString(info.getData())); - tAppUserVipDetailService.save(tAppUserVipDetail1); - -// } - + tAppUserVipDetail1.setVipJson(JSON.toJSONString(info.getData())); + tAppUserVipDetail1.setCreateTime(LocalDateTime.now()); + tAppUserVipDetailService.save(tAppUserVipDetail1); } } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java index 9afe802..a1c138f 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java @@ -300,7 +300,7 @@ } BigDecimal multiply = bigDecimal1.multiply(new BigDecimal("24")); - BigDecimal divide = bigDecimal.divide(multiply, 0, BigDecimal.ROUND_HALF_UP); + BigDecimal divide = bigDecimal.divide(multiply, 4, BigDecimal.ROUND_HALF_EVEN).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN); record.setP1(divide); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java index 9619a82..0cc1dbf 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java @@ -86,30 +86,30 @@ Integer roleType = sysUser.getRoleType(); List<Integer> siteIds = new ArrayList<>(); - List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData(); - for (GetSiteListDTO datum : data) { - siteIds.add(datum.getId()); - } - if (siteIds.isEmpty()){ - siteIds.add(-1); - }else{ - if (roleType == 2){ - List<Integer> integers = new ArrayList<>(); - for (Integer siteId : siteIds) { - // 校验有没有这个站点的权限 - List<Boolean> t1= partnerClient.parkingRecordListMenu(sysUser.getObjectId(),siteId).getData(); + List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userid).getData(); + for (GetSiteListDTO datum : data) { + siteIds.add(datum.getId()); + } + if (siteIds.isEmpty()){ + siteIds.add(-1); + }else{ + if (roleType == 2){ + List<Integer> integers = new ArrayList<>(); + for (Integer siteId : siteIds) { + // 校验有没有这个站点的权限 + List<Boolean> t1= partnerClient.parkingRecordListMenu(sysUser.getObjectId(),siteId).getData(); - Boolean b = t1.get(1); - if (b){ - integers.add(siteId); - } + Boolean b = t1.get(1); + if (b){ + integers.add(siteId); } - siteIds = integers; } + siteIds = integers; } - if (siteIds.isEmpty()){ - siteIds.add(-1); - } + } + if (siteIds.isEmpty()){ + siteIds.add(-1); + } List<TParkingLot> list = parkingLotService.lambdaQuery().in( TParkingLot::getSiteId, siteIds).list(); List<Integer> ids = new ArrayList<>(); for (TParkingLot tParkingLot : list) { diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java index 3e1df54..b9b4859 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingPileServiceImpl.java @@ -484,11 +484,13 @@ BigDecimal v = list.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add).setScale(4, RoundingMode.HALF_EVEN); List<Double> data = chargingOrderAccountingStrategyClient.getDailyChargingDegree(6, siteIds).getData(); List<Double> value2 = new ArrayList<>(); + BigDecimal multiply = new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24)); for (Double datum : data) { if(list.size() == 0){ value2.add(0D); }else{ - Double datum1 = new BigDecimal(datum).divide(new BigDecimal(list.size()).multiply(v).multiply(new BigDecimal(24)), new MathContext(4, RoundingMode.HALF_EVEN)).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); + Double datum1 = new BigDecimal(datum).divide(multiply, new MathContext(4, RoundingMode.HALF_EVEN)) + .multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue(); value2.add(datum1); } } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java index 2675d0a..131e1fe 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java @@ -1903,20 +1903,17 @@ } List<Map<String,Object>> capMap = chargingOrderService.getchargingCapacity(siteIds,statisticsQueryDto); List<TChargingPile> chargingPiles = chargingPileClient.getChargingPileBySiteIds(siteIds).getData(); - //获取chargingPiles的ratedPower的总和再乘以chargingPiles的数量再乘以24 BigDecimal totalRatedPower = chargingPiles.stream().map(TChargingPile::getRatedPower).reduce(BigDecimal.ZERO, BigDecimal::add).multiply(new BigDecimal(chargingPiles.size())).multiply(new BigDecimal(24)); - - //将capMap的chargingCapacity除以totalRatedPower保留两位数 + + //每日利用率=当日充电度数/(总桩数量*桩总功率*24小时) + BigDecimal multiply1 = new BigDecimal(chargingPiles.size()).multiply(totalRatedPower).multiply(new BigDecimal(24)); capMap.forEach(map -> { BigDecimal chargingCapacity = (BigDecimal) map.get("chargingCapacity"); - BigDecimal result = chargingCapacity.divide(totalRatedPower, 4, RoundingMode.HALF_UP); + BigDecimal result = chargingCapacity.divide(multiply1, 4, RoundingMode.HALF_UP); BigDecimal multiply = result.multiply(new BigDecimal(100)); map.put("chargingCapacity", multiply); }); - - - // // 解析 startTime 和 endTime 为 LocalDate LocalDate startDate = statisticsQueryDto.getStartTime(); LocalDate endDate = statisticsQueryDto.getEndTime(); @@ -1941,8 +1938,6 @@ startDate = startDate.plusDays(1); } return R.ok(dateRangeStatistics); - - } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java index cbb81d3..a029e65 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TIntegralRuleController.java @@ -79,6 +79,12 @@ return R.ok(res); } + @PostMapping("/getSet2") + public R<TIntegralRule> getSet2() { + TIntegralRule res = integralRuleService.getOne(new QueryWrapper<>()); + return R.ok(res); + } + @GetMapping("/getSet1") -- Gitblit v1.7.1