ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/SiteController.java
@@ -125,6 +125,12 @@ public AjaxResult<PageInfo<SiteVO>> pageList(@Validated @RequestBody SiteQuery query){ return AjaxResult.success(siteService.pageList(query)); } @ApiOperation(value = "获取站点列表", tags = {"小程序-站点管理-地图导航站点"}) @PostMapping("/getMapSiteList") public AjaxResult<List<SiteVO>> getMapSiteList(@Validated @RequestBody SiteQuery query){ return AjaxResult.success(siteService.getMapSiteList(query)); } @ApiOperation(value = "获取站点详细信息", tags = {"小程序-站点管理-站点详情"}) @PostMapping("/getDetailById") public AjaxResult<SiteDetailVO> getDetailById(@Validated @RequestBody SiteDetailQuery query){ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/mapper/SiteMapper.java
@@ -53,4 +53,11 @@ * @return */ List<Site> getSiteListGun(@Param("ids")Set<Integer> ids); /** * 获取站点列表不分页 * @param query * @return */ List<SiteVO> getMapSiteList(@Param("query")SiteQuery query); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/ISiteService.java
@@ -89,4 +89,10 @@ */ List<Site> getSiteListGun(); /** * 获取站点列表 * @param query * @return */ List<SiteVO> getMapSiteList(SiteQuery query); } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java
@@ -293,6 +293,25 @@ return this.baseMapper.getSiteListGun(ids); } @Override public List<SiteVO> getMapSiteList(SiteQuery query) { // 获取当前登录用户id Long userId = tokenService.getLoginUserApplet().getUserId(); // 根据id查询用户信息 TAppUser appUser = appUserClient.getUserById(userId).getData(); List<SiteVO> list = this.baseMapper.getMapSiteList(query); 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())); }); } } return list; } /** * 设置站点计费策略 ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/SiteMapper.xml
@@ -207,4 +207,69 @@ AND del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} </where> </select> <select id="getMapSiteList" resultType="com.ruoyi.chargingPile.api.vo.SiteVO"> select ts.id, ts.partner_id, ts.code, ts.`name`, ts.site_type, ts.business_category, ts.status, ts.construction_site, ts.img_url, ts.lon, ts.lat, ts.address, ts.country_code, ts.phone,ts.guide, ts.service_description, ts.vehicle_description, ts.parking_space, ts.rate_description, ts.space_charge_explain, ts.accounting_strategy_id,ts.del_flag,tcg.fastCount, tcg.slowCount,tcg.superCount,tasd.electrovalence,tasd.vipElectrovalence, ROUND( 6378.138 * 2 * ASIN( SQRT( POW( SIN( ( #{query.lat} * PI() / 180 - ts.lat * PI() / 180 ) / 2 ), 2 ) + COS(#{query.lat} * PI() / 180) * COS(ts.lat * PI() / 180) * POW( SIN( ( #{query.lon} * PI() / 180 - ts.lon * PI() / 180 ) / 2 ), 2 ) ) ) * 1000 ) AS distance from t_site ts left join ( select site_id, SUM(CASE WHEN charge_mode = 1 THEN 1 ELSE 0 END) AS superCount, SUM(CASE WHEN charge_mode = 2 THEN 1 ELSE 0 END) AS fastCount, SUM(CASE WHEN charge_mode = 3 THEN 1 ELSE 0 END) AS slowCount from t_charging_gun where del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} group by site_id) tcg on (ts.id = tcg.site_id) left join ( select a.accounting_strategy_id, (a.electrovalence+a.service_charge) AS electrovalence, ((a.electrovalence+a.service_charge)*b.discount) AS vipElectrovalence from t_accounting_strategy_detail a left join t_accounting_strategy b on (a.accounting_strategy_id = b.id) where b.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND DATE_FORMAT(NOW(), '%H:%i:%s') between a.start_time and a.end_time) tasd on (ts.accounting_strategy_id = tasd.accounting_strategy_id) <where> <if test="null != query.name and '' != query.name"> and ts.`name` like CONCAT('%', #{query.name}, '%') </if> AND ts.del_flag = ${@com.ruoyi.common.core.enums.DelFlagEnum@NO.getCode()} AND ts.status = ${@com.ruoyi.common.core.enums.status.SiteStatusEnum@NORMAL_USE.getCode()} </where> <if test="query.sortType != null"> <choose> <when test="query.sortType == 1"> ORDER BY distance ASC </when> </choose> </if> </select> </mapper>