From 52d18b0c747f12c64c9f9b36acb1b5e25f131e0c Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 08 十月 2024 17:27:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 41 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserEquimentVO.java | 10 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java | 4 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java | 15 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java | 4 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 20 ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml | 56 +- ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java | 24 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml | 2 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | 76 +++ ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml | 1 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java | 10 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserMapVO.java | 1 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java | 16 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java | 3 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java | 4 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 45 ++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java | 3 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml | 175 ++++--- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java | 1 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java | 3 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java | 121 +++++ ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java | 16 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java | 2 ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml | 1 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml | 52 +- ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml | 56 +- ruoyi-gateway/src/main/resources/bootstrap.yml | 4 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml | 28 ruoyi-auth/src/main/resources/bootstrap.yml | 56 +- ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml | 42 + ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java | 5 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingRecordController.java | 75 +++ ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml | 56 +- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java | 5 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml | 8 ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml | 56 +- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/VipInfoDto.java | 45 ++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java | 2 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 5 ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 56 +- ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 5 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java | 3 48 files changed, 842 insertions(+), 382 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java index 1b5f369..3375419 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserIntegralChange.java @@ -74,5 +74,9 @@ @TableField(exist = false) private String orderNum; + @TableField(exist = false) + private Integer goodType; + + } diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java index 31db511..bf3803c 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java +++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java @@ -12,6 +12,7 @@ import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * <p> @@ -88,4 +89,5 @@ private String vipName; + } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserEquimentVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserEquimentVO.java index 29c7b90..c28ba50 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserEquimentVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserEquimentVO.java @@ -20,6 +20,12 @@ List<Map<String,Object>> equipmentMapOut1; @ApiModelProperty("交流离网率") List<Map<String,Object>> equipmentMapOut2; - @ApiModelProperty("需求电流满足率") - List<Map<String,Object>> needElec; + @ApiModelProperty("需求电流满足率直流") + List<Map<String,Object>> needElec1; + @ApiModelProperty("需求电流满足率交流") + List<Map<String,Object>> needElec2; + double average1; + double average2; + double average3; + double average4; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserMapVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserMapVO.java index e8859d1..3015b43 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserMapVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TCharingUserMapVO.java @@ -11,6 +11,7 @@ public class TCharingUserMapVO { @ApiModelProperty("上分折线图") private List<Map<String,Object>> map; + private List<Map<String,Object>> map1; @ApiModelProperty("用户标签") private List<Map<String,Object>> userMaps; @ApiModelProperty("单位消费") diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index 20ccecd..866e429 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -6,8 +6,8 @@ spring: profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod application: # 应用名称 name: ruoyi-auth @@ -56,52 +56,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 127.0.0.1:8080 # Sentinel控制台地址 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index 7598ca6..48963f2 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -12,8 +12,8 @@ allow-bean-definition-overriding: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: config: diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index c8f030b..dbd2ab0 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -11,8 +11,8 @@ allow-bean-definition-overriding: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: config: @@ -55,52 +55,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 127.0.0.1:8080 # Sentinel控制台地址 diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java index a0d19f9..f634a7b 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppCouponController.java @@ -60,7 +60,7 @@ @Autowired private TAppUserCarService appUserCarService; - @Autowired + @Resource private TokenService tokenService; @Resource private ChargingPileClient chargingPileClient; @@ -117,7 +117,7 @@ Integer data2 = otherClient.getAddCarIntegral().getData(); data.setIntegral(data2); if (!cars.isEmpty()){ - if (data1 == -1){ + if (null == data1 || data1 == -1){ // 没有充电订单 展示最新添加的车辆 data.setLicensePlate(cars.get(0).getLicensePlate()); data.setVehicleBrand(cars.get(0).getVehicleBrand()); 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 71175d4..9293ee1 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 @@ -36,6 +36,7 @@ import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TExchangeOrder; import com.ruoyi.other.api.domain.*; +import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.dto.UnitListQueryDto; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.OtherClient; @@ -228,6 +229,7 @@ .eq(userListQueryDto.getStatus() != null, TAppUser::getStatus, userListQueryDto.getStatus()) .eq(userListQueryDto.getVipTypeId() != null, TAppUser::getVipId, userListQueryDto.getVipTypeId()) .in(!userIds.isEmpty(),TAppUser::getId,userIds) + .orderByDesc(BasePojo::getCreateTime) .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); if (page.getRecords().isEmpty()){ return R.ok(page); @@ -496,7 +498,7 @@ for (TAppUserIntegralChange record : page.getRecords()) { record.setDateTime(record.getCreateTime()); record.setUid(record.getId().toString()); - if (record.getChangeType()==2){ + if (record.getChangeType()==2||record.getChangeType()==3){ R<TChargingOrder> tChargingOrderR = chargingOrderClient.orderDetail(Long.valueOf(record.getExtension())); if (tChargingOrderR.getData()!=null) { record.setOrderNum(tChargingOrderR.getData().getCode()); @@ -518,6 +520,10 @@ @GetMapping(value = "/user/points/detail") public R<TAppUserIntegralChange> pointsDetail(String id) { TAppUserIntegralChange byId = integralChangeService.getById(id); + TExchangeOrder data = exchangeOrderClient.orderDetail(Long.valueOf(byId.getExtension())).getData(); + if (data!=null) { + byId.setGoodType(data.getOrderType()); + } return R.ok(byId); } @@ -573,6 +579,14 @@ }else { appUserInfoDto.setIsVip(1); appUserInfoDto.setVipExpireTime(byId.getVipEndTime()); + + + + + + + + } //判断当天是否签到 Long count = signService.lambdaQuery().eq(TAppUserSign::getAppUserId,userId).eq(TAppUserSign::getSignDay, LocalDate.now()).count(); @@ -588,8 +602,26 @@ appUserInfoDto.setUserCars(list); appUserInfoDto.setFirstAdd(byId.getFirstAdd()!=null?byId.getFirstAdd():0); appUserInfoDto.setPoints(byId.getPoints()==null?0:byId.getPoints()); + + + + + return R.ok(appUserInfoDto); + + } + + + @ApiOperation(value = "设置头像", tags = {"小程序-个人中心"}) + @GetMapping(value = "/user/set/avatar") + public R avatar(String url) { + Long userId = tokenService.getLoginUserApplet().getUserId(); + TAppUser byId = appUserService.getById(userId); + byId.setAvatar(url); + appUserService.updateById(byId); + + return R.ok(); } @@ -1015,6 +1047,17 @@ String brand = CarBrandUtil.getBrand(); JSONObject jsonObject = JSON.parseObject(brand); JSONArray data = jsonObject.getJSONArray("data"); + JSONArray data1 = new JSONArray(); + if (name!=null) { + for (int i = 0; i < data.size(); i++) { + JSONObject brand1 = data.getJSONObject(i); + String o = (String) brand1.get("name"); + if (o.contains(name)) { + data1.add(brand1); + } + } + return R.ok(data1); + } return R.ok(data); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java index 2bedb36..6802f7c 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserVipDetailController.java @@ -1,17 +1,25 @@ package com.ruoyi.account.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.api.vo.GetAppUserVipDetail; import com.ruoyi.account.service.TAppUserVipDetailService; +import com.ruoyi.account.util.VipInfoDto; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; +import com.ruoyi.other.api.dto.VipCouponDto; +import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** @@ -43,12 +51,14 @@ @Resource private VipClient vipClient; + @Resource + private OtherClient otherClient; @GetMapping("/getVipUseDetail") @ApiOperation(value = "生效会员列表", tags = {"小程序-个人中心"}) public R<List<TAppUserVipDetail>> getVipUseDetail(){ Long userId = tokenService.getLoginUserApplet().getUserId(); - List<TAppUserVipDetail> list = appUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, userId).last(" and now() between start_time and end_time order by start_time asc").list(); + List<TAppUserVipDetail> list = appUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, userId).last(" and now() <= end_time order by start_time asc").list(); for (TAppUserVipDetail tAppUserVipDetail : list) { if(null != tAppUserVipDetail.getVipId()){ @@ -56,6 +66,10 @@ tAppUserVipDetail.setVipName(data.getName()); } } + + + + return R.ok(list); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java index a743b4a..4d5e00f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/WxLoginController.java @@ -63,11 +63,15 @@ private WeixinProperties wxConfig; @Autowired private RestTemplate wxRestTemplate; -// /** -// * 上传文件存储在本地的根路径 -// */ -// @Value("${file.path}") -// private String localFilePath; + /** + * 上传文件存储在本地的根路径 + */ + @Value("${file.upload.location}") + private String localFilePath; + + + + @ApiOperation(value = "通过code获得openid,获取用户信息",tags = {"微信小程序登录"}) @PostMapping("/openIdByJsCode") public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserEncrypteData data) { @@ -99,9 +103,11 @@ public AjaxResult<Map<String, Object>> openIdByJsCode(@RequestBody AppletUserDecodeData appletUserDecodeData) { return AjaxResult.success(appUserService.wxLogin(appletUserDecodeData, null)); } + // public static MultipartFile convertInputStreamToMultipartFile(InputStream inputStream, String fileName, String contentType) throws IOException { // return new MockMultipartFile(fileName, fileName, contentType, inputStream); // } + @ApiOperation(value = "获取微信小程序二维码",tags = {"获取微信小程序二维码"}) @PostMapping("/getQRCode") public AjaxResult getQRCode() { diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java index aaee34a..f4d78d6 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppCouponServiceImpl.java @@ -15,20 +15,15 @@ import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; -import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.DateUtils; -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.order.api.feignClient.OrderClient; import com.ruoyi.order.api.query.TChargingCountQuery; -import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; -import io.swagger.models.auth.In; -import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java index 1894f70..b5907d9 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java @@ -3,7 +3,6 @@ import com.alibaba.fastjson2.JSON; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.dto.SendCouponDto; -import com.ruoyi.account.api.feignClient.AppCouponClient; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.mapper.TAppUserVipDetailMapper; @@ -11,9 +10,7 @@ import com.ruoyi.account.service.TAppCouponService; import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.other.api.domain.TCoupon; -import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.stereotype.Service; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java index 122ca09..578e04a 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java @@ -5,8 +5,6 @@ import com.ruoyi.account.api.model.TAppUserVipDetail; import com.ruoyi.account.service.TAppUserService; import com.ruoyi.account.service.TAppUserVipDetailService; -import org.intellij.lang.annotations.RegExp; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; 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 b33e709..12dccfc 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 @@ -1,7 +1,6 @@ package com.ruoyi.account.util; import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONArray; import com.ruoyi.account.api.dto.SendCouponDto; import com.ruoyi.account.api.model.TAppCoupon; import com.ruoyi.account.api.model.TAppUser; diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java index 5a287f5..3431f5f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/SignDayUtil.java @@ -71,6 +71,6 @@ // 更新最后的连续天数 maxContinuousDays = Math.max(maxContinuousDays, currentContinuousDays); - return maxContinuousDays; + return currentContinuousDays; } } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/VipInfoDto.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/VipInfoDto.java new file mode 100644 index 0000000..bd622b4 --- /dev/null +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/VipInfoDto.java @@ -0,0 +1,45 @@ +package com.ruoyi.account.util; + +import com.ruoyi.other.api.dto.VipCouponDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +public class VipInfoDto { + private Integer id; + @ApiModelProperty("月卡价格") + private BigDecimal monthlyCard; + @ApiModelProperty(value = "月卡折扣") + private BigDecimal monthlyCardDiscount; + @ApiModelProperty("季卡价格") + private BigDecimal seasonCard; + @ApiModelProperty(value = "季卡折扣") + private BigDecimal seasonCardDiscount; + @ApiModelProperty("年卡价格") + private BigDecimal annualCard; + @ApiModelProperty(value = "年卡折扣") + private BigDecimal annualCardDiscount; + @ApiModelProperty("最高抵扣价格") + private BigDecimal maximumDeduction; + private BigDecimal timeAmount; + @ApiModelProperty("抵扣次数") + private Integer discountTimes; + + @ApiModelProperty(value = "双倍积分开关(0=否,1=是)") + private Integer doubleIntegration; + + @ApiModelProperty(value = "商城专享价开关(0=否,1=是)") + private Integer mallExclusivePrice; + @ApiModelProperty(value = "可赠送的优惠卷列表") + + private List<VipCouponDto> vipCouponDtos; + + @ApiModelProperty(value = "最高总折扣") + private BigDecimal totalDiscount; + + @ApiModelProperty(value = "会员名称") + private String name; +} diff --git a/ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml index 32d84d4..ce8973a 100644 --- a/ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-account/src/main/resources/bootstrap.yml @@ -12,8 +12,8 @@ allow-circular-references: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: config: @@ -56,52 +56,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 192.168.0.137:8080 # Sentinel控制台地址 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 8d76a88..11e7230 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 @@ -304,7 +304,7 @@ @ApiOperation(value = "获取站点详细信息", tags = {"小程序-站点管理-站点详情"}) @PostMapping("/getDetailById") public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){ - SiteDetailVO siteDetailVO = siteService.getDetailById(query.getSiteId()); + SiteDetailVO siteDetailVO = siteService.getDetailById(query); // 查询合作商名称 Partner partner = partnerService.getById(siteDetailVO.getPartnerId()); if(Objects.nonNull(partner)){ diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java index c7e799f..4170703 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TApplyChargingPileController.java @@ -6,6 +6,7 @@ import com.ruoyi.chargingPile.api.model.Partner; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.common.core.utils.WebUtils; +import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.ExportUidDto; import com.ruoyi.order.api.feignClient.OrderClient; @@ -133,6 +134,7 @@ public AjaxResult<Page<TApplyChargingPile>> page(@RequestBody ApplyChargingQuery applyChargingQuery) { Page<TApplyChargingPile> page = applyChargingPileService.lambdaQuery() .like(applyChargingQuery.getLandlordPhone() != null && !applyChargingQuery.getLandlordPhone().equals(""), TApplyChargingPile::getLandlordPhone, applyChargingQuery.getLandlordPhone()) + .orderByDesc(BasePojo::getCreateTime ) .page(Page.of(applyChargingQuery.getPageCurr(), applyChargingQuery.getPageSize())); return AjaxResult.ok(page); } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java index 446fc59..765d06c 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java @@ -157,7 +157,7 @@ public void downloadQRCode(@PathVariable Integer id, HttpServletResponse response){ try { TChargingGun chargingGun = chargingGunService.getById(id); - TChargingPile chargingPile = chargingPileService.getById(chargingGun.getId()); + TChargingPile chargingPile = chargingPileService.getById(chargingGun.getChargingPileId()); String code = chargingPile.getCode() + chargingGun.getCode(); String fileName = URLEncoder.encode(code, "UTF-8") + ".jpg"; response.setContentType("application/force-download"); @@ -177,15 +177,15 @@ inputStream.close(); //清楚服务器上的文件 - Process process = null; - try { - process = Runtime.getRuntime().exec("sudo rm -rf " + filePath); - } catch (IOException e) { - throw new RuntimeException(e); - } - if (process != null) { - process.destroy(); - } +// Process process = null; +// try { +// process = Runtime.getRuntime().exec("sudo rm -rf " + filePath); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// if (process != null) { +// process.destroy(); +// } }catch (Exception e){ e.printStackTrace(); } 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 09bedaa..a663380 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 @@ -36,7 +36,10 @@ import java.io.IOException; import java.math.BigDecimal; import java.net.URLEncoder; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -195,9 +198,62 @@ if (parkingRecordQueryDto.getDayType()==1) { List<Map<String, Object>> maps = parkingRecordService.parkingData(parkingRecordQueryDto); - tParkLotRecordVO.setMaps(maps); + + + List<Map<String, Object>> charMap = new ArrayList<>(); + // 生成从 "00:00" 到 "23:00" 的时间数据 + for (int hour = 0; hour < 24; hour++) { + String time = String.format("%02d:00", hour); + Map<String, Object> mapWithTimeValue = findMapWithTimeValue(maps, time); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("orders", 0); + timeMap.put("timeoutAmount", 0); + + charMap.add(timeMap); + } + } + + tParkLotRecordVO.setMaps(charMap); }else { List<Map<String, Object>> maps = parkingRecordService.parkingDataByDate(parkingRecordQueryDto); + if(parkingRecordQueryDto.getDayType()==2||parkingRecordQueryDto.getDayType()==3){ + //按日 + // 解析 startTime 和 endTime 为 LocalDate + LocalDate startDate = parkingRecordQueryDto.getStartTime(); + LocalDate endDate = parkingRecordQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(maps, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("electrovalence", 0); + dateMap.put("orderCount", 0); + dateMap.put("servicecharge", 0); + dateMap.put("electricity", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tParkLotRecordVO.setMaps(dateRangeStatistics); + + }else { + + } + tParkLotRecordVO.setMaps(maps); } @@ -217,8 +273,23 @@ return R.ok(tParkLotRecordVO); } + private static Map<String, Object> findMapWithTimeValue(List<Map<String, Object>> charMap1,String timeValue) { + for (Map<String, Object> map : charMap1) { + if (map.containsKey("time") && map.get("time").equals(timeValue)) { + return map; + } + } + return null; // 如果没有找到,返回 null + } - + private Map<String, Object> findMapWithDateValue(List<Map<String, Object>> list, String date) { + for (Map<String, Object> map : list) { + if (date.equals(map.get("time"))) { + return map; + } + } + return null; + } @ResponseBody @PostMapping(value = "/parking/work") @ApiOperation(value = "停车订单统计", tags = {"管理后台-工作台"}) diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java index 9a7ab8d..435801d 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java @@ -4,6 +4,7 @@ import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.Site; 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.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; @@ -41,7 +42,7 @@ * @param siteId * @return */ - SiteDetailVO getDetailById(@Param("siteId")Integer siteId); + SiteDetailVO getDetailById(@Param("query") SiteDetailQuery query); /** * 获取站点列表不分页 管理后台-停车场绑定 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java index 15cf0c5..367d6da 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java @@ -4,6 +4,7 @@ import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.Site; 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.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; @@ -72,10 +73,10 @@ /** * 获取站点详情 - * @param siteId + * @param query * @return */ - SiteDetailVO getDetailById(Integer siteId); + SiteDetailVO getDetailById(SiteDetailQuery query); /** * 获取站点列表不分页 管理后台-停车场绑定 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index e83c91e..8029ad5 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; 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.SiteDetailVO; import com.ruoyi.chargingPile.api.vo.SiteVO; @@ -296,8 +297,8 @@ } @Override - public SiteDetailVO getDetailById(Integer siteId) { - return this.baseMapper.getDetailById(siteId); + public SiteDetailVO getDetailById(SiteDetailQuery query) { + return this.baseMapper.getDetailById(query); } @Override diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java index a31d8e0..c512cb8 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TChargingGunServiceImpl.java @@ -257,14 +257,17 @@ Long count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class) .eq(TChargingGun::getStatus, 1)); HashMap<String, Integer> objectObjectHashMap1 = new HashMap<>(); - objectObjectHashMap1.put("1", count.intValue()); + objectObjectHashMap1.put("charge_mode",1); + objectObjectHashMap1.put("modeCount", count.intValue()); statusStatistics.add(objectObjectHashMap1); // statusStatistics.put(1, count.intValue()); // 故障 count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class) .eq(TChargingGun::getStatus, 7)); HashMap<String, Integer> objectObjectHashMap2 = new HashMap<>(); - objectObjectHashMap2.put("2", count.intValue()); +// objectObjectHashMap2.put("2", count.intValue()); + objectObjectHashMap2.put("charge_mode",2); + objectObjectHashMap2.put("modeCount", count.intValue()); statusStatistics.add(objectObjectHashMap2); // statusStatistics.put(2, count.intValue()); @@ -272,7 +275,8 @@ count = this.baseMapper.selectCount(Wrappers.lambdaQuery(TChargingGun.class) .in(TChargingGun::getStatus, Arrays.asList(3,4,5,6))); HashMap<String, Integer> objectObjectHashMap = new HashMap<>(); - objectObjectHashMap.put("3", count.intValue()); + objectObjectHashMap.put("charge_mode",3); + objectObjectHashMap.put("modeCount", count.intValue()); statusStatistics.add(objectObjectHashMap); // statusStatistics.put(3, count.intValue()); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml index 1aa8faa..7c025cd 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml @@ -12,8 +12,8 @@ allow-circular-references: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: config: @@ -56,52 +56,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 127.0.0.1:8080 # Sentinel控制台地址 diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml index 111e8fb..a683383 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml @@ -210,7 +210,7 @@ ) ) * 1000 ) AS distance - FROM t_site WHERE id = #{siteId} AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} + FROM t_site WHERE id = #{query.siteId} AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </select> <select id="getSiteListParkLot" resultType="com.ruoyi.chargingPile.api.model.Site"> select ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml index c2a81d1..5ffee38 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TParkingRecordMapper.xml @@ -84,7 +84,7 @@ </select> <select id="parkingData" resultType="java.util.Map"> SELECT - DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS TIME, + DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS time, count( 1 ) AS orders, SUM( timeout_amount ) AS timeoutAmount FROM @@ -94,13 +94,13 @@ AND parking_lot_id = #{parkingRecordQueryDto.parkingLotId} </if> GROUP BY - TIME + time ORDER BY - TIME + time </select> <select id="parkingDataByDate" resultType="java.util.Map"> SELECT - DATE_FORMAT( create_time, '%Y-%m-%d' ) AS TIME, + DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time, count( 1 ) AS orders, SUM( timeout_amount ) AS timeoutAmount FROM @@ -110,27 +110,27 @@ AND parking_lot_id = #{parkingRecordQueryDto.parkingLotId} </if> <if test="parkingRecordQueryDto.dayType == 2"> - AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) + AND WEEKOFYEAR( create_time ) = WEEKOFYEAR( CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 3"> - AND MONTH( co.create_time ) = MONTH(CURDATE()) + AND MONTH( create_time ) = MONTH(CURDATE()) </if> <if test="parkingRecordQueryDto.dayType == 4"> - AND YEAR( co.create_time ) = YEAR(CURDATE() ) + AND YEAR( create_time ) = YEAR(CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 5"> <if test="parkingRecordQueryDto.startTime != null"> - AND co.create_time >= #{parkingRecordQueryDto.startTime} + AND create_time >= #{parkingRecordQueryDto.startTime} </if> <if test="parkingRecordQueryDto.endTime != null"> - AND co.create_time <= #{parkingRecordQueryDto.endTime} + AND create_time <= #{parkingRecordQueryDto.endTime} </if> </if> </where> GROUP BY - TIME + time ORDER BY - TIME + time </select> @@ -147,20 +147,20 @@ AND DATE( create_time ) = CURDATE() </if> <if test="parkingRecordQueryDto.dayType == 2"> - AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) + AND WEEKOFYEAR( create_time ) = WEEKOFYEAR( CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 3"> - AND MONTH( co.create_time ) = MONTH(CURDATE()) + AND MONTH( create_time ) = MONTH(CURDATE()) </if> <if test="parkingRecordQueryDto.dayType == 4"> - AND YEAR( co.create_time ) = YEAR(CURDATE() ) + AND YEAR( create_time ) = YEAR(CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 5"> <if test="parkingRecordQueryDto.startTime != null"> - AND co.create_time >= #{parkingRecordQueryDto.startTime} + AND create_time >= #{parkingRecordQueryDto.startTime} </if> <if test="parkingRecordQueryDto.endTime != null"> - AND co.create_time <= #{parkingRecordQueryDto.endTime} + AND create_time <= #{parkingRecordQueryDto.endTime} </if> </if> </where> @@ -180,20 +180,20 @@ AND DATE( create_time ) = CURDATE() </if> <if test="parkingRecordQueryDto.dayType == 2"> - AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) + AND WEEKOFYEAR( create_time ) = WEEKOFYEAR( CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 3"> - AND MONTH( co.create_time ) = MONTH(CURDATE()) + AND MONTH( create_time ) = MONTH(CURDATE()) </if> <if test="parkingRecordQueryDto.dayType == 4"> - AND YEAR( co.create_time ) = YEAR(CURDATE() ) + AND YEAR( create_time ) = YEAR(CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 5"> <if test="parkingRecordQueryDto.startTime != null"> - AND co.create_time >= #{parkingRecordQueryDto.startTime} + AND create_time >= #{parkingRecordQueryDto.startTime} </if> <if test="parkingRecordQueryDto.endTime != null"> - AND co.create_time <= #{parkingRecordQueryDto.endTime} + AND create_time <= #{parkingRecordQueryDto.endTime} </if> </if> </where> @@ -216,20 +216,20 @@ AND DATE( create_time ) = CURDATE() </if> <if test="parkingRecordQueryDto.dayType == 2"> - AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) + AND WEEKOFYEAR( create_time ) = WEEKOFYEAR( CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 3"> - AND MONTH( co.create_time ) = MONTH(CURDATE()) + AND MONTH( create_time ) = MONTH(CURDATE()) </if> <if test="parkingRecordQueryDto.dayType == 4"> - AND YEAR( co.create_time ) = YEAR(CURDATE() ) + AND YEAR( create_time ) = YEAR(CURDATE() ) </if> <if test="parkingRecordQueryDto.dayType == 5"> <if test="parkingRecordQueryDto.startTime != null"> - AND co.create_time >= #{parkingRecordQueryDto.startTime} + AND create_time >= #{parkingRecordQueryDto.startTime} </if> <if test="parkingRecordQueryDto.endTime != null"> - AND co.create_time <= #{parkingRecordQueryDto.endTime} + AND create_time <= #{parkingRecordQueryDto.endTime} </if> </if> </where> diff --git a/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml index 12e29cf..b61f26e 100644 --- a/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-integration/src/main/resources/bootstrap.yml @@ -12,8 +12,8 @@ allow-circular-references: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: @@ -64,52 +64,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 127.0.0.1:8080 # Sentinel控制台地址 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 eca723a..1840a77 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 @@ -614,7 +614,7 @@ } @ResponseBody - @GetMapping(value = "/work/shop") + @PostMapping(value = "/work/shop") @ApiOperation(value = "购物收入", tags = {"后台-工作台"}) public R workShop(@RequestBody ChargingStatisticsQueryDto statisticsQueryDto) { //count近6个月的数据 @@ -832,9 +832,73 @@ //上方折现 if (statisticsQueryDto.getDayType()==1){ List<Map<String,Object>> map = chargingOrderService.usersDay(); - tCharingUserMapVO.setMap(map); + + List<Map<String, Object>> charMap = new ArrayList<>(); + // 生成从 "00:00" 到 "23:00" 的时间数据 + for (int hour = 0; hour < 24; hour++) { + String time = String.format("%02d:00", hour); + Map<String, Object> mapWithTimeValue = findMapWithTimeValue(map, time); + if (mapWithTimeValue!=null){ + charMap.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("counts", 0); + + charMap.add(timeMap); + } + } + + List<Map<String,Object>> map1 = chargingOrderService.usersDay1(); + + List<Map<String, Object>> charMap1 = new ArrayList<>(); + // 生成从 "00:00" 到 "23:00" 的时间数据 + for (int hour = 0; hour < 24; hour++) { + String time = String.format("%02d:00", hour); + Map<String, Object> mapWithTimeValue = findMapWithTimeValue(map1, time); + if (mapWithTimeValue!=null){ + charMap1.add(mapWithTimeValue); + }else { + Map<String, Object> timeMap = new HashMap<>(); + timeMap.put("time", time); // 初始化值为 null + timeMap.put("counts", 0); + + charMap1.add(timeMap); + } + } + + + tCharingUserMapVO.setMap(charMap); + tCharingUserMapVO.setMap1(charMap1); }else { List<Map<String,Object>> map = chargingOrderService.usersByQuery(statisticsQueryDto); + + + //按日 + // 解析 startTime 和 endTime 为 LocalDate + LocalDate startDate = statisticsQueryDto.getStartTime(); + LocalDate endDate = statisticsQueryDto.getEndTime(); + + List<Map<String, Object>> dateRangeStatistics = new ArrayList<>(); + + // 遍历日期范围 + while (!startDate.isAfter(endDate)) { + String formattedDate = startDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + Map<String, Object> dailyStats = findMapWithDateValue(map, formattedDate); + + if (dailyStats != null) { + dateRangeStatistics.add(dailyStats); + } else { + Map<String, Object> dateMap = new HashMap<>(); + dateMap.put("time", formattedDate); + dateMap.put("counts", 0); + dateRangeStatistics.add(dateMap); + } + + // 移动到下一天 + startDate = startDate.plusDays(1); + } + tCharingUserMapVO.setMap(map); } @@ -923,18 +987,37 @@ List<Map<String,Object>> equipmentMap1 = chargingOrderService.equipmentUserType1(siteIds,statisticsQueryDto); //交流可用率 List<Map<String,Object>> equipmentMap2= chargingOrderService.equipmentUserType2(siteIds,statisticsQueryDto); + + //取出直流可用率和交流可用率的percent的平均值保留两位小数 + + double average1 = calculateAveragePercent(equipmentMap1, equipmentMap2); + System.out.printf("The average percent is: %.2f\n", average1); + + //直流故障率 List<Map<String,Object>> equipmentMapbroke1 = chargingOrderService.equipmentMapbroke1(siteIds,statisticsQueryDto); //交流故障率 List<Map<String,Object>> equipmentMapbroke2 = chargingOrderService.equipmentMapbroke2(siteIds,statisticsQueryDto); + + + double average2 = calculateAveragePercent(equipmentMapbroke1, equipmentMapbroke2); + System.out.printf("The average percent is: %.2f\n", average2); //直流离网率 List<Map<String,Object>> equipmentMapOut1 = chargingOrderService.equipmentMapOut1(siteIds,statisticsQueryDto); //交流离网率 List<Map<String,Object>> equipmentMapOut2 = chargingOrderService.equipmentMapOut2(siteIds,statisticsQueryDto); + double average3 = calculateAveragePercent(equipmentMapOut1, equipmentMapOut2); + System.out.printf("The average percent is: %.2f\n", average3); //需求电流满足率 - List<Map<String,Object>> needElec = chargingOrderService.needElec(siteIds,statisticsQueryDto); + List<Map<String,Object>> needElec1 = chargingOrderService.needElec(siteIds,statisticsQueryDto); + List<Map<String,Object>> needElec2 = chargingOrderService.needElec1(siteIds,statisticsQueryDto); + + double average4 = calculateAveragePercent(needElec1, needElec2); + System.out.printf("The average percent is: %.2f\n", average4); + + TCharingUserEquimentVO tCharingUserEquimentVO = new TCharingUserEquimentVO(); tCharingUserEquimentVO.setEquipmentMap1(equipmentMap1); @@ -943,11 +1026,41 @@ tCharingUserEquimentVO.setEquipmentMapbroke2(equipmentMapbroke2); tCharingUserEquimentVO.setEquipmentMapOut1(equipmentMapOut1); tCharingUserEquimentVO.setEquipmentMapOut2(equipmentMapOut2); - tCharingUserEquimentVO.setNeedElec(needElec); + tCharingUserEquimentVO.setNeedElec1(needElec1); + tCharingUserEquimentVO.setNeedElec2(needElec2); + tCharingUserEquimentVO.setAverage1(average1); + tCharingUserEquimentVO.setAverage2(average2); + tCharingUserEquimentVO.setAverage3(average3); + tCharingUserEquimentVO.setAverage4(average4); return R.ok(tCharingUserEquimentVO); } + private static double calculateAveragePercent(List<Map<String, Object>> mapList1, List<Map<String, Object>> mapList2) { + int totalElements = mapList1.size() + mapList2.size(); + double sum = 0.0; + + // 累加两个列表中所有元素的 "percent" 值 + for (Map<String, Object> map : mapList1) { + if (map.containsKey("percent")) { + sum += Double.parseDouble((String) map.get("percent")); + } + } + for (Map<String, Object> map : mapList2) { + if (map.containsKey("percent")) { + sum += Double.parseDouble((String) map.get("percent")); + } + } + + // 防止除以零错误 + if (totalElements == 0) { + return 0.0; + } + + // 计算平均值 + return sum / totalElements; + } + @ResponseBody @PostMapping(value = "/work/charge") @ApiOperation(value = "上方充电数据统计", tags = {"管理后台-工作台"}) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java index 42d7456..f686282 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TExchangeOrderController.java @@ -281,7 +281,7 @@ tExchangeOrder.setPurchaseQuantity(1); tExchangeOrder.setAppUserAddressId(exchangeDto.getAddressId()==null?null:Long.valueOf(exchangeDto.getAddressId())); tExchangeOrder.setPoints(exchangeDto.getPoint()); - tExchangeOrder.setRemark(""); + tExchangeOrder.setRemark(exchangeDto.getRemark()); if (exchangeDto.getGoodType()==1){ tExchangeOrder.setStatus(1); }else { @@ -312,6 +312,7 @@ @ApiOperation(value = "获取兑换订单详情", tags = {"小程序-兑换记录"}) public AjaxResult<ExchangeOrderGoodsInfo> getGoodsExchangeOrder(@PathVariable String id){ ExchangeOrderGoodsInfo goodsExchangeOrder = exchangeOrderService.getGoodsExchangeOrder(id); + return AjaxResult.success(goodsExchangeOrder); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java index 85a3ca5..3158616 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java @@ -357,8 +357,12 @@ shoppingOrder.setOrderType(exchangeDto.getGoodType()); if (exchangeDto.getGoodType() == 1) { shoppingOrder.setGoodsId(exchangeDto.getGoodId()); + shoppingOrder.setStatus(1); + } else { shoppingOrder.setCouponId(exchangeDto.getGoodId()); + shoppingOrder.setStatus(3); + } shoppingOrder.setPurchaseQuantity(exchangeDto.getNum()); shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId()); @@ -373,7 +377,6 @@ shoppingOrder.setPaymentStatus(1); shoppingOrder.setPaymentType(exchangeDto.getPayMethod()); shoppingOrder.setRemark(exchangeDto.getRemark()); - shoppingOrder.setStatus(1); shoppingOrder.setPhone(exchangeDto.getPhone()); shoppingOrder.setCreateTime(LocalDateTime.now()); shoppingOrder.setDelFlag(false); diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java index 5bb36ce..880dca7 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java @@ -1,5 +1,6 @@ package com.ruoyi.order.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -19,6 +20,7 @@ @ApiModelProperty("支付金额") private BigDecimal payAmount; @ApiModelProperty("支付时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime payTime; @ApiModelProperty("退款金额") private BigDecimal refundAmount; diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java index b86d8b1..71c3b12 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java @@ -86,17 +86,18 @@ Map<String, Object> queryPowerLevel(@Param("siteIds") List<Integer> siteIds,@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); - List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(List<Integer> siteIds); + List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(@Param("siteIds")List<Integer> siteIds); List<Map<String, Object>> usersDay(); + List<Map<String, Object>> usersDay1(); - List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto); + List<Map<String, Object>> usersByQuery(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); List<Map<String, Object>> getUserTagCount(); List<Map<String, Object>> getVipCount(); - List<Map<String, Object>> unitConsumption(ChargingStatisticsQueryDto statisticsQueryDto); + List<Map<String, Object>> unitConsumption(@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); List<Map<String, Object>> carUserMethod(); @@ -104,11 +105,11 @@ Map<String, Object> countLocalCar(); - Long getAver(List<Integer> siteIds); + Long getAver(@Param("siteIds") List<Integer> siteIds); - List<Map<String, Object>> getLevelEvaluate(List<Integer> siteIds); + List<Map<String, Object>> getLevelEvaluate(@Param("siteIds")List<Integer> siteIds); - List<Map<String, Object>> countBySource(List<Integer> siteIds); + List<Map<String, Object>> countBySource(@Param("siteIds")List<Integer> siteIds); List<Map<String, Object>> equipmentUserType1(@Param("siteIds") List<Integer> siteIds, @Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); @@ -133,4 +134,6 @@ List<Map<String, Object>> getchargingCapacity(@Param("siteIds")List<Integer> siteIds,@Param("statisticsQueryDto") ChargingDetailQueryDto statisticsQueryDto); List<Map<String, Object>> countAllUserData(); + + List<Map<String, Object>> needElec1(@Param("siteIds")List<Integer> siteIds,@Param("statisticsQueryDto") ChargingStatisticsQueryDto statisticsQueryDto); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java index 8edbcfd..75a7287 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TOrderEvaluateMapper.java @@ -50,7 +50,7 @@ */ List<TOrderEvaluateVO> getOrderEvaluateBySiteId(@Param("siteId")Integer siteId); - List<Map<String, Object>> goodTop(List<Integer> siteIds); + List<Map<String, Object>> goodTop(@Param("siteIds")List<Integer> siteIds); - List<Map<String, Object>> badTop(List<Integer> siteIds); + List<Map<String, Object>> badTop(@Param("siteIds")List<Integer> siteIds); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java index 6b2df64..790dc57 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java @@ -180,6 +180,7 @@ List<Map<String, Object>> queryOrderCountAndMoneyBySiteIdDate(List<Integer> siteIds); List<Map<String, Object>> usersDay(); + List<Map<String, Object>> usersDay1(); List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto); @@ -240,4 +241,6 @@ List<Map<String, Object>> getchargingCapacity(List<Integer> siteIds, ChargingDetailQueryDto statisticsQueryDto); List<Map<String, Object>> countAllUserData(); + + List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java index 7efe4e0..5c74ac5 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java @@ -1,9 +1,7 @@ package com.ruoyi.order.service.impl; -import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -35,7 +33,6 @@ import com.ruoyi.order.api.dto.SettlementConfirmAdd; import com.ruoyi.order.api.feignClient.AccountingStrategyDetailOrderClient; import com.ruoyi.order.api.feignClient.AccountingStrategyOrderClient; -import com.ruoyi.order.api.feignClient.ChargingOrderAccountingStrategyClient; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.query.SettlementListQuery; @@ -60,15 +57,11 @@ import com.ruoyi.payment.api.model.WxPaymentRefundModel; import com.ruoyi.payment.api.vo.*; import com.ruoyi.system.api.feignClient.SysUserClient; -import com.sun.org.apache.bcel.internal.generic.NEW; import io.seata.spring.annotation.GlobalTransactional; -import io.swagger.annotations.ApiModelProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import javax.annotation.Resource; @@ -1979,6 +1972,11 @@ } @Override + public List<Map<String, Object>> usersDay1() { + return this.baseMapper.usersDay1(); + } + + @Override public List<Map<String, Object>> usersByQuery(ChargingStatisticsQueryDto statisticsQueryDto) { return this.baseMapper.usersByQuery(statisticsQueryDto); } @@ -2026,6 +2024,8 @@ @Resource private TShoppingOrderService shoppingOrderService; + @Resource + private TShoppingOrderRefundService shoppingOrderRefundService; @Override public R payRefund(PayOrderRefundDto payOrderQueryDto) { if (payOrderQueryDto.getType()==1){ @@ -2060,6 +2060,9 @@ model.setAmount(amount); R<String> orderR = wxPaymentClient.refundOrderR(model); if(200 == orderR.getCode()){ + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + this.baseMapper.updateById(tChargingOrder); chargingOrderRefundService.save(chargingOrderRefund); } } @@ -2073,6 +2076,9 @@ RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + this.baseMapper.updateById(tChargingOrder); chargingOrderRefundService.save(chargingOrderRefund); } @@ -2085,8 +2091,8 @@ } if (payOrderQueryDto.getType()==2){ TShoppingOrder tChargingOrder = shoppingOrderService.getById(payOrderQueryDto.getOrderId()); - TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund(); - chargingOrderRefund.setChargingOrderId(tChargingOrder.getId()); + TShoppingOrderRefund chargingOrderRefund = new TShoppingOrderRefund(); + chargingOrderRefund.setShoppingOrderId(tChargingOrder.getId()); chargingOrderRefund.setRefundAmount(payOrderQueryDto.getRefundAmount()); chargingOrderRefund.setRefundStatus(1); chargingOrderRefund.setPayType(tChargingOrder.getPaymentType()); @@ -2115,7 +2121,10 @@ model.setAmount(amount); R<String> orderR = wxPaymentClient.refundOrderR(model); if(200 == orderR.getCode()){ - chargingOrderRefundService.save(chargingOrderRefund); + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + shoppingOrderService.updateById(tChargingOrder); + shoppingOrderRefundService.save(chargingOrderRefund); } } @@ -2128,7 +2137,12 @@ RefundResp resp = aliPaymentClient.refund(dto).getData(); if(null != resp){ SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE"); - chargingOrderRefundService.save(chargingOrderRefund); + + tChargingOrder.setRefundStatus(2); + tChargingOrder.setRefundAmount((tChargingOrder.getRefundAmount()==null? BigDecimal.valueOf(0) :tChargingOrder.getRefundAmount()).add(payOrderQueryDto.getRefundAmount())); + shoppingOrderService.updateById(tChargingOrder); + + shoppingOrderRefundService.save(chargingOrderRefund); } } @@ -2572,6 +2586,11 @@ return this.baseMapper.countAllUserData(); } + @Override + public List<Map<String, Object>> needElec1(List<Integer> siteIds, ChargingStatisticsQueryDto statisticsQueryDto) { + return this.baseMapper.needElec1(siteIds,statisticsQueryDto); + } + public static void main(String[] args) { // String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); // String format1 = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy年MM月dd日HH:mm:ss")); diff --git a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml index 917dd7a..d0b8691 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-order/src/main/resources/bootstrap.yml @@ -29,7 +29,6 @@ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb username: nacos password: nacos - ip: 192.168.110.85 config: # 配置中心地址 server-addr: 192.168.110.169:8848 diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml index a1b1e71..abb234b 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml @@ -191,7 +191,7 @@ AND o.code LIKE CONCAT('%',#{data.code},'%') </if> <if test="data.phone != null and data.phone != ''"> - AND o.phone LIKE CONCAT('%',#{data.phone},'%') + AND i.phone LIKE CONCAT('%',#{data.phone},'%') </if> <if test="data.type != null"> AND o.type = #{data.type} @@ -211,7 +211,7 @@ <if test="data.isRefund == 1"> AND o.refund_status is not null </if> - <if test="data.isRefund == 1"> + <if test="data.isRefund == 2"> AND o.refund_status is null </if> @@ -592,25 +592,10 @@ </select> <select id="usersDay" resultType="java.util.Map"> + SELECT - 'today' AS data_type, - '1' as type, - DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS TIME, - count(DISTINCT app_user_id) AS counts - FROM - t_charging_order - WHERE - del_flag = 0 - AND recharge_payment_status = 2 - AND ISNULL( refund_status ) - AND DATE ( create_time ) = CURDATE() - GROUP BY - TIME - UNION all - SELECT - 'today' AS data_type, - '2' as type, - DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS TIME, + + DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS time, count(1) AS counts FROM charging_pile_account.t_app_user @@ -618,47 +603,31 @@ del_flag = 0 AND DATE ( create_time ) = CURDATE() GROUP BY - TIME + time </select> - <select id="usersByQuery" resultType="java.util.Map"> + + + <select id="usersDay1" resultType="java.util.Map"> SELECT 'today' AS data_type, '1' as type, - DATE_FORMAT( create_time, '%Y-%m-%d' ) AS TIME, - count(DISTINCT app_user_id) AS counts + DATE_FORMAT( create_time, '%Y-%m-%d %H' ) AS time, + count(DISTINCT app_user_id) AS counts FROM t_charging_order WHERE del_flag = 0 AND recharge_payment_status = 2 AND ISNULL( refund_status ) - <if test="statisticsQueryDto.dayType =1 "> - AND DATE(create_time) = CURDATE() - </if> - <if test="statisticsQueryDto.dayType =2 "> - AND WEEKOFYEAR(create_time) = WEEKOFYEAR(CURDATE()) - </if> - <if test="statisticsQueryDto.dayType =3 "> - AND MONTH(create_time) = MONTH(CURDATE()) - </if> - <if test="statisticsQueryDto.dayType =4"> - AND YEAR(create_time) = YEAR(CURDATE()) - </if> - <if test="statisticsQueryDto.dayType =5"> - <if test="statisticsQueryDto.startTime != null"> - AND create_time >= #{statisticsQueryDto.startTime} - </if> - <if test="statisticsQueryDto.endTime != null"> - AND create_time <= #{statisticsQueryDto.endTime} - </if> - </if> + AND DATE ( create_time ) = CURDATE() GROUP BY - TIME - UNION all + time + </select> + <select id="usersByQuery" resultType="java.util.Map"> + SELECT - 'today' AS data_type, - '2' as type, - DATE_FORMAT( create_time, '%Y-%m-%d' ) AS TIME, + + DATE_FORMAT( create_time, '%Y-%m-%d' ) AS time, count(1) AS counts FROM charging_pile_account.t_app_user @@ -685,43 +654,51 @@ </if> </if> GROUP BY - TIME + time </select> <select id="getUserTagCount" resultType="java.util.Map"> - SELECT user_tag_id,COUNT(1) as count from ( + SELECT + tt.`name`, + COUNT( 1 ) AS count + FROM + ( SELECT a.app_user_id, a.user_tag_id, a.create_time FROM charging_pile_account.t_app_user_tag a - JOIN ( - SELECT - app_user_id, - MAX(create_time) AS max_create_time - FROM - charging_pile_account.t_app_user_tag - GROUP BY - app_user_id - ) b ON a.app_user_id = b.app_user_id AND a.create_time = b.max_create_time + JOIN ( SELECT app_user_id, MAX( create_time ) AS max_create_time FROM charging_pile_account.t_app_user_tag GROUP BY app_user_id ) b ON a.app_user_id = b.app_user_id + AND a.create_time = b.max_create_time ) o - GROUP BY o.user_tag_id + LEFT JOIN `charging_pile_other`.`t_user_tag` tt on o.user_tag_id = tt.id + GROUP BY + tt.name </select> <select id="getVipCount" resultType="java.util.Map"> - SELECT vip_id,count(1) as Counts - FROM charging_pile_account.t_app_user - WHERE del_flag = 0 - GROUP BY vip_id + SELECT + tv.`name`, + count(1) AS Counts + FROM + charging_pile_account.t_app_user ta + LEFT JOIN `charging_pile_other`.`t_vip` tv on ta.vip_id = tv.id + WHERE + ta.del_flag = 0 + GROUP BY + tv.`name` </select> <select id="unitConsumption" resultType="java.util.Map"> SELECT + tc.`name`, au.company_id as companyId, SUM( co.charging_capacity ) as chargingCapacity FROM charging_pile_order.t_charging_order co LEFT JOIN charging_pile_account.t_app_user au ON co.app_user_id = au.id + LEFT JOIN `charging_pile_other`.`t_company` tc on au.company_id = tc.id + <where> co.del_flag = 0 <if test="statisticsQueryDto.dayType == 1"> @@ -746,7 +723,7 @@ </if> </where> GROUP BY - au.company_id + tc.`name`, au.company_id </select> <select id="carUserMethod" resultType="java.util.Map"> SELECT @@ -777,13 +754,14 @@ `t_order_evaluate` te LEFT JOIN t_charging_order co on te.order_id = co.id WHERE + 1 = 1 <if test="siteIds != null and siteIds.size() > 0"> AND co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> #{siteId} </foreach> </if> - te.del_flag = 0 + AND te.del_flag = 0 </select> <select id="getLevelEvaluate" resultType="java.util.Map"> @@ -890,7 +868,7 @@ source_name as source from t_charging_order where 1=1 - del_flag = 0 + AND del_flag = 0 AND recharge_payment_status = 2 <if test="siteIds != null and siteIds.size() > 0"> and site_id IN @@ -923,7 +901,7 @@ </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as siteName + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName FROM `charging_pile_order`.`t_charging_order` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -983,7 +961,7 @@ </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as siteName + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as siteName FROM `charging_pile_order`.`t_charging_order` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -1040,7 +1018,7 @@ )) </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 FROM `charging_pile_service`.`t_fault_message` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -1097,7 +1075,7 @@ )) </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 FROM `charging_pile_service`.`t_fault_message` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -1154,7 +1132,7 @@ )) </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 FROM `charging_pile_service`.`t_fault_message` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -1209,7 +1187,7 @@ )) </if> - ), 2) AS total_days,co.charging_gun_id,tc.name,cp.name as name1 + ), 2) AS percent,co.charging_gun_id,tc.name,cp.name as name1 FROM `charging_pile_service`.`t_fault_message` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc on co.charging_gun_id = tc.id @@ -1249,13 +1227,14 @@ SELECT FORMAT((SUM(co.current) / SUM(co.need_elec)), 2) AS percent, co.charging_gun_id, - tc.name, - cp.name AS gun_name + tc.name as name, + cp.name AS siteName FROM `charging_pile_order`.`t_charging_order` co LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id <where> + cp.type = 1 <if test="siteIds != null and siteIds.size() > 0"> and co.site_id IN <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> @@ -1439,4 +1418,48 @@ </select> + <select id="needElec1" resultType="java.util.Map"> + SELECT + FORMAT((SUM(co.current) / SUM(co.need_elec)), 2) AS percent, + co.charging_gun_id, + tc.name as name, + cp.name AS siteName + FROM + `charging_pile_order`.`t_charging_order` co + LEFT JOIN `charging_pile_service`.`t_charging_gun` tc ON co.charging_gun_id = tc.id + LEFT JOIN `charging_pile_service`.`t_charging_pile` cp ON tc.charging_pile_id = cp.id + <where> + cp.type = 2 + <if test="siteIds != null and siteIds.size() > 0"> + and co.site_id IN + <foreach collection="siteIds" item="siteId" open="(" separator="," close=")"> + #{siteId} + </foreach> + </if> + <if test="statisticsQueryDto.dayType == 1"> + AND DATE( co.create_time ) = CURDATE() + </if> + <if test="statisticsQueryDto.dayType == 2"> + AND WEEKOFYEAR( co.create_time ) = WEEKOFYEAR( CURDATE() ) + </if> + <if test="statisticsQueryDto.dayType == 3"> + AND MONTH( co.create_time ) = MONTH(CURDATE()) + </if> + <if test="statisticsQueryDto.dayType == 4"> + AND YEAR( co.create_time ) = YEAR(CURDATE() ) + </if> + <if test="statisticsQueryDto.dayType == 5"> + <if test="statisticsQueryDto.startTime != null"> + AND co.create_time >= #{statisticsQueryDto.startTime} + </if> + <if test="statisticsQueryDto.endTime != null"> + AND co.create_time <= #{statisticsQueryDto.endTime} + </if> + </if> + </where> + GROUP BY + tc.name, + cp.name, + co.charging_gun_id; + </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml index 472e744..67673b1 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TOrderEvaluateMapper.xml @@ -125,10 +125,15 @@ order by a.create_time desc </select> <select id="goodTop" resultType="java.util.Map"> - SELECT count(1) as counts ,ot.evaluation_tag_id - from t_order_evaluate_tag ot - left join t_order_evaluate te on ot.order_evaluate_id = te.id - left join t_charging_order co on te.order_id = co.id + SELECT + count( 1 ) AS counts, + + tt.`name` + FROM + t_order_evaluate_tag ot + LEFT JOIN t_order_evaluate te ON ot.order_evaluate_id = te.id + LEFT JOIN t_charging_order co ON te.order_id = co.id + LEFT JOIN `charging_pile_other`.`t_evaluation_tag` tt on ot.evaluation_tag_id = tt.id WHERE ot.evaluation_tag_id in ( SELECT id from `charging_pile_other`.`t_evaluation_tag` WHERE type = 1 ) <if test="null != siteIds"> @@ -137,18 +142,25 @@ #{item} </foreach> </if> - GROUP BY ot.evaluation_tag_id - ORDER BY counts desc - limit 5 + GROUP BY + tt.`name` + ORDER BY + counts DESC + LIMIT 5 </select> <select id="badTop" resultType="java.util.Map"> - SELECT count(1) as counts ,ot.evaluation_tag_id - from t_order_evaluate_tag ot - left join t_order_evaluate te on ot.order_evaluate_id = te.id - left join t_charging_order co on te.order_id = co.id + SELECT + count( 1 ) AS counts, + + tt.`name` + FROM + t_order_evaluate_tag ot + LEFT JOIN t_order_evaluate te ON ot.order_evaluate_id = te.id + LEFT JOIN t_charging_order co ON te.order_id = co.id + LEFT JOIN `charging_pile_other`.`t_evaluation_tag` tt on ot.evaluation_tag_id = tt.id WHERE ot.evaluation_tag_id in ( SELECT id from `charging_pile_other`.`t_evaluation_tag` WHERE type = 3 ) <if test="null != siteIds"> @@ -157,8 +169,10 @@ #{item} </foreach> </if> - GROUP BY ot.evaluation_tag_id - ORDER BY counts desc - limit 5 + GROUP BY + tt.`name` + ORDER BY + counts DESC + LIMIT 5 </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml index 514f70e..6144472 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TShoppingOrderMapper.xml @@ -272,19 +272,19 @@ payment_amount FROM t_shopping_order - <where> + WHERE del_flag = 0 and payment_status = 2 and ISNULL(refund_status) and status!=4 <if test="null != sixBefore"> - and DATE_FORMAT(create_time, '%Y-%m-%d') >= DATE_FORMAT(#{sixBefore}, '%Y-%m-%d') + and create_time >= #{sixBefore} </if> <if test="null != status"> and status = #{status} </if> - </where> + ) AS subquery GROUP BY - DATE_FORMAT( subquery.create_time, '%m' ); + DATE_FORMAT( subquery.create_time, '%m' ) </select> diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml index 739d696..979c301 100644 --- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml +++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TVipOrderMapper.xml @@ -50,29 +50,29 @@ </select> <select id="sixBefore" resultType="com.ruoyi.order.dto.SixVipDto"> SELECT - DATE_FORMAT(subquery.create_time, '%Y-%m') AS MONTH, - subquery.vip_id, - COUNT(1) AS orderNum, - SUM(subquery.payment_amount) AS paymentAmount + DATE_FORMAT(subquery.create_time, '%Y-%m') AS MONTH, + COUNT(1) AS orderNum, + SUM(subquery.payment_amount) AS paymentAmount, + tp.`name` FROM ( - SELECT - vip_id, - create_time, - payment_amount - FROM - t_vip_order + SELECT + vip_id, + create_time, + payment_amount + FROM + t_vip_order <where> del_flag = 0 AND payment_status = 2 AND - refund_amount IS NULL <if test="sixBefore != null"> AND create_time > #{sixBefore} </if> </where> - ) AS subquery + ) AS subquery + LEFT JOIN `charging_pile_other`.`t_vip` tp on subquery.vip_id = tp.id GROUP BY - DATE_FORMAT(subquery.create_time, '%Y-%m'), - subquery.vip_id; + DATE_FORMAT(subquery.create_time, '%Y-%m'), + tp.`name`; </select> diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java index f050fa6..6e3ae1c 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TEnterpriseUserApplicationController.java @@ -6,6 +6,7 @@ import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.security.service.TokenService; @@ -78,7 +79,7 @@ // Page<TEnterpriseUserApplication> page = enterpriseUserApplicationService.lambdaQuery().in(TEnterpriseUserApplication::getAppUserId, userIds).page(Page.of(enterpriseQuery.getPageCurr(), enterpriseQuery.getPageSize())); // return R.ok(page); // }else { - Page<TEnterpriseUserApplication> page = enterpriseUserApplicationService.lambdaQuery().eq(enterpriseQuery.getPhone()!=null&&enterpriseQuery.getPhone()!="",TEnterpriseUserApplication::getPhone,enterpriseQuery.getPhone()).page(Page.of(enterpriseQuery.getPageCurr(), enterpriseQuery.getPageSize())); + Page<TEnterpriseUserApplication> page = enterpriseUserApplicationService.lambdaQuery().eq(enterpriseQuery.getPhone()!=null&&enterpriseQuery.getPhone()!="",TEnterpriseUserApplication::getPhone,enterpriseQuery.getPhone()).orderByDesc(BasePojo::getCreateTime).page(Page.of(enterpriseQuery.getPageCurr(), enterpriseQuery.getPageSize())); return R.ok(page); // } } diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java index ada569e..f9cda01 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TGoodsController.java @@ -125,13 +125,19 @@ @GetMapping("/getInfoByType") @ApiOperation(tags = {"小程序-兑换商城"},value = "商品查看详情") - public AjaxResult getInfoByType(Integer goodType,Integer id) { + public R getInfoByType(Integer goodType,Integer id) { if (goodType==1){ TGoods byId = goodsService.getById(id); - return AjaxResult.ok(byId);} + if (byId==null||byId.getStatus()==2){ + return R.fail(2,"内容不存在"); + } + return R.ok(byId);} else { TCoupon byId = couponService.getById(id); - return AjaxResult.ok(byId); + if (byId==null||byId.getStatus()==2){ + return R.fail(2,"内容不存在"); + } + return R.ok(byId); } } @@ -204,6 +210,7 @@ }else { //减少库存 good.setInventory(good.getInventory()-exchangeDto.getNum()); + goodsService.updateById(good); } if (user.getPoints()<good.getRedeemPoints()){ return AjaxResult.error("当前用户积分不足"); @@ -220,6 +227,7 @@ return AjaxResult.error("当前用户已到达兑换"+coupon+"次"); }else { coupon.setInventoryQuantity(coupon.getInventoryQuantity()-1); + couponService.updateById(coupon); } @@ -252,11 +260,11 @@ PointChangeDto pointChangeDto = new PointChangeDto(); pointChangeDto.setUserId(userId); pointChangeDto.setPoints(point); - pointChangeDto.setRemark(longR.getData().toString()); + pointChangeDto.setRemark(String.valueOf(longR.getData().getId())); pointChangeDto.setType(6); pointChangeDto.setCode(longR.getData().getCode()); appUserClient.changeDown(pointChangeDto); - return AjaxResult.success(); + return AjaxResult.success(longR.getData().getId()); } @@ -277,6 +285,9 @@ BigDecimal vipDiscount = new BigDecimal(0); if (exchangeDto.getGoodType()==1){ TGoods good = goodsService.getById(exchangeDto.getGoodId()); + if (good.getStatus()==2){ + return R.fail("当前商品已下架"); + } BigDecimal originalPrice = good.getPreferentialPrice(); exchangeDto.setTitle("【商品购买】"+good.getName()); if (isVip){ @@ -289,6 +300,9 @@ }else { TCoupon coupon = couponService.getById(exchangeDto.getGoodId()); + if (coupon.getStatus()==2){ + return R.fail("当前商品已下架"); + } exchangeDto.setTitle("【优惠卷购买】"+coupon.getName()); BigDecimal originalPrice = coupon.getPaymentAmount(); if (isVip){ diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java index a6a0e64..d27cac8 100644 --- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java +++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.account.api.dto.SendCouponDto; +import com.ruoyi.account.api.feignClient.AppUserClient; +import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; @@ -217,6 +219,77 @@ } + @Resource + private AppUserClient appUserClient; + + @ApiOperation(value = "当前生效会员信息", tags = {"小程序-个人中心"}) + @GetMapping("/recent/vipInfo") + public R<List<VipInfoDto>> recentVipInfo() { + Long userId = tokenService.getLoginUserApplet().getUserId(); + TAppUser data = appUserClient.getUserById(userId).getData(); + if (data.getVipEndTime()!=null&&data.getVipEndTime().isAfter(LocalDateTime.now())) { + + List<VipInfoDto> vipInfoDtos = new ArrayList<>(); + List<TVip> vips = vipService.lambdaQuery().eq(TVip::getId, data.getVipId()).list(); + LocalDateTime now = LocalDateTime.now(); + for (TVip vip : vips) { + VipInfoDto vipInfoDto = new VipInfoDto(); + vipInfoDto.setMonthlyCard(vip.getMonthlyCardReveal() == 1 ? vip.getMonthlyCard() : null); + vipInfoDto.setSeasonCard(vip.getSeasonCardReveal() == 1 ? vip.getSeasonCard() : null); + vipInfoDto.setAnnualCard(vip.getAnnualCardReveal() == 1 ? vip.getAnnualCard() : null); + //判断是否在折扣时间内,然后设置折扣价格 + if (vip.getMonthlyCardDiscountStart() != null && (now.isAfter(vip.getMonthlyCardDiscountStart()) && now.isBefore(vip.getMonthlyCardDiscountEnd()))) { + vipInfoDto.setMonthlyCardDiscount(vip.getMonthlyCardDiscount()); + } + if (vip.getSeasonCardDiscountStart() != null && (now.isAfter(vip.getSeasonCardDiscountStart()) && now.isBefore(vip.getSeasonCardDiscountEnd()))) { + vipInfoDto.setSeasonCardDiscount(vip.getSeasonCardDiscount()); + } + if (vip.getAnnualCardDiscountStart() != null && (now.isAfter(vip.getAnnualCardDiscountStart()) && now.isBefore(vip.getAnnualCardDiscountEnd()))) { + vipInfoDto.setAnnualCardDiscount(vip.getAnnualCardDiscount()); + } + + + vipInfoDto.setMaximumDeduction(vip.getMaximumDeduction()); + vipInfoDto.setDiscountTimes(vip.getDiscountTimes()); + vipInfoDto.setDoubleIntegration(vip.getDoubleIntegration()); + vipInfoDto.setMallExclusivePrice(vip.getMallExclusivePrice()); + vipInfoDto.setName(vip.getName()); + vipInfoDto.setId(vip.getId()); + List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class); + List<VipCouponDto> vipCouponDtos = new ArrayList<>(); + if (!javaList.isEmpty()) { + for (SendCouponDto sendCouponDto : javaList) { + VipCouponDto vipCouponDto = new VipCouponDto(); + TCoupon byId = couponService.getById(sendCouponDto.getId()); + vipCouponDto.setNum(sendCouponDto.getNumber()); + vipCouponDto.setTCoupon(byId); + vipCouponDtos.add(vipCouponDto); + } + } + + vipInfoDto.setVipCouponDtos(vipCouponDtos); + + //计算总折扣 + BigDecimal total = BigDecimal.ZERO; + total = total.add(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes()))); + for (VipCouponDto vipCouponDto : vipCouponDtos) { + TCoupon tCoupon = vipCouponDto.getTCoupon(); + if (tCoupon.getPreferentialMode() == 2) { + total.add(tCoupon.getMaximumDiscountAmount()); + } else { + total.add(tCoupon.getDiscountAmount()); + } + } + vipInfoDto.setTotalDiscount(total); + vipInfoDto.setTimeAmount(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes()))); + vipInfoDtos.add(vipInfoDto); + } + return R.ok(vipInfoDtos); + + } + return R.ok(); + } + @ApiOperation(value = "购买会员", tags = {"小程序-个人中心"}) @@ -226,6 +299,9 @@ ) { TVip byId = vipService.getById(vipId); + if (byId==null){ + return R.ok("当前会员不存在,请刷新后重试。"); + } BigDecimal payMoney = BigDecimal.ZERO; BigDecimal discountMoney = BigDecimal.ZERO; BigDecimal discount = BigDecimal.ZERO; diff --git a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml index 382af35..fc51ae5 100644 --- a/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-other/src/main/resources/bootstrap.yml @@ -29,7 +29,6 @@ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb username: nacos password: nacos - ip: 192.168.110.85 config: # 配置中心地址 server-addr: 192.168.110.169:8848 diff --git a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml index 3d1b30e..0c4c5ce 100644 --- a/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml +++ b/ruoyi-service/ruoyi-payment/src/main/resources/bootstrap.yml @@ -12,8 +12,8 @@ allow-circular-references: true profiles: # 环境配置 -# active: dev - active: prod + active: dev +# active: prod --- spring: config: @@ -56,52 +56,52 @@ type: nacos nacos: # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# data-id: seata-server.properties -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP data-id: seata-server.properties username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# data-id: seata-server.properties +# username: nacos +# password: nacos registry: type: nacos nacos: application: seata-server # 开发环境 -# server-addr: 192.168.110.169:8848 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb -# group: DEFAULT_GROUP -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb group: DEFAULT_GROUP username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# username: nacos +# password: nacos cloud: nacos: discovery: # 开发环境 -# server-addr: 192.168.110.169:8848 # nacos注册中心地址 -# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 -# group: DEFAULT_GROUP -# application: seata-server #Nacos 中 Seata 名称 -# username: nacos -# password: nacos - # 生产环境 - server-addr: 192.168.0.137:8848,192.168.0.123:8848 - namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a + server-addr: 192.168.110.169:8848 # nacos注册中心地址 + namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间 group: DEFAULT_GROUP application: seata-server #Nacos 中 Seata 名称 username: nacos password: nacos + # 生产环境 +# server-addr: 192.168.0.137:8848,192.168.0.123:8848 +# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a +# group: DEFAULT_GROUP +# application: seata-server #Nacos 中 Seata 名称 +# username: nacos +# password: nacos sentinel: transport: dashboard: 127.0.0.1:8080 # Sentinel控制台地址 -- Gitblit v1.7.1