ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TMonitoringEquipment.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -52,5 +53,12 @@ @ApiModelProperty(value = "监控链接") @TableField("url_link") private String urlLink; @ApiModelProperty(value = "状态 1=正常 0=离线") @TableField("status") private Integer status; @ApiModelProperty(value = "故障时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("faultTime") private LocalDateTime faultTime; } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserServiceImpl.java
@@ -35,7 +35,7 @@ private TokenService tokenService; @Override public Map<String, Object> wxLogin(AppletUserDecodeData appletUserDecodeData) { // 通过手机号查询用户,是否已存在手动导入用户 // 通过手机号查询用户,是否已存在手动导入用户,包含支付宝用户 TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getPhone, appletUserDecodeData.getPhoneNumber()) .isNull(TAppUser::getWxOpenid) @@ -62,7 +62,7 @@ @Override public Map<String, Object> aliLogin(AlipaySystemOauthTokenResponse response, AlipayUserUserinfoShareResponse userInfo) { // 通过手机号查询用户,是否已存在手动导入用户 // 通过手机号查询用户,是否已存在手动导入用户,包含微信用户 TAppUser appUser = this.getOne(Wrappers.lambdaQuery(TAppUser.class) .eq(TAppUser::getPhone, userInfo.getMobile()) .isNull(TAppUser::getAliOpenid) ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.dto.GetSiteListDTO; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; @@ -20,9 +22,12 @@ import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.RoleSiteClient; import com.ruoyi.other.api.feignClient.UserSiteClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import org.springframework.stereotype.Service; @@ -30,10 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.*; /** * @author zhibing.pu @@ -59,7 +61,13 @@ @Resource private RoleSiteClient roleSiteClient; @Resource private TokenService tokenService; @Resource private AppUserClient appUserClient; @Resource private VipClient vipClient; /** @@ -217,8 +225,21 @@ @Override public PageInfo<SiteVO> pageList(SiteQuery query) { // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); PageInfo<SiteVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); List<SiteVO> list = this.baseMapper.pageList(query,pageInfo); if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ // 查询会员信息 TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); if(Objects.nonNull(vip) && vip.getType() == 2){ list.forEach(item -> { item.setVipElectrovalence(vip.getDiscount().multiply(item.getElectrovalence())); }); } } pageInfo.setRecords(list); return pageInfo; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/TAccountingStrategyDetailServiceImpl.java
@@ -2,6 +2,8 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.chargingPile.api.model.TAccountingStrategy; import com.ruoyi.chargingPile.api.model.TAccountingStrategyDetail; import com.ruoyi.chargingPile.api.vo.StrategyPriceVO; @@ -10,11 +12,13 @@ import com.ruoyi.chargingPile.mapper.TAccountingStrategyMapper; import com.ruoyi.chargingPile.service.TAccountingStrategyDetailService; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.VipClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalTime; import java.util.ArrayList; @@ -36,7 +40,10 @@ private TAccountingStrategyMapper accountingStrategyMapper; @Autowired private VipClient vipClient; @Autowired private TokenService tokenService; @Autowired private AppUserClient appUserClient; @Override public List<TAccountingStrategyDetailVO> queryAccountingStrategyDetailByStrategyId(Integer strategyId) { return this.baseMapper.queryAccountingStrategyDetailByStrategyId(strategyId); @@ -51,18 +58,40 @@ throw new ServiceException("未查询到计费策略"); } List<TAccountingStrategyDetailVO> list = this.queryAccountingStrategyDetailByStrategyId(accountingStrategy.getId()); // 获取当前时间段的计费策略明细 TAccountingStrategyDetailVO accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); accountingStrategyDetailVO.setDiscount(accountingStrategy.getDiscount()); // 获取后一次的计费策略明细 TAccountingStrategyDetailVO accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); accountingStrategyDetailNext.setDiscount(accountingStrategy.getDiscount()); list = new ArrayList<>(); list.add(accountingStrategyDetailVO); list.add(accountingStrategyDetailNext); return list; // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); if(Objects.nonNull(appUser) && Objects.nonNull(appUser.getVipId())){ // 查询会员信息 TVip vip = vipClient.getInfo1(appUser.getVipId()).getData(); TAccountingStrategyDetailVO accountingStrategyDetailVO; TAccountingStrategyDetailVO accountingStrategyDetailNext; if(Objects.nonNull(vip) && vip.getType() == 2){ // 获取当前时间段的计费策略明细 accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(vip.getDiscount())); // 获取后一次的计费策略明细 accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(vip.getDiscount())); }else { // 获取当前时间段的计费策略明细 accountingStrategyDetailVO = list.stream().filter(detail -> detail.getStartTime().compareTo(LocalTime.now().toString()) <= 0 && detail.getEndTime().compareTo(LocalTime.now().toString()) >= 0) .findFirst().orElseThrow(() -> new ServiceException("当前时间段未查询到计费策略明细")); accountingStrategyDetailVO.setDiscount(accountingStrategyDetailVO.getElectrovalence().add(accountingStrategyDetailVO.getServiceCharge()).multiply(accountingStrategy.getDiscount())); // 获取后一次的计费策略明细 accountingStrategyDetailNext = list.stream().filter(detail -> detail.getStartTime().compareTo(accountingStrategyDetailVO.getEndTime()) == 0) .findFirst().orElseThrow(() -> new ServiceException("未查询到下一时间段的计费策略明细")); accountingStrategyDetailNext.setDiscount(accountingStrategyDetailNext.getElectrovalence().add(accountingStrategyDetailNext.getServiceCharge()).multiply(accountingStrategy.getDiscount())); } list = new ArrayList<>(); list.add(accountingStrategyDetailVO); list.add(accountingStrategyDetailNext); return list; } return new ArrayList<>(); } @Override ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TMonitoringEquipmentMapper.xml
@@ -10,17 +10,19 @@ <result column="parking_lot_id" property="parkingLotId" /> <result column="location" property="location" /> <result column="url_link" property="urlLink" /> <result column="status" property="status" /> <result column="faultTime" property="faultTime" /> <result column="create_time" property="createTime" /> <result column="del_flag" property="delFlag" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, `name`, code, parking_lot_id, location, url_link, create_time, del_flag id, `name`, code, parking_lot_id, location, url_link,status,faultTime, create_time, del_flag </sql> <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TMonitoringEquipmentVO"> SELECT tme.id, tme.`name`, tme.code, tme.parking_lot_id, tme.location, tme.url_link, tme.create_time, tme.del_flag, tpl.name AS parkingLotName tme.id, tme.`name`, tme.code, tme.parking_lot_id, tme.location, tme.url_link,tme.status,tme.faultTime, tme.create_time, tme.del_flag, tpl.name AS parkingLotName FROM t_monitoring_equipment tme LEFT JOIN t_parking_lot tpl ON tme.parking_lot_id = tpl.id <where>