diff --git a/doc/万车充接口补充.md b/doc/万车充接口补充.md new file mode 100644 index 000000000..26fde53ea --- /dev/null +++ b/doc/万车充接口补充.md @@ -0,0 +1,101 @@ +# 首页站点筛选 + +``` +接口地址: +请求方式: +``` + +**入参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +**反参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +# 首页站点列表 + +``` +接口地址:/uniapp/pile/queryStationInfos +``` + +**加字段:**当前站点最近充电的一次时间 + +**加字段:**异常设备数量 + +# 站点详情枪口信息 + +``` +接口地址:uniapp/pile/selectStationConnectorList +``` + +**实现:**根据前端传入的枪口状态参数,动态返回匹配的实时数据信息,实现状态与数据的精准响应。 + +# 查询站点收藏 + +``` +接口地址: +请求方式: +``` + +**入参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +**反参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +# (添加/删除) 站点收藏 + +``` +接口地址: +请求方式: +``` + +**入参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +**反参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------ | ---- | -------- | ---- | +| | | | | + +# 查询用户常去站点(最近半年) + +```text +接口地址:/uniapp/member/getUserFrequentedStationList +请求方式:GET +``` + +### **入参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| -------- | ------ | -------- | ------ | +| memberId | String | Y | 会员id | + +### **反参** + +| 字段名 | 类型 | 是否必传 | 备注 | +| ------------------------------- | ------------------------- | -------- | ------------------------ | +| List | UserFrequentedStationInfo | Y | 按照充电次数从高到低排序 | + +#### UserFrequentedStationInfo + +| 字段名 | 类型 | 是否必传 | 备注 | +| ----------- | ------ | -------- | -------- | +| stationId | String | Y | 站点id | +| stationName | String | Y | 站点名称 | +| chargeNum | int | Y | 充电次数 | \ No newline at end of file diff --git a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/XDTController.java b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/XDTController.java index c3f4a8c1d..58a69ff22 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/XDTController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/thirdparty/XDTController.java @@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.Map; /** @@ -46,8 +47,8 @@ public class XDTController extends ThirdPartyBaseController { @Qualifier("xinDiantuPlatfromServiceImpl") private ThirdPartyPlatformService platformLogic; - // @Autowired - // private XDTService xdtService; + @Autowired + private XDTService xdtService; /** * 获取token接口 @@ -372,23 +373,52 @@ public class XDTController extends ThirdPartyBaseController { * @param orderCode * @return */ - // @GetMapping("/pushChargeOrderInfo/{orderCode}") - // public RestApiResponse pushChargeOrderInfo(@PathVariable("orderCode") String orderCode) { - // logger.info("新电途平台推送充电订单信息 params:{}", orderCode); - // RestApiResponse response = null; - // try { - // String result = xdtService.pushChargeOrderInfo(orderCode); - // response = new RestApiResponse<>(result); - // }catch (BusinessException e) { - // logger.error("新电途平台推送充电订单信息 error",e); - // response = new RestApiResponse<>(e.getCode(), e.getMessage()); - // }catch (Exception e) { - // logger.error("新电途平台推送充电订单信息 error", e); - // response = new RestApiResponse<>(e); - // } - // logger.info("新电途平台推送充电订单信息 result:{}", response); - // return response; - // } + @GetMapping("/pushChargeOrderInfo/{orderCode}") + public RestApiResponse pushChargeOrderInfo(@PathVariable("orderCode") String orderCode) { + logger.info("新电途平台推送充电订单信息 params:{}", orderCode); + RestApiResponse response = null; + try { + // String result = xdtService.pushChargeOrderInfo(orderCode); + String result = platformLogic.notificationChargeOrderInfo(orderCode); + response = new RestApiResponse<>(result); + }catch (BusinessException e) { + logger.error("新电途平台推送充电订单信息 error",e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + }catch (Exception e) { + logger.error("新电途平台推送充电订单信息 error", e); + response = new RestApiResponse<>(e); + } + logger.info("新电途平台推送充电订单信息 result:{}", response); + return response; + } + + + /** + * 批量推送订单接口 + * @param dto + * @return + */ + @PostMapping("/pushChargeOrderInfoList") + public RestApiResponse pushChargeOrderInfoList(@RequestBody PushInfoParamDTO dto) { + logger.info("新电途平台批量推送充电订单信息 params:{}", JSON.toJSONString(dto)); + RestApiResponse response = null; + try { + List orderCodeList = dto.getOrderCodeList(); + for (String orderCode : orderCodeList) { + String result = platformLogic.notificationChargeOrderInfo(orderCode); + logger.info("新电途平台批量推送充电订单信息 result:{}", result); + } + response = new RestApiResponse<>(); + }catch (BusinessException e) { + logger.error("新电途平台批量推送充电订单信息 error",e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + }catch (Exception e) { + logger.error("新电途平台批量推送充电订单信息 error", e); + response = new RestApiResponse<>(e); + } + logger.info("新电途平台批量推送充电订单信息 result:{}", response); + return response; + } /** * 新电途推送充电状态 diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java index cda2f9ac1..23315a11f 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/MemberController.java @@ -14,9 +14,11 @@ import com.jsowell.common.response.RestApiResponse; import com.jsowell.common.util.SMSUtil; import com.jsowell.common.util.StringUtils; import com.jsowell.pile.domain.MemberPlateNumberRelation; +import com.jsowell.pile.domain.UserFrequentedStationInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.MemberBasicInfoService; import com.jsowell.pile.service.MemberPlateNumberRelationService; +import com.jsowell.pile.service.OrderBasicInfoService; import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.vo.base.MemberWalletVO; import com.jsowell.pile.vo.uniapp.customer.InvoiceTitleVO; @@ -51,6 +53,8 @@ public class MemberController extends BaseController { @Autowired private MemberPlateNumberRelationService memberPlateNumberRelationService; + @Autowired + private OrderBasicInfoService orderBasicInfoService; /** * 下发短信接口 business * http://localhost:8080/uniapp/member/sendSMS @@ -603,4 +607,26 @@ public class MemberController extends BaseController { logger.info("查询会员钱包列表 result:{}", response); return response; } + + /** + * 查询用户常去站点(最近半年) + */ + @GetMapping("/getUserFrequentedStationList") + public RestApiResponse queryUserFrequentedStation(HttpServletRequest request) { + RestApiResponse response; + try { + String memberId = getMemberIdByAuthorization(request); + //查询order_basic_info表,根据member_id,对应的station_id,,然后根据station_id查询pile_station_info表中的站点名称,最后统计每个站点的次数,查询当前时间前半年的记录 + List list = orderBasicInfoService.queryUserFrequentedStation(memberId); + response = new RestApiResponse<>(ImmutableMap.of("list", list)); + } catch (BusinessException e) { + logger.error("查询用户常去站点(最近半年) error", e); + response = new RestApiResponse<>(e.getCode(), e.getMessage()); + } catch (Exception e) { + logger.error("查询用户常去站点(最近半年) error", e); + response = new RestApiResponse<>(e); + } + logger.info("查询用户常去站点(最近半年) result:{}", response); + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java index c23a9e925..17e35ecda 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/MemberService.java @@ -847,4 +847,5 @@ public class MemberService { public List queryMemberWalletList(String memberId) { return memberWalletInfoService.selectByMemberWalletList(memberId); } + } diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java index 335fed369..2470c1015 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/DateUtils.java @@ -1181,4 +1181,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { } } + /** + * 获取当前时间的前半年日期 + * @return + */ + public static String getHalfYearAgo(String nowStr) { + LocalDate now = LocalDate.parse(nowStr); + LocalDate halfYearAgo = now.minusMonths(6); + return halfYearAgo.toString(); + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberStationRelation.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberStationRelation.java new file mode 100644 index 000000000..2db07a3be --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/MemberStationRelation.java @@ -0,0 +1,70 @@ +package com.jsowell.pile.domain; + +import com.jsowell.common.annotation.Excel; +import com.jsowell.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 会员与收藏的站点关系对象 member_station_relation + * + * @author jsowell + * @date 2025-03-18 + */ +public class MemberStationRelation extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Integer id; + + /** + * 会员id + */ + @Excel(name = "会员id") + private Long memberId; + + /** + * 站点id + */ + @Excel(name = "站点id") + private Long stationId; + + public void setId(Integer id) { + this.id = id; + } + + public Integer getId() { + return id; + } + + public void setMemberId(Long memberId) { + this.memberId = memberId; + } + + public Long getMemberId() { + return memberId; + } + + public void setStationId(Long stationId) { + this.stationId = stationId; + } + + public Long getStationId() { + return stationId; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.JSON_STYLE) + .append("id", getId()) + .append("memberId", getMemberId()) + .append("stationId", getStationId()) + .append("createTime", getCreateTime()) + .append("createBy", getCreateBy()) + .append("updateTime", getUpdateTime()) + .append("updateBy", getUpdateBy()) + .toString(); + } +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/UserFrequentedStationInfo.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/UserFrequentedStationInfo.java new file mode 100644 index 000000000..cb05e6384 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/UserFrequentedStationInfo.java @@ -0,0 +1,28 @@ +package com.jsowell.pile.domain; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 用户常去站点 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class UserFrequentedStationInfo { + /** + * 站点id + */ + private String stationId; + /** + * 站点名称 + */ + private String stationName; + /** + * 充电次数 + */ + private int chargeNum; +} \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PushInfoParamDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PushInfoParamDTO.java index 64a78061f..e8022e321 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/PushInfoParamDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/PushInfoParamDTO.java @@ -2,8 +2,10 @@ package com.jsowell.pile.dto; import lombok.Data; +import java.util.List; + /** - * 练练平台推送信息参数DTO + * 平台推送信息参数DTO * * @author JS-ZZA * @date 2023/5/26 9:26 @@ -15,4 +17,6 @@ public class PushInfoParamDTO { private String status; private String stationId; + + private List orderCodeList; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStationDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStationDTO.java index 8cea6c6c6..eb31032a5 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStationDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryStationDTO.java @@ -95,4 +95,64 @@ public class QueryStationDTO extends BaseEntity { * 运营商部门id */ private List merchantDeptId; + + /** + * 排序方式(默认按照距离最近排序) + * 1 - 低价优先 + * 2 - 距离最近 + */ + private String sortType; + + /** + * 场站类型 + * 1 - 全部场站 + * 2 - 优选场站 + */ + private String stationType; + + /** + * 充电速度(快充/慢充) + * 1 - 快充(30-180kw) + * 2 - 慢充(<30kw) + * 3 - 超充(≥180kw) + */ + private String chargeSpeed; + + /** + * 其他筛选条件 + */ + private OtherOptions otherOptions; + + private List stationIds; + + @Data + public static class OtherOptions { + /** + * 充电方式 + * 1 - 直流 + * 2 - 交流 + */ + private String chargeMode; + + /** + * 充电桩功率 + * 1 - 快充(30-180kw) + * 2 - 慢充(<30kw) + * 3 - 超充(≥180kw) + */ + private List pilePower; + + /** + * 站点服务 + * 1 - 雨棚 + * 2 - 休息室 + * 3 - 卫生间 + */ + private List stationService; + + /** + * 我的收藏 + */ + private String myCollectionFlag; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberStationRelationMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberStationRelationMapper.java new file mode 100644 index 000000000..2736903be --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/MemberStationRelationMapper.java @@ -0,0 +1,70 @@ +package com.jsowell.pile.mapper; + +import java.util.List; + +import com.jsowell.pile.domain.MemberStationRelation; +import org.springframework.stereotype.Repository; + +/** + * 会员与收藏的站点关系Mapper接口 + * + * @author jsowell + * @date 2025-03-18 + */ +@Repository +public interface MemberStationRelationMapper { + /** + * 查询会员与收藏的站点关系 + * + * @param id 会员与收藏的站点关系主键 + * @return 会员与收藏的站点关系 + */ + public MemberStationRelation selectMemberStationRelationById(Integer id); + + /** + * 查询会员与收藏的站点关系列表 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 会员与收藏的站点关系集合 + */ + public List selectMemberStationRelationList(MemberStationRelation memberStationRelation); + + /** + * 新增会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + public int insertMemberStationRelation(MemberStationRelation memberStationRelation); + + /** + * 修改会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + public int updateMemberStationRelation(MemberStationRelation memberStationRelation); + + /** + * 删除会员与收藏的站点关系 + * + * @param id 会员与收藏的站点关系主键 + * @return 结果 + */ + public int deleteMemberStationRelationById(Integer id); + + /** + * 批量删除会员与收藏的站点关系 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMemberStationRelationByIds(Integer[] ids); + + /** + * 通过memberId查询站点idList + * @param memberId + * @return + */ + List getStationIdListByMemberId(String memberId); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index 05dd2eabc..02755e366 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -3,6 +3,7 @@ package com.jsowell.pile.mapper; import com.alipay.api.domain.ChargeOrderInfo; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderDetail; +import com.jsowell.pile.domain.UserFrequentedStationInfo; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.nanrui.NRQueryOrderDTO; import com.jsowell.pile.dto.ningxiajiaotou.NXJTQueryOrdersInfoDTO; @@ -402,4 +403,14 @@ public interface OrderBasicInfoMapper { * @return */ List selectThirdPartyOrderList(@Param("dto") QueryStartChargeDTO dto); + + + /** + * 查询用户常用站点信息 + * @param memberId + * @param startTime + * @param endTime + * @return + */ + List queryUserFrequentedStation(@Param("memberId") String memberId ,@Param("startTime") String startTime ,@Param("endTime") String endTime); } \ No newline at end of file diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberStationRelationService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberStationRelationService.java new file mode 100644 index 000000000..6b7fd751f --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/MemberStationRelationService.java @@ -0,0 +1,68 @@ +package com.jsowell.pile.service; + +import java.util.List; + +import com.jsowell.pile.domain.MemberStationRelation; + +/** + * 会员与收藏的站点关系Service接口 + * + * @author jsowell + * @date 2025-03-18 + */ +public interface MemberStationRelationService { + /** + * 查询会员与收藏的站点关系 + * + * @param id 会员与收藏的站点关系主键 + * @return 会员与收藏的站点关系 + */ + public MemberStationRelation selectMemberStationRelationById(Integer id); + + /** + * 查询会员与收藏的站点关系列表 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 会员与收藏的站点关系集合 + */ + public List selectMemberStationRelationList(MemberStationRelation memberStationRelation); + + /** + * 新增会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + public int insertMemberStationRelation(MemberStationRelation memberStationRelation); + + /** + * 修改会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + public int updateMemberStationRelation(MemberStationRelation memberStationRelation); + + /** + * 批量删除会员与收藏的站点关系 + * + * @param ids 需要删除的会员与收藏的站点关系主键集合 + * @return 结果 + */ + public int deleteMemberStationRelationByIds(Integer[] ids); + + /** + * 删除会员与收藏的站点关系信息 + * + * @param id 会员与收藏的站点关系主键 + * @return 结果 + */ + public int deleteMemberStationRelationById(Integer id); + + /** + * 通过memberId查询站点idList + * @param memberId + * @return + */ + public List getStationIdListByMemberId(String memberId); +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java index 3024aad8a..0f45f4876 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderBasicInfoService.java @@ -543,4 +543,11 @@ public interface OrderBasicInfoService{ List tempGetOrderCodes(QueryOrderDTO dto); void retryRefundOrderList(List orderCoderList); + + /** + * 查询用户常用充电站点信息 + * @param memberId + * @return + */ + List queryUserFrequentedStation(String memberId); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java index c40658719..5732c9213 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileStationInfoService.java @@ -103,6 +103,13 @@ public interface PileStationInfoService { */ PageResponse uniAppQueryStationInfoList(QueryStationDTO queryStationDTO); + /** + * 小程序首页查询站点信息 + * @param queryStationDTO + * @return + */ + PageResponse uniAppQueryStationInfoListV2(QueryStationDTO queryStationDTO); + PileStationVO getStationInfo(String stationId); /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberStationRelationServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberStationRelationServiceImpl.java new file mode 100644 index 000000000..e0a5b708d --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/MemberStationRelationServiceImpl.java @@ -0,0 +1,95 @@ +package com.jsowell.pile.service.impl; + +import java.util.List; + +import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.service.MemberStationRelationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.jsowell.pile.mapper.MemberStationRelationMapper; +import com.jsowell.pile.domain.MemberStationRelation; + +/** + * 会员与收藏的站点关系Service业务层处理 + * + * @author jsowell + * @date 2025-03-18 + */ +@Service +public class MemberStationRelationServiceImpl implements MemberStationRelationService { + @Autowired + private MemberStationRelationMapper memberStationRelationMapper; + + /** + * 查询会员与收藏的站点关系 + * + * @param id 会员与收藏的站点关系主键 + * @return 会员与收藏的站点关系 + */ + @Override + public MemberStationRelation selectMemberStationRelationById(Integer id) { + return memberStationRelationMapper.selectMemberStationRelationById(id); + } + + /** + * 查询会员与收藏的站点关系列表 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 会员与收藏的站点关系 + */ + @Override + public List selectMemberStationRelationList(MemberStationRelation memberStationRelation) { + return memberStationRelationMapper.selectMemberStationRelationList(memberStationRelation); + } + + /** + * 新增会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + @Override + public int insertMemberStationRelation(MemberStationRelation memberStationRelation) { + memberStationRelation.setCreateTime(DateUtils.getNowDate()); + return memberStationRelationMapper.insertMemberStationRelation(memberStationRelation); + } + + /** + * 修改会员与收藏的站点关系 + * + * @param memberStationRelation 会员与收藏的站点关系 + * @return 结果 + */ + @Override + public int updateMemberStationRelation(MemberStationRelation memberStationRelation) { + memberStationRelation.setUpdateTime(DateUtils.getNowDate()); + return memberStationRelationMapper.updateMemberStationRelation(memberStationRelation); + } + + /** + * 批量删除会员与收藏的站点关系 + * + * @param ids 需要删除的会员与收藏的站点关系主键 + * @return 结果 + */ + @Override + public int deleteMemberStationRelationByIds(Integer[] ids) { + return memberStationRelationMapper.deleteMemberStationRelationByIds(ids); + } + + /** + * 删除会员与收藏的站点关系信息 + * + * @param id 会员与收藏的站点关系主键 + * @return 结果 + */ + @Override + public int deleteMemberStationRelationById(Integer id) { + return memberStationRelationMapper.deleteMemberStationRelationById(id); + } + + @Override + public List getStationIdListByMemberId(String memberId) { + return memberStationRelationMapper.getStationIdListByMemberId(memberId); + } +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 4188a2cfa..f511ec2c3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -4954,5 +4954,19 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { public List tempGetOrderCodes(QueryOrderDTO dto) { return orderBasicInfoMapper.tempGetOrderCodes(dto); } + + + /** + * 查询用户常用站点信息 + * @param memberId + * @return + */ + @Override + public List queryUserFrequentedStation(String memberId) { + String endTime = DateUtils.getDate(); + String startTime = DateUtils.getHalfYearAgo(endTime); + return orderBasicInfoMapper.queryUserFrequentedStation(memberId, startTime, endTime); + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java index a1d42a0ce..6691fd905 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileStationInfoServiceImpl.java @@ -607,6 +607,37 @@ public class PileStationInfoServiceImpl implements PileStationInfoService { return pageResponse; } + /** + * 小程序首页查询站点信息 + * @param dto + * @return + */ + @Override + public PageResponse uniAppQueryStationInfoListV2(QueryStationDTO dto) { + int pageNum = dto.getPageNum() == 0 ? 1 : dto.getPageNum(); + int pageSize = dto.getPageSize() == 0 ? 10 : dto.getPageSize(); + + // 小程序站点列表页只展示对外开放的站点 + dto.setPublicFlag(Constants.ONE); + + String myCollectionFlag = dto.getOtherOptions().getMyCollectionFlag(); + // 先判断是否选择我的收藏中的站点 + if (StringUtils.isNotBlank(myCollectionFlag)) { + // 不为空,先将要查询的站点idList添加进参数 + // TODO 查询我的收藏下的站点id + + // dto.setStationIds(); + } + // 分页 + PageHelper.startPage(pageNum, pageSize); + // 根据前端传的参数进行筛选查询(默认根据距离排序) + + + + return null; + } + + /** * 根据站点id查询运营商配置的汇付会员id * diff --git a/jsowell-pile/src/main/resources/mapper/pile/MemberStationRelationMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/MemberStationRelationMapper.xml new file mode 100644 index 000000000..3fee5b72f --- /dev/null +++ b/jsowell-pile/src/main/resources/mapper/pile/MemberStationRelationMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + select id, member_id, station_id, create_time, create_by, update_time, update_by from member_station_relation + + + + + id, member_id, station_id, create_time, create_by, update_time, update_by + + + + + + + + insert into member_station_relation + + member_id, + station_id, + create_time, + create_by, + update_time, + update_by, + + + #{memberId}, + #{stationId}, + #{createTime}, + #{createBy}, + #{updateTime}, + #{updateBy}, + + + + + update member_station_relation + + member_id = #{memberId}, + station_id = #{stationId}, + create_time = #{createTime}, + create_by = #{createBy}, + update_time = #{updateTime}, + update_by = #{updateBy}, + + where id = #{id} + + + + delete from member_station_relation where id = #{id} + + + + delete from member_station_relation where id in + + #{id} + + + + + \ No newline at end of file diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 7f398b4c2..bb7f61921 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -3118,4 +3118,23 @@ + + + \ No newline at end of file diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java index d69c45339..e0c0f92e1 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/LianLianPlatformServiceImpl.java @@ -1016,9 +1016,9 @@ public class LianLianPlatformServiceImpl implements ThirdPartyPlatformService { return null; } // 调用联联平台接口 - JSONObject json = new JSONObject(); - json.put("OrderInfo", orderInfo); - String jsonString = JSON.toJSONString(json); + // JSONObject json = new JSONObject(); + // json.put("OrderInfo", orderInfo); + String jsonString = JSON.toJSONString(orderInfo); String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); return result; } diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/XinDiantuPlatfromServiceImpl.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/XinDiantuPlatfromServiceImpl.java index de0bfba7b..0adb4b7c8 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/XinDiantuPlatfromServiceImpl.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/platform/service/impl/XinDiantuPlatfromServiceImpl.java @@ -15,10 +15,7 @@ import com.jsowell.common.enums.ykc.PileConnectorDataBaseStatusEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; -import com.jsowell.pile.domain.OrderBasicInfo; -import com.jsowell.pile.domain.OrderDetail; -import com.jsowell.pile.domain.PileBasicInfo; -import com.jsowell.pile.domain.ThirdPartyPlatformConfig; +import com.jsowell.pile.domain.*; import com.jsowell.pile.domain.ykcCommond.StartChargingCommand; import com.jsowell.pile.dto.*; import com.jsowell.pile.service.*; @@ -27,6 +24,7 @@ import com.jsowell.pile.thirdparty.EquipmentInfo; import com.jsowell.pile.util.MerchantUtils; import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationInfoVO; +import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.lianlian.AccumulativeInfoVO; import com.jsowell.pile.vo.uniapp.customer.BillingPriceVO; import com.jsowell.pile.vo.web.PileConnectorInfoVO; @@ -46,15 +44,17 @@ import com.jsowell.thirdparty.platform.factory.ThirdPartyPlatformFactory; import com.jsowell.thirdparty.platform.service.ThirdPartyPlatformService; import com.jsowell.thirdparty.platform.util.*; import com.jsowell.thirdparty.service.ThirdpartySecretInfoService; +import com.jsowell.thirdparty.yongchengboche.dto.YCBCGetTokenDTO; import org.apache.commons.collections4.CollectionUtils; +import org.bouncycastle.crypto.CryptoException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.spec.InvalidKeySpecException; +import java.util.*; import java.util.stream.Collectors; /** @@ -497,15 +497,14 @@ public class XinDiantuPlatfromServiceImpl implements ThirdPartyPlatformService { /** * 推送充电订单信息 - * supervise_notification_charge_order_info + * notification_charge_order_info */ @Override public String notificationChargeOrderInfo(String orderCode, ThirdPartySecretInfoVO secretInfoVO) { - // 根据订单号查询出信息 OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); - if (orderBasicInfo == null) { - return null; - } + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + + ThirdPartySecretInfoVO thirdPartySecretInfoVO = getXinDiantuPlatformSecretInfo(); String operatorId = Constants.OPERATORID_JIANG_SU; String operatorSecret = secretInfoVO.getTheirOperatorSecret(); @@ -514,47 +513,79 @@ public class XinDiantuPlatfromServiceImpl implements ThirdPartyPlatformService { String dataSecretIv = secretInfoVO.getTheirDataSecretIv(); String urlAddress = secretInfoVO.getTheirUrlPrefix(); - // 根据订单号查询订单详情 - OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); - if (orderDetail == null) { - return null; + String url = urlAddress + BusinessInformationExchangeEnum.NOTIFICATION_CHARGE_ORDER_INFO.getValue(); + Date chargeStartTime = orderBasicInfo.getChargeStartTime(); + if (chargeStartTime == null) { + chargeStartTime = orderBasicInfo.getCreateTime(); + } + Date chargeEndTime = orderBasicInfo.getChargeEndTime(); + if (chargeEndTime == null) { + chargeEndTime = orderBasicInfo.getCreateTime(); } - // 推送地址 - String url = urlAddress + "supervise_notification_charge_order_info"; + JSONObject json = new JSONObject(); + json.put("StartChargeSeq", orderCode); + json.put("ConnectorID", orderBasicInfo.getPileConnectorCode()); + json.put("StartTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, chargeStartTime)); + json.put("EndTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, chargeEndTime)); + json.put("TotalPower", orderDetail.getTotalUsedElectricity().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalElecMoney", orderDetail.getTotalElectricityAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalSeviceMoney", orderDetail.getTotalServiceAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalMoney", orderDetail.getTotalOrderAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("StopReason", 2); // 2:BMS 停止充电 - // 拼装成平台所需格式对象 - ChargeOrderInfo orderInfo = transformChargeOrderInfo(orderBasicInfo, orderDetail); - orderInfo.setOperatorID(operatorId); - String equipmentOwnerID; - if (MerchantUtils.isXiXiaoMerchant(orderBasicInfo.getMerchantId())) { - equipmentOwnerID = Constants.OPERATORID_XI_XIAO; - } else { - PileMerchantInfoVO pileMerchantInfoVO = pileMerchantInfoService.queryMerchantInfoByStationId(orderInfo.getStationID()); - String organizationCode = pileMerchantInfoVO.getOrganizationCode(); - if (StringUtils.isNotBlank(organizationCode) && organizationCode.length() == 18) { - equipmentOwnerID = ThirdPartyPlatformUtils.extractEquipmentOwnerID(pileMerchantInfoVO.getOrganizationCode()); - } else { - equipmentOwnerID = Constants.OPERATORID_JIANG_SU; - } - } - orderInfo.setEquipmentOwnerID(equipmentOwnerID); - - List billingList = pileBillingTemplateService.queryBillingPrice(orderBasicInfo.getStationId()); - // 先将list按照 尖、峰、平、谷 时段排序 - // List collect = billingList.stream().sorted(Comparator.comparing(BillingPriceVO::getTimeType)).collect(Collectors.toList()); - // 再循环该list,拼装对应的充电价格、费率 - List chargeDetails = transformSupChargeDetails(orderDetail, billingList); - orderInfo.setChargeDetails(chargeDetails); + String jsonString = JSON.toJSONString(json); // 获取令牌 String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); - if (StringUtils.isBlank(token)) { - return null; - } - // 调用联联平台接口 - String jsonString = JSON.toJSONString(orderInfo); + // 发送请求 String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); + + return result; + } + + @Override + public String notificationChargeOrderInfo(String orderCode) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchProviderException, CryptoException { + OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); + OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode); + + ThirdPartySecretInfoVO thirdPartySecretInfoVO = getXinDiantuPlatformSecretInfo(); + + String operatorId = Constants.OPERATORID_JIANG_SU; + String operatorSecret = thirdPartySecretInfoVO.getTheirOperatorSecret(); + String signSecret = thirdPartySecretInfoVO.getTheirSigSecret(); + String dataSecret = thirdPartySecretInfoVO.getTheirDataSecret(); + String dataSecretIv = thirdPartySecretInfoVO.getTheirDataSecretIv(); + String urlAddress = thirdPartySecretInfoVO.getTheirUrlPrefix(); + + String url = urlAddress + BusinessInformationExchangeEnum.NOTIFICATION_CHARGE_ORDER_INFO.getValue(); + Date chargeStartTime = orderBasicInfo.getChargeStartTime(); + if (chargeStartTime == null) { + chargeStartTime = orderBasicInfo.getCreateTime(); + } + Date chargeEndTime = orderBasicInfo.getChargeEndTime(); + if (chargeEndTime == null) { + chargeEndTime = orderBasicInfo.getCreateTime(); + } + + JSONObject json = new JSONObject(); + json.put("StartChargeSeq", orderCode); + json.put("ConnectorID", orderBasicInfo.getPileConnectorCode()); + json.put("StartTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, chargeStartTime)); + json.put("EndTime", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, chargeEndTime)); + json.put("TotalPower", orderDetail.getTotalUsedElectricity().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalElecMoney", orderDetail.getTotalElectricityAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalSeviceMoney", orderDetail.getTotalServiceAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("TotalMoney", orderDetail.getTotalOrderAmount().setScale(2, BigDecimal.ROUND_HALF_UP)); + json.put("StopReason", 2); // 2:BMS 停止充电 + + String jsonString = JSON.toJSONString(json); + + // 获取令牌 + String token = getToken(urlAddress, operatorId, operatorSecret, dataSecretIv, signSecret, dataSecret); + // 发送请求 + String result = HttpRequestUtil.sendPost(token, jsonString, url, dataSecret, dataSecretIv, operatorId, signSecret); + return result; } diff --git a/jsowell-ui/src/views/pile/station/index.vue b/jsowell-ui/src/views/pile/station/index.vue index ec230c9f4..9cc06106c 100644 --- a/jsowell-ui/src/views/pile/station/index.vue +++ b/jsowell-ui/src/views/pile/station/index.vue @@ -195,13 +195,14 @@ - + @@ -421,6 +422,10 @@ export default { this.getList(); }); }, + hasRole(roles) { + const currentRoles = this.$store.getters.roles; + return currentRoles.some(role => roles.includes(role)); + }, changeAmapFlag(info) { console.log("info", info) const params = {