ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/PartnerFallbackFactory.java
@@ -65,6 +65,21 @@ public R<Boolean> getAccountMenu(Integer partnerId, Integer siteId) { return null; } }; @Override public R<List<Boolean>> managePageListMenu(Integer partnerId, Integer siteId) { return null; } @Override public R<List<Boolean>> parkingRecordListMenu(Integer partnerId, Integer siteId) { return null; } @Override public R<List<Boolean>> watchChargingOrder(Integer partnerId, Integer siteId) { return null; } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/PartnerClient.java
@@ -58,4 +58,10 @@ R<List<Boolean>> getSettlementListMenu(@PathVariable("partnerId")Integer partnerId, @PathVariable("siteId") Integer siteId); @PostMapping("/partner/getAccountMenu/{partnerId}/{siteId}") R<Boolean> getAccountMenu(@PathVariable("partnerId")Integer partnerId, @PathVariable("siteId") Integer siteId); @PostMapping("/partner/managePageListMenu/{partnerId}/{siteId}") R<List<Boolean>> managePageListMenu(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId); @PostMapping("/partner/parkingRecordListMenu/{partnerId}/{siteId}") R<List<Boolean>> parkingRecordListMenu(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId); @PostMapping("/partner/watchChargingOrder/{partnerId}/{siteId}") R<List<Boolean>> watchChargingOrder(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -128,5 +128,13 @@ @TableField(exist = false) private String parkName; @ApiModelProperty(value = "查看按钮权限 ") @TableField(exist = false) private Boolean authInfo = true; @ApiModelProperty(value = "已出场按钮权限 ") @TableField(exist = false) private Boolean authOut = true; } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/ChargingOrderAndUploadRealTimeMonitoringDataDto.java
@@ -218,7 +218,10 @@ @ApiModelProperty(value = "时段数") private Integer count; @ApiModelProperty(value = "查看按钮权限 ") private Boolean authInfo = true; @ApiModelProperty(value = "删除按钮权限 ") private Boolean authDelete = true; } ruoyi-api/ruoyi-api-integration/src/main/java/com/ruoyi/integration/api/model/UploadRealTimeMonitoringData.java
@@ -58,6 +58,10 @@ private Integer status; //状态(0=未知,1=等待中/已插枪,2=启动中,3=充电中,4=停止中,5=已结束)" private LocalDateTime startTime; //充电开始时间 private LocalDateTime endTime; //充电结束时间 @ApiModelProperty(value = "查看按钮权限 ") private Boolean authInfo = true; @ApiModelProperty(value = "删除按钮权限 ") private Boolean authDelete = true; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
@@ -72,7 +72,12 @@ private String feedback; @TableField(exist = false) private String uid; @ApiModelProperty(value = "查看按钮权限 ") @TableField(exist = false) private Boolean authInfo = true; @TableField(exist = false) @ApiModelProperty(value = "处理按钮权限 ") private Boolean authHandle = true; @ApiModelProperty(value = "反馈人id") @TableField("feedback_user_id") private Integer feedbackUserId; ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/PartnerController.java
@@ -294,4 +294,82 @@ .eq(TPartnerSite::getSiteId, siteId)); return partnerSite!=null?R.ok(true):R.ok(false); } // 订单申诉按钮权限 @PostMapping("/managePageListMenu/{partnerId}/{siteId}") R<List<Boolean>> managePageListMenu(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId){ List<Boolean> booleans = new ArrayList<>(); TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/order_appeal/view").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, one.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); TSiteMenu two = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/order_appeal/handle").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite1 = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, two.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); if (partnerSite!=null){ booleans.add(true); }else{ booleans.add(false); } if (partnerSite1!=null){ booleans.add(true); }else{ booleans.add(false); } return R.ok(booleans); } // 停车记录按钮权限 @PostMapping("/parkingRecordListMenu/{partnerId}/{siteId}") R<List<Boolean>> parkingRecordListMenu(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId){ List<Boolean> booleans = new ArrayList<>(); TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/parking_record/view").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, one.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); TSiteMenu two = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/parking_record/exit_parking_lot").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite1 = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, two.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); if (partnerSite!=null){ booleans.add(true); }else{ booleans.add(false); } if (partnerSite1!=null){ booleans.add(true); }else{ booleans.add(false); } return R.ok(booleans); } // 充电监控记录按钮权限 @PostMapping("/watchChargingOrder/{partnerId}/{siteId}") R<List<Boolean>> watchChargingOrder(@PathVariable("partnerId")Integer partnerId,@PathVariable("siteId") Integer siteId){ List<Boolean> booleans = new ArrayList<>(); TSiteMenu one = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/charging_pile_order/monitoring_record/info").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, one.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); TSiteMenu two = siteMenuService.getOne(new LambdaQueryWrapper<TSiteMenu>().eq(TSiteMenu::getPath, "/data/charging_pile_order/monitoring_record/del").eq(TSiteMenu::getStatus, 0)); TPartnerSite partnerSite1 = partnerSiteService.getOne(new LambdaQueryWrapper<TPartnerSite>() .eq(TPartnerSite::getPartnerId, partnerId) .eq(TPartnerSite::getSiteMenuId, two.getMenuId()) .eq(TPartnerSite::getSiteId, siteId)); if (partnerSite!=null){ booleans.add(true); }else{ booleans.add(false); } if (partnerSite1!=null){ booleans.add(true); }else{ booleans.add(false); } return R.ok(booleans); } } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; @@ -30,6 +31,8 @@ import com.ruoyi.order.api.query.TOrderInvoiceQuery; import com.ruoyi.order.api.vo.TCharingUserEquimentVO; import com.ruoyi.order.api.vo.TOrderInvoiceVO; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; @@ -69,9 +72,11 @@ private SiteClient siteClient; @Resource private TokenService tokenService; @Resource private PartnerClient partnerClient; @Resource private SysUserClient sysUserClient; @RequiresPermissions(value = {"/parkingRecord"}, logical = Logical.OR) @ApiOperation(tags = {"后台-订单管理-停车记录"},value = "列表") @PostMapping(value = "/page") @@ -83,7 +88,10 @@ for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } List<TParkingLot> list = parkingLotService.lambdaQuery().in(!siteIds.isEmpty(), TParkingLot::getSiteId, siteIds).list(); 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) { ids.add(tParkingLot.getId()); @@ -104,12 +112,18 @@ .between(query.getTimePeriod()!=null,TParkingRecord::getOutParkingTime,s1,s2) .orderByDesc(TParkingRecord::getCreateTime) .page(Page.of(query.getPageCurr(), query.getPageSize())); SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); for (TParkingRecord record : page.getRecords()) { TParkingLot byId = parkingLotService.getById(record.getParkingLotId()); record.setUid(record.getId().toString()); if (byId!=null) { record.setParkName(byId.getName()); if (roleType==2){ List<Boolean> data1 = partnerClient.parkingRecordListMenu(sysUser.getObjectId(), byId.getSiteId()).getData(); record.setAuthInfo(data1.get(0)); record.setAuthInfo(data1.get(1)); } } } return R.ok(page); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -12,10 +12,7 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.feignClient.*; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; @@ -57,6 +54,8 @@ import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.AliQueryOrder; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -332,9 +331,28 @@ @ApiOperation(value = "列表", tags = {"管理后台-支付订单-退款订单"}) public R<PageInfo<TChargingOrderRefund>> refundList(@RequestBody ChargingRefundDto chargingRefundDto) { R<PageInfo<TChargingOrderRefund>> refundList = chargingOrderService.getRefundList(chargingRefundDto); for (TChargingOrderRefund record : refundList.getData().getRecords()) { record.setUid(record.getId().toString()); Long userId = tokenService.getLoginUser().getUserid(); //如果没传siteId,获取当前登陆人所有的siteIds List<Integer> siteIds = new ArrayList<>(); if (userId != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } if (siteIds.isEmpty()){ siteIds.add(-1); } List<TChargingOrderRefund> tChargingOrderRefunds = new ArrayList<>(); for (TChargingOrderRefund record : refundList.getData().getRecords()) { TChargingOrder byId = chargingOrderService.getById(record.getChargingOrderId()); record.setUid(record.getId().toString()); if (siteIds.contains(byId.getSiteId())){ tChargingOrderRefunds.add(record); } } refundList.getData().setRecords(tChargingOrderRefunds); return refundList; } @@ -721,7 +739,9 @@ } //进行统计groupBySiteId LocalDate sixBefore = PreviousSixMonths.get(); if (siteIds.isEmpty()){ siteIds.add(-1); } List<SixCircleDto> sixCircleDtos = chargingOrderService.circle(siteIds,sixBefore); for (SixCircleDto sixCircleDto : sixCircleDtos) { Site site = siteClient.getSiteByIds(Arrays.asList(sixCircleDto.getSiteId())).getData().get(0); @@ -800,7 +820,18 @@ public R<Map<String,Object>> total() { //count近6个月的数据 LocalDate sixBefore = PreviousSixMonths.get(); Map<String,Object> map = chargingOrderService.countAll(sixBefore); Long userId = tokenService.getLoginUser().getUserid(); //获取当前登录的siteIds List<Integer> siteIds = new ArrayList<>(); List<GetSiteListDTO> data9 = siteClient.getSiteListByUserId(userId).getData(); for (GetSiteListDTO datum : data9) { siteIds.add(datum.getId()); } //进行统计groupBySiteId if (siteIds.isEmpty()){ siteIds.add(-1); } Map<String,Object> map = chargingOrderService.countAll(sixBefore,siteIds); BigDecimal data = parkingLotClient.getRecordAmount(sixBefore).getData(); if (map ==null){ map = new HashMap<String,Object>(); @@ -815,8 +846,11 @@ return R.ok(map); } @Resource private PartnerClient partnerClient; @Resource private SysUserClient sysUserClient; @RequiresPermissions(value = {"/chargeOrderMonitoring"}, logical = Logical.OR) @ResponseBody @PostMapping(value = "/watch/chargingOrder") @@ -839,7 +873,14 @@ List<ChargingOrderAndUploadRealTimeMonitoringDataDto> dtos = new ArrayList<>(); Map<String,ChargingOrderVO> map = new HashMap<>(); SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); for (UploadRealTimeMonitoringData uploadRealTimeMonitoringData : data1.getRecords()) { if (roleType==2){ List<Boolean> data = partnerClient.watchChargingOrder(sysUser.getObjectId(), uploadRealTimeMonitoringData.getSiteId()).getData(); uploadRealTimeMonitoringData.setAuthInfo(data.get(0)); uploadRealTimeMonitoringData.setAuthDelete(data.get(1)); } ChargingOrderAndUploadRealTimeMonitoringDataDto dataDto = new ChargingOrderAndUploadRealTimeMonitoringDataDto(); ChargingOrderQuery dto = new ChargingOrderQuery(); dto.setCode(uploadRealTimeMonitoringData.getTransaction_serial_number()); @@ -1179,7 +1220,7 @@ @PostMapping(value = "/charging/users") @ApiOperation(value = "除电站流量外", tags = {"管理后台-数据分析-充电用户分析"}) public R<TCharingUserMapVO> users(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto){ Long userId = tokenService.getLoginUserApplet().getUserId(); Long userId = tokenService.getLoginUser().getUserid(); List<Integer> siteIds = new ArrayList<>(); if (statisticsQueryDto.getSiteId()==null){ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -6,7 +6,9 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.domain.SiteMenu; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.feignClient.PartnerClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BasePojo; @@ -17,6 +19,7 @@ import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TOrderAppealVO; import com.ruoyi.order.dto.ManageFeedbackDto; import com.ruoyi.order.dto.ManageOrderAppealQuery; @@ -78,13 +81,16 @@ @Resource private SysUserRoleClient sysUserRoleClient; @Resource private PartnerClient partnerClient; @Autowired public TOrderAppealController(TOrderAppealService orderAppealService, TokenService tokenService) { this.orderAppealService = orderAppealService; this.tokenService = tokenService; } @Resource private SiteClient siteClient; @RequiresPermissions(value = {"/appealOrder"}, logical = Logical.OR) @@ -98,10 +104,39 @@ .in(TOrderAppeal::getOrderType, 1, 2) .orderByDesc(TOrderAppeal::getCreateTime) .page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); SysUser sysUser = sysUserClient.getSysUser(tokenService.getLoginUser().getUserid()).getData(); Integer roleType = sysUser.getRoleType(); List<TOrderAppeal> res = new ArrayList<>(); for (TOrderAppeal record : page.getRecords()) { if (record.getOrderType()!=1){ res.add(record); } if (roleType == 2 && record.getOrderType()==1){ List<Integer> siteIds = new ArrayList<>(); if (sysUser.getUserId() != null){ List<GetSiteListDTO> data = siteClient.getSiteListByUserId(sysUser.getUserId()).getData(); for (GetSiteListDTO datum : data) { siteIds.add(datum.getId()); } } if (siteIds.isEmpty()){ siteIds.add(-1); } TChargingOrder byId = chargingOrderService.getById(record.getOrderId()); if (byId!=null&&siteIds.contains(byId.getSiteId())){ res.add(record); // 校验有没有这个站点的权限 List<Boolean> data = partnerClient.managePageListMenu(sysUser.getObjectId(), byId.getSiteId()).getData(); record.setAuthInfo(data.get(0)); record.setAuthHandle(data.get(1)); } }else{ res.add(record); } record.setUid(record.getId().toString()); } return R.ok(page); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -65,7 +65,7 @@ List<SixCircleDto> circle(@Param("siteIds")List<Integer> siteIds,@Param("sixBefore")LocalDate sixBefore); Map<String, Object> countAll(@Param("sixBefore")LocalDate sixBefore); Map<String, Object> countAll(@Param("sixBefore")LocalDate sixBefore,@Param("siteIds")List<Integer> siteIds); List<Map<String, Object>> getSumByType(@Param("chargingOrderIds")List<Long> chargingOrderIds); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -140,7 +140,7 @@ List<SixCircleDto> circle(List<Integer> siteIds,LocalDate sixBefore); Map<String, Object> countAll(LocalDate sixBefore); Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds); List<Map<String, Object>> getSumByType(List<Long> chargingOrderIds); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1370,8 +1370,8 @@ } @Override public Map<String, Object> countAll(LocalDate sixBefore) { return this.baseMapper.countAll(sixBefore); public Map<String, Object> countAll(LocalDate sixBefore,List<Integer> siteIds) { return this.baseMapper.countAll(sixBefore,siteIds); } @Override ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -293,7 +293,9 @@ }else{ siteIds.add(pageList.getSiteId()); } if (siteIds.isEmpty()){ siteIds.add(-1); } List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, siteIds, pageInfo); for (GetOrderEvaluatePageListDTO dto : list) { TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData(); ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -386,6 +386,12 @@ select sum(electrovalence) as electrovalence,sum(service_charge) as service_charge,ROUND(sum(electrovalence+service_charge) * 0.006, 2) as commission_amount,sum(sharing_amount) as sharing_amount from t_charging_order where create_time >= #{sixBefore} and del_flag = 0 and recharge_payment_status = 2 <if test="siteIds != null and siteIds.size() > 0"> AND site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> #{siteId} </foreach> </if> </select> <select id="getSumByType" resultType="java.util.Map"> SELECT