mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-26 17:03:41 +08:00
Merge branch 'dev' into merge_adapay
# Conflicts: # jsowell-pile/src/main/java/com/jsowell/pile/service/ISettleOrderReportService.java # jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java
This commit is contained in:
@@ -23,6 +23,8 @@ import com.jsowell.common.enums.AcquirerEnum;
|
||||
import com.jsowell.common.enums.InvoiceRecordEnum;
|
||||
import com.jsowell.common.enums.MemberWalletEnum;
|
||||
import com.jsowell.common.enums.adapay.AdapayEventEnum;
|
||||
import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
|
||||
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.*;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
@@ -1074,6 +1076,15 @@ public class OrderService {
|
||||
dto.setSubType(MemberWalletEnum.SUBTYPE_TOP_UP.getValue());
|
||||
dto.setUpdatePrincipalBalance(amount);
|
||||
memberBasicInfoService.updateMemberBalance(dto);
|
||||
} else if (StringUtils.equals(type, ScenarioEnum.OCCUPY.getValue())) { // 占桩订单
|
||||
// 通过订单号查询出占桩订单信息
|
||||
OrderPileOccupy orderPileOccupy = orderPileOccupyService.queryByOccupyCode(orderCode);
|
||||
// 订单状态改为 1-订单完成
|
||||
orderPileOccupy.setStatus(OccupyOrderStatusEnum.ORDER_COMPLETE.getCode());
|
||||
// 支付状态改为 1-支付完成
|
||||
orderPileOccupy.setPayStatus(OccupyOrderPayStatusEnum.PAYMENT_COMPLETION.getCode());
|
||||
|
||||
orderPileOccupyService.updateByPrimaryKey(orderPileOccupy);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -103,6 +103,17 @@ public class SettleOrderReportController extends BaseController {
|
||||
return AjaxResult.success(settleOrderReportService.getMerchantOrderReport(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询运营商订单报表V2
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
// @PreAuthorize("@ss.hasPermi('pile:merchant:query')")
|
||||
@PostMapping("/getMerchantOrderReportV2")
|
||||
public AjaxResult getMerchantOrderReportV2(@RequestBody MerchantOrderReportDTO dto) {
|
||||
return AjaxResult.success(settleOrderReportService.getMerchantOrderReportV2(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询站点订单日报详情
|
||||
* http://localhost:8080/order/report/getStationOrderReportDetail
|
||||
|
||||
@@ -431,6 +431,18 @@ public class SpringBootTestController {
|
||||
System.out.println(JSON.toJSONString(resultList));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGeneratePileSn() {
|
||||
// String key = CacheConstants.PILE_SN_GENERATE_KEY + "88";
|
||||
// redisCache.setCacheObject(key, null);
|
||||
// Long pileNum = redisCache.getCacheLong(key);
|
||||
// System.out.println(pileNum);
|
||||
|
||||
snUtils.getPileSn("88");
|
||||
// List<String> list = snUtils.generateSN(2);
|
||||
// System.out.println(list);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGenerateOccupyPileOrder() {
|
||||
String memberId = "67569684";
|
||||
|
||||
@@ -168,6 +168,9 @@ public class RedisCache {
|
||||
public Long getCacheLong(final String key) {
|
||||
Long l = null;
|
||||
Object cacheObject = getCacheObject(key);
|
||||
if (Objects.isNull(cacheObject)) {
|
||||
return null;
|
||||
}
|
||||
if (cacheObject instanceof Integer) {
|
||||
l = ((Integer) cacheObject).longValue();
|
||||
} else if (cacheObject instanceof Long) {
|
||||
|
||||
@@ -7,6 +7,8 @@ public enum ScenarioEnum {
|
||||
ORDER("order", "支付订单"),
|
||||
|
||||
BALANCE("balance", "支付余额"),
|
||||
|
||||
OCCUPY("occupy", "占桩订单"),
|
||||
;
|
||||
|
||||
private String value;
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.jsowell.common.core.redis.RedisCache;
|
||||
import com.jsowell.common.enums.DelFlagEnum;
|
||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.AdapayUtil;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
@@ -115,7 +114,7 @@ public class AdapayService {
|
||||
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
||||
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
||||
Map<String, String> map = Maps.newHashMap();
|
||||
map.put("type", ScenarioEnum.ORDER.getValue());
|
||||
map.put("type", dto.getType());
|
||||
map.put("orderCode", dto.getOrderCode());
|
||||
map.put("payMode", payMode);
|
||||
map.put("memberId", dto.getMemberId());
|
||||
|
||||
@@ -255,16 +255,19 @@ public class PileStationInfo extends BaseEntity {
|
||||
/**
|
||||
* 是否对外开放 (0-否;1-是)
|
||||
*/
|
||||
@Excel(name = "是否对外开放 (0-否;1-是)")
|
||||
private String publicFlag;
|
||||
|
||||
/**
|
||||
* 是否营业中(0-否;1-是)
|
||||
*/
|
||||
@Excel(name = "是否营业中(0-否;1-是)")
|
||||
private String openFlag;
|
||||
|
||||
/**
|
||||
* 是否对接高德(0-否;1-是)
|
||||
*/
|
||||
@Excel(name = "是否对接高德(0-否;1-是)")
|
||||
private String aMapFlag;
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.jsowell.pile.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 查询清分账单DTO
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/28 13:47
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class GetClearingBillDTO {
|
||||
|
||||
private Integer pageNum;
|
||||
|
||||
private Integer pageSize;
|
||||
|
||||
private String merchantId;
|
||||
|
||||
private String startTime;
|
||||
|
||||
private String endTime;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.jsowell.pile.dto;
|
||||
|
||||
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -30,6 +31,12 @@ public class PayOrderDTO {
|
||||
*/
|
||||
private BigDecimal payAmount;
|
||||
|
||||
/**
|
||||
* @see ScenarioEnum
|
||||
* 支付场景
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 微信支付需要用的code
|
||||
*/
|
||||
|
||||
@@ -11,6 +11,11 @@ public class SettleOrderReportDTO {
|
||||
*/
|
||||
private String stationId;
|
||||
|
||||
/**
|
||||
* 运营商id
|
||||
*/
|
||||
private String merchantId;
|
||||
|
||||
/**
|
||||
* 交易日期
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.jsowell.pile.mapper;
|
||||
|
||||
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||
import com.jsowell.pile.vo.web.ClearingBillVO;
|
||||
import com.jsowell.pile.vo.web.MerchantClearingBillVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -57,4 +60,11 @@ public interface ClearingBillInfoMapper {
|
||||
List<ClearingBillInfo> selectByMerchantId(@Param("merchantId") String merchantId, @Param("billStatus") String billStatus);
|
||||
|
||||
void updateStatus(@Param("clearingBillIds") List<Integer> clearingBillIds, @Param("billStatus") String billStatus);
|
||||
|
||||
/**
|
||||
* 后管用 查询运营商账单列表
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<MerchantClearingBillVO> getMerchantClearingBillList(GetClearingBillDTO dto);
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||
import com.jsowell.pile.vo.web.MerchantClearingBillVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -22,4 +24,11 @@ public interface ClearingBillInfoService{
|
||||
List<ClearingBillInfo> selectByMerchantId(String merchantId, String billStatus);
|
||||
|
||||
void updateStatus(List<Integer> clearingBillIds, String billStatus);
|
||||
|
||||
/**
|
||||
* 后管用 查询运营商账单列表
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<MerchantClearingBillVO> getMerchantClearingBillList(GetClearingBillDTO dto);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,13 @@ package com.jsowell.pile.service;
|
||||
|
||||
import com.jsowell.common.core.page.PageResponse;
|
||||
import com.jsowell.pile.domain.SettleOrderReport;
|
||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||
import com.jsowell.pile.dto.MerchantOrderReportDTO;
|
||||
import com.jsowell.pile.dto.SettleOrderReportDTO;
|
||||
import com.jsowell.pile.vo.web.MerchantOrderReportVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 结算订单报Service接口
|
||||
@@ -76,6 +78,8 @@ public interface ISettleOrderReportService {
|
||||
*/
|
||||
MerchantOrderReportVO getMerchantOrderReport(MerchantOrderReportDTO dto);
|
||||
|
||||
MerchantOrderReportVO getMerchantOrderReportV2(MerchantOrderReportDTO dto);
|
||||
|
||||
int deleteByPrimaryKey(Integer id);
|
||||
|
||||
int insert(SettleOrderReport record);
|
||||
@@ -107,4 +111,14 @@ public interface ISettleOrderReportService {
|
||||
* @param tradeDate 交易日期
|
||||
*/
|
||||
void generateDailyOrderReports(String stationId, String tradeDate);
|
||||
Map<String, Object> queryUndividedOrder(SettleOrderReportDTO dto);
|
||||
|
||||
/**
|
||||
* 获取运营商清分账单列表
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
public PageResponse getMerchantClearingBillList(GetClearingBillDTO dto);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,10 @@ package com.jsowell.pile.service.impl;
|
||||
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||
import com.jsowell.pile.mapper.ClearingBillInfoMapper;
|
||||
import com.jsowell.pile.service.ClearingBillInfoService;
|
||||
import com.jsowell.pile.vo.web.MerchantClearingBillVO;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -59,4 +61,14 @@ public class ClearingBillInfoServiceImpl implements ClearingBillInfoService{
|
||||
clearingBillInfoMapper.updateStatus(clearingBillIds, billStatus);
|
||||
}
|
||||
|
||||
/**
|
||||
* 后管用 查询运营商账单列表
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<MerchantClearingBillVO> getMerchantClearingBillList(GetClearingBillDTO dto) {
|
||||
return clearingBillInfoMapper.getMerchantClearingBillList(dto);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2828,6 +2828,7 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
|
||||
// 2023-07-11 全部改为汇付支付
|
||||
dto.setGoodsTitle("充电费用");
|
||||
dto.setGoodsDesc("充电桩预付款金额");
|
||||
dto.setType(ScenarioEnum.ORDER.getValue());
|
||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
|
||||
// 返回微信支付参数
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
|
||||
import com.jsowell.common.enums.uniapp.OccupyOrderStatusEnum;
|
||||
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
|
||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||
import com.jsowell.common.enums.ykc.ScenarioEnum;
|
||||
import com.jsowell.common.exception.BusinessException;
|
||||
import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.PageUtils;
|
||||
@@ -443,6 +444,7 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
|
||||
// 返回支付参数
|
||||
dto.setGoodsTitle("占桩费用");
|
||||
dto.setGoodsDesc("占桩订单金额");
|
||||
dto.setType(ScenarioEnum.OCCUPY.getValue());
|
||||
Map<String, Object> weixinMap = adapayService.createPayment(dto);
|
||||
resultMap.put("weixinMap", weixinMap);
|
||||
} else if (StringUtils.equals(dto.getPayMode(), OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { // 白名单支付
|
||||
|
||||
@@ -13,7 +13,11 @@ import com.jsowell.common.util.DateUtils;
|
||||
import com.jsowell.common.util.PageUtils;
|
||||
import com.jsowell.common.util.StringUtils;
|
||||
import com.jsowell.common.util.id.IdUtils;
|
||||
import com.jsowell.pile.domain.ClearingBillInfo;
|
||||
import com.jsowell.pile.domain.PileBasicInfo;
|
||||
import com.jsowell.pile.domain.PileStationInfo;
|
||||
import com.jsowell.pile.domain.SettleOrderReport;
|
||||
import com.jsowell.pile.dto.GetClearingBillDTO;
|
||||
import com.jsowell.pile.dto.MerchantOrderReportDTO;
|
||||
import com.jsowell.pile.dto.QueryOrderDTO;
|
||||
import com.jsowell.pile.dto.SettleOrderReportDTO;
|
||||
@@ -27,6 +31,8 @@ import com.jsowell.pile.service.ISettleOrderReportService;
|
||||
import com.jsowell.pile.vo.base.SplitSettleAmountVO;
|
||||
import com.jsowell.pile.vo.web.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jsowell.pile.service.*;
|
||||
import com.jsowell.pile.vo.web.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -38,6 +44,7 @@ import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -70,6 +77,12 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
||||
@Autowired
|
||||
private ClearingWithdrawInfoService clearingWithdrawInfoService;
|
||||
|
||||
@Autowired
|
||||
private ClearingBillInfoService clearingBillInfoService;
|
||||
|
||||
@Autowired
|
||||
private IPileStationInfoService pileStationInfoService;
|
||||
|
||||
/**
|
||||
* 查询结算订单报
|
||||
*
|
||||
@@ -97,30 +110,23 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
||||
*/
|
||||
@Override
|
||||
public PageResponse selectSettleOrderReportDetail(SettleOrderReportDTO dto) {
|
||||
SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate());
|
||||
if (orderReport == null) {
|
||||
return new PageResponse();
|
||||
}
|
||||
String orderCodes = orderReport.getOrderCodes();
|
||||
if (StringUtils.isBlank(orderCodes)) {
|
||||
return new PageResponse();
|
||||
}
|
||||
List<String> orderCodes = getOrderCodes(dto);
|
||||
|
||||
List<String> orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
|
||||
// 查询订单支付信息 分页
|
||||
int pageNum = dto.getPageNum() != null ? dto.getPageNum() : 1;
|
||||
int pageSize = dto.getPageSize() != null ? dto.getPageSize() : 10;
|
||||
PageHelper.startPage(pageNum, pageSize);
|
||||
List<ClearingBillVO> clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodeList);
|
||||
List<ClearingBillVO> clearingBillVOList = clearingWithdrawInfoService.selectWithdrawInfoByOrderCodeList(orderCodes);
|
||||
PageInfo<ClearingBillVO> pageInfo = new PageInfo<>(clearingBillVOList);
|
||||
|
||||
// 封装结果集
|
||||
List<OrderSettleDetailVO> resultList = Lists.newArrayList();
|
||||
OrderSettleDetailVO vo = null;
|
||||
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(orderReport.getMerchantId());
|
||||
String wechatAppId = pileMerchantInfoService.queryAppIdByMerchantId(dto.getMerchantId());
|
||||
for (ClearingBillVO clearingBillVO : pageInfo.getList()) {
|
||||
vo = new OrderSettleDetailVO();
|
||||
vo.setOrderCode(clearingBillVO.getOrderCode());
|
||||
vo.setSettleAmount(clearingBillVO.getSettleAmount());
|
||||
String paymentId = clearingBillVO.getPaymentId();
|
||||
QueryPaymentConfirmDTO build = QueryPaymentConfirmDTO.builder()
|
||||
.wechatAppId(wechatAppId)
|
||||
@@ -158,6 +164,51 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
||||
return pageResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据 merchantId 或 stationId 以及交易日期获取订单号
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
private List<String> getOrderCodes(SettleOrderReportDTO dto) {
|
||||
List<String> orderCodeList = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(dto.getMerchantId())) {
|
||||
List<PileStationInfo> stationIdInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId()));
|
||||
// 收集出站点id
|
||||
List<String> stationIds = stationIdInfos.stream()
|
||||
.map(PileStationInfo::getId)
|
||||
.collect(Collectors.toList())
|
||||
.stream()
|
||||
.map(String::valueOf)
|
||||
.collect(Collectors.toList());
|
||||
List<SettleOrderReport> list = queryOrderReport(stationIds, dto.getTradeDate(), dto.getTradeDate());
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<String> orderCodes = list.stream().map(SettleOrderReport::getOrderCodes)
|
||||
.filter(StringUtils::isNotBlank)
|
||||
.collect(Collectors.toList());
|
||||
if (CollectionUtils.isEmpty(orderCodes)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
for (String orderCode : orderCodes) {
|
||||
orderCodeList = Lists.newArrayList(StringUtils.split(orderCode, ","));
|
||||
}
|
||||
} else if (StringUtils.isNotBlank(dto.getStationId())){
|
||||
SettleOrderReport orderReport = selectByStationIdAndDate(dto.getStationId(), dto.getTradeDate());
|
||||
|
||||
if (orderReport == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
String orderCodes = orderReport.getOrderCodes();
|
||||
if (StringUtils.isBlank(orderCodes)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
|
||||
dto.setMerchantId(orderReport.getMerchantId());
|
||||
}
|
||||
return orderCodeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SettleOrderReport> selectByMerchantIdAndDate(String merchantId, String date) {
|
||||
return settleOrderReportMapper.selectByMerchantIdAndDate(merchantId, date);
|
||||
@@ -280,6 +331,88 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据运营商id查询订单报表V2
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public MerchantOrderReportVO getMerchantOrderReportV2(MerchantOrderReportDTO dto) {
|
||||
int pageNum = dto.getPageNum() == null ? 1 : dto.getPageNum();
|
||||
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
|
||||
if (StringUtils.isBlank(dto.getStartTime())) {
|
||||
dto.setStartTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, DateUtils.addDays(new Date(), -7)));
|
||||
}
|
||||
if (StringUtils.isBlank(dto.getEndTime())) {
|
||||
dto.setEndTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date()));
|
||||
}
|
||||
MerchantOrderReportVO vo = new MerchantOrderReportVO();
|
||||
MerchantOrderReportVO.MerchantOrderReport report = new MerchantOrderReportVO.MerchantOrderReport();
|
||||
PageUtils.startPage(pageNum, pageSize);
|
||||
GetClearingBillDTO clearingBillDTO = GetClearingBillDTO.builder()
|
||||
.merchantId(dto.getMerchantId())
|
||||
.startTime(dto.getStartTime())
|
||||
.endTime(dto.getEndTime())
|
||||
.pageNum(dto.getPageNum())
|
||||
.pageSize(dto.getPageSize())
|
||||
.build();
|
||||
PageResponse pageResponse = getMerchantClearingBillList(clearingBillDTO);
|
||||
vo.setPageResponse(pageResponse);
|
||||
|
||||
vo.setMerchantId(dto.getMerchantId());
|
||||
// 进行数据汇总
|
||||
List<SettleOrderReportVO> list = settleOrderReportMapper.getMerchantOrderReport(dto);
|
||||
// 用电度数
|
||||
report.setUseElectricity(list.stream().map(SettleOrderReportVO::getUseElectricity).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 充电次数
|
||||
report.setChargeNum(list.stream().map(SettleOrderReport -> new BigDecimal(SettleOrderReport.getChargeNum())).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 充电时长
|
||||
report.setChargeTime(list.stream().map(SettleOrderReport -> new BigDecimal(SettleOrderReport.getChargeTime())).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 电费金额
|
||||
report.setElectricityAmount(list.stream().map(SettleOrderReportVO::getElectricityAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 服务费金额
|
||||
report.setServiceAmount(list.stream().map(SettleOrderReportVO::getServiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 收入金额
|
||||
report.setTotalAmount(list.stream().map(SettleOrderReportVO::getTotalAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 虚拟金额
|
||||
report.setVirtualAmount(list.stream().map(SettleOrderReportVO::getVirtualAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 交易金额
|
||||
report.setTradeAmount(list.stream().map(SettleOrderReportVO::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
// 交易手续费
|
||||
report.setTradeFee(list.stream().map(SettleOrderReportVO::getTradeFee).reduce(BigDecimal.ZERO, BigDecimal::add));
|
||||
|
||||
vo.setMerchantOrderReport(report);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取运营商清分账单列表
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public PageResponse getMerchantClearingBillList(GetClearingBillDTO dto) {
|
||||
List<MerchantClearingBillVO> resultList;
|
||||
int pageNum = dto.getPageNum() == null ? 1 : dto.getPageNum();
|
||||
int pageSize = dto.getPageSize() == null ? 10 : dto.getPageSize();
|
||||
// 分页
|
||||
PageUtils.startPage(pageNum, pageSize);
|
||||
resultList = clearingBillInfoService.getMerchantClearingBillList(dto);
|
||||
if (CollectionUtils.isEmpty(resultList)) {
|
||||
return null;
|
||||
}
|
||||
PageInfo<MerchantClearingBillVO> pageInfo = new PageInfo<>(resultList);
|
||||
PageResponse response = PageResponse.builder()
|
||||
.pageNum(pageInfo.getPageNum())
|
||||
.pageSize(pageInfo.getPageSize())
|
||||
.list(pageInfo.getList())
|
||||
.total(pageInfo.getTotal())
|
||||
.pages(pageInfo.getPages())
|
||||
.build();
|
||||
return response;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteByPrimaryKey(Integer id) {
|
||||
return settleOrderReportMapper.deleteByPrimaryKey(id);
|
||||
@@ -340,6 +473,11 @@ public class SettleOrderReportServiceImpl implements ISettleOrderReportService {
|
||||
return settleOrderReportMapper.queryOrderReport(stationIdList, startTime, endTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> queryUndividedOrder(SettleOrderReportDTO dto) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算站点订单报表
|
||||
*
|
||||
|
||||
@@ -36,20 +36,23 @@ public class SnUtils {
|
||||
* @param prefix 生成序列号的前缀
|
||||
* @return
|
||||
*/
|
||||
private String getPileSn(String prefix) {
|
||||
public String getPileSn(String prefix) {
|
||||
//序列号前缀加特定标识,如系统模块名之类的 防止重复
|
||||
String key = CacheConstants.PILE_SN_GENERATE_KEY + prefix;
|
||||
String increResult = null;
|
||||
try {
|
||||
String pileNum = redisCache.getCacheObject(key);
|
||||
if (StringUtils.isBlank(pileNum)) {
|
||||
// 取缓存
|
||||
Integer pileNum = redisCache.getCacheObject(key);
|
||||
if (pileNum == null) {
|
||||
// 缓存中没有,从数据库中取
|
||||
PileBasicInfo pileInfo = pileBasicInfoService.getMaxNumPileInfo();
|
||||
String pileSn = pileInfo.getSn();
|
||||
// 将前四位截取,并将后面转为long
|
||||
long pileSnNum = Long.parseLong(StringUtils.substring(pileSn, 4, pileSn.length()));
|
||||
Long pileSnNum = Long.parseLong(StringUtils.substring(pileSn, 4, pileSn.length()));
|
||||
// String pileSnNum = StringUtils.substring(pileSn, 4, pileSn.length());
|
||||
// 再将该值存入数据库
|
||||
redisCache.setCacheObject(key, pileSnNum);
|
||||
redisCache.setCacheObject(key, pileSnNum.intValue());
|
||||
|
||||
}
|
||||
Long increNum = redisCache.increment(key, 1);
|
||||
// 年份
|
||||
@@ -63,11 +66,13 @@ public class SnUtils {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String pileSn = "88230000002060";
|
||||
String substring = StringUtils.substring(pileSn, 4, pileSn.length());
|
||||
long l = Long.parseLong(substring);
|
||||
System.out.println(substring);
|
||||
System.out.println(l);
|
||||
// String pileSn = "88230000002060";
|
||||
// String substring = StringUtils.substring(pileSn, 4, pileSn.length());
|
||||
// long l = Long.parseLong(substring);
|
||||
// System.out.println(substring);
|
||||
// System.out.println(l);
|
||||
|
||||
Long a = 3147483647L;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.jsowell.pile.vo.web;
|
||||
import com.jsowell.adapay.response.QueryPaymentConfirmDetailResponse;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ClearingBillVO {
|
||||
/**
|
||||
@@ -10,6 +12,11 @@ public class ClearingBillVO {
|
||||
*/
|
||||
private String orderCode;
|
||||
|
||||
/**
|
||||
* 结算金额
|
||||
*/
|
||||
private BigDecimal settleAmount;
|
||||
|
||||
/**
|
||||
* 支付id
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.jsowell.pile.vo.web;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 运营商清分账单VO
|
||||
*
|
||||
* @author Lemon
|
||||
* @Date 2023/8/28 13:30
|
||||
*/
|
||||
@Data
|
||||
public class MerchantClearingBillVO {
|
||||
|
||||
// 交易日期
|
||||
private String tradeDate;
|
||||
|
||||
// 账单状态
|
||||
private String billStatus;
|
||||
|
||||
// 清分账单编号
|
||||
private String clearingBillCode;
|
||||
|
||||
// 清分时间
|
||||
private String clearingTime;
|
||||
|
||||
// 运营商id
|
||||
private String merchantId;
|
||||
|
||||
// 运营商名称
|
||||
private String merchantName;
|
||||
|
||||
// 应收金额
|
||||
private String receivableAmount;
|
||||
|
||||
// 应清分金额
|
||||
private String shouldClearingAmount;
|
||||
|
||||
// 实际清分金额
|
||||
private String actualClearingAmount;
|
||||
|
||||
// 手续费
|
||||
private String feeAmount;
|
||||
|
||||
// 可提现金额
|
||||
private String withdrawAbleAmount;
|
||||
|
||||
// 提现单号
|
||||
private String withdrawCode;
|
||||
}
|
||||
@@ -45,5 +45,8 @@ public class MerchantOrderReportVO {
|
||||
|
||||
// 虚拟金额
|
||||
private BigDecimal virtualAmount;
|
||||
|
||||
// 白名单支付次数
|
||||
private BigDecimal whitelistPaymentsNum;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.jsowell.pile.vo.web;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 订单结算详情
|
||||
*/
|
||||
@@ -19,7 +21,7 @@ public class OrderSettleDetailVO {
|
||||
/**
|
||||
* 结算金额
|
||||
*/
|
||||
private String settleAmount;
|
||||
private BigDecimal settleAmount;
|
||||
|
||||
/**
|
||||
* 清分状态
|
||||
@@ -34,7 +36,7 @@ public class OrderSettleDetailVO {
|
||||
|
||||
/**
|
||||
* 提现状态
|
||||
* 0-未提现;1-体现中;2-提现到账
|
||||
* 0-未提现;1-提现中;2-提现到账
|
||||
*/
|
||||
private String withdrawStatus;
|
||||
|
||||
|
||||
@@ -268,4 +268,24 @@
|
||||
#{item,jdbcType=INTEGER}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<select id="getMerchantClearingBillList" resultType="com.jsowell.pile.vo.web.MerchantClearingBillVO" parameterType="com.jsowell.pile.dto.GetClearingBillDTO">
|
||||
select
|
||||
t1.trade_date as tradeDate,
|
||||
t1.bill_status as billStatus,
|
||||
t1.clearing_bill_code as clearingBillCode,
|
||||
t1.clearing_time as clearingTime,
|
||||
t1.merchant_id as merchantId,
|
||||
t2.merchant_name as merchantName,
|
||||
t1.receivable_amount as receivableAmount,
|
||||
t1.should_clearing_amount as shouldClearingAmount,
|
||||
t1.actual_clearing_amount as actualClearingAmount,
|
||||
t1.fee_amount as feeAmount,
|
||||
t1.withdrawable_amount as withdrawAbleAmount,
|
||||
t1.withdraw_code as withdrawCode
|
||||
from clearing_bill_info t1
|
||||
join pile_merchant_info t2 on t1.merchant_id = t2.id and t1.del_flag = '0'
|
||||
where t1.merchant_id = #{merchantId,jdbcType=VARCHAR}
|
||||
and t1.create_time between #{startTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR}
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -453,6 +453,7 @@
|
||||
select
|
||||
t1.clearing_bill_code as clearingBillCode,
|
||||
t2.order_code as orderCode,
|
||||
t5.settle_amount as settleAmount,
|
||||
t3.withdraw_code as withdrawCode,
|
||||
t3.withdraw_status as withdrawStatus,
|
||||
t4.payment_id as paymentId
|
||||
@@ -460,6 +461,7 @@
|
||||
left join clearing_bill_detail t2 on t2.clearing_bill_code = t1.clearing_bill_code and t2.del_flag = '0'
|
||||
left join clearing_withdraw_info t3 on t3.withdraw_code = t1.withdraw_code and t3.del_flag = '0'
|
||||
left join adapay_callback_record t4 on t4.order_code = t2.order_code and t4.del_flag = '0'
|
||||
left join order_basic_info t5 on t5.order_code = t2.order_code and t5.del_flag = '0'
|
||||
where t1.del_flag = '0'
|
||||
and t2.order_code in
|
||||
<foreach collection="orderCodeList" item="orderCode" open="(" separator="," close=")">
|
||||
|
||||
@@ -402,9 +402,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
|
||||
<select id="getMaxNumPileInfo" resultMap="PileBasicInfoResult">
|
||||
select
|
||||
max(id),
|
||||
id,
|
||||
sn
|
||||
from
|
||||
pile_basic_info
|
||||
order by
|
||||
id desc
|
||||
limit 1
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -3,30 +3,35 @@
|
||||
<div class="main">
|
||||
<div class="main-right">
|
||||
<p class="center">账户余额(元)</p>
|
||||
<p class="center number">{{adapayMember.acctBalance}}</p>
|
||||
<p class="center">注:
|
||||
<p class="center number">{{ adapayMember.acctBalance }}</p>
|
||||
<p class="center">
|
||||
注:
|
||||
<span class="text">账户余额 = 可用余额 + 冻结余额</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="main-right">
|
||||
<p class="center">可用余额(元)</p>
|
||||
<p class="center number">{{adapayMember.avlBalance}}</p>
|
||||
<el-button type="primary" style="display:block;margin:0 auto" v-if="adapayMember.avlBalance > withdrawalFee" @click="dialogVisible = true">提现申请</el-button>
|
||||
<p class="center" v-else>注:
|
||||
<span class="text">该余额大于{{withdrawalFee}}元时,才可发起取现</span>
|
||||
<p class="center number">{{ adapayMember.avlBalance }}</p>
|
||||
<el-button type="primary" style="display: block; margin: 0 auto"
|
||||
v-if="adapayMember.avlBalance > withdrawalFee" @click="dialogVisible = true">提现申请</el-button>
|
||||
<p class="center" v-else>
|
||||
注:
|
||||
<span class="text">该余额大于{{ withdrawalFee }}元时,才可发起取现</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="main-right">
|
||||
<p class="center">冻结金额(元)</p>
|
||||
<p class="center number">{{adapayMember.frzBalance}}</p>
|
||||
<p class="center ">注:
|
||||
<p class="center number">{{ adapayMember.frzBalance }}</p>
|
||||
<p class="center">
|
||||
注:
|
||||
<span class="text">当配置了自动结算功能,在每日发起结算时会将可用余额转为冻结金额。该部分金额不允许取现。</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="main-right">
|
||||
<p class="center">昨日日终余额(元)</p>
|
||||
<p class="center number">{{adapayMember.lastAvlBalance}}</p>
|
||||
<p class="center">注:
|
||||
<p class="center number">{{ adapayMember.lastAvlBalance }}</p>
|
||||
<p class="center">
|
||||
注:
|
||||
<span class="text">一</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -110,37 +115,38 @@
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="订单流水" name="second">订单流水</el-tab-pane>
|
||||
</el-tabs> -->
|
||||
<el-dialog title="提现申请" :visible.sync="dialogVisible" width="33%" :before-close="handleClose">
|
||||
<el-dialog title="提现申请" :visible.sync="dialogVisible" width="33%">
|
||||
温馨提示
|
||||
<div style="font-size:12px;color:gray">
|
||||
<div style="font-size: 12px; color: gray">
|
||||
<p>1.提现将在3个工作日内审核到账,节假日审核顺延</p>
|
||||
<p>2.部分流量方的充电订单存在账期,需要一定周期后才开始执行清分</p>
|
||||
<p>3.提现为银行自动付款,根据银行要求会收取手续费,请知悉</p>
|
||||
<p>4.订单收入包含了第三方的分成收入金额,已自动扣除万车充分成金额</p>
|
||||
</div>
|
||||
<p>可提现(元):
|
||||
<span class="number">{{adapayMember.avlBalance}}</span>
|
||||
<p>
|
||||
可提现(元):
|
||||
<span class="number">{{ adapayMember.avlBalance }}</span>
|
||||
</p>
|
||||
<p>手续费(元):
|
||||
<span class="number">{{withdrawalFee.toFixed(2)}}</span>
|
||||
<p>
|
||||
手续费(元):
|
||||
<span class="number">{{ withdrawalFee.toFixed(2) }}</span>
|
||||
</p>
|
||||
<p>实际到账(元):
|
||||
<span class="number">{{adapayMember.avlBalance -withdrawalFee}}</span>
|
||||
<p>
|
||||
实际到账(元):
|
||||
<span class="number">{{ adapayMember.avlBalance - withdrawalFee }}</span>
|
||||
</p>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submit">提交</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submit">提交</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!-- <button @click="handleClose">aaaaa</button> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
queryAdapayAccountBalance,withdraw
|
||||
} from "@/api/adapayMember/adapayMember";
|
||||
import { queryAdapayAccountBalance, withdraw } from "@/api/adapayMember/adapayMember";
|
||||
export default {
|
||||
props:['merchantId'],
|
||||
props: ["merchantId"],
|
||||
data() {
|
||||
return {
|
||||
activeName: "first",
|
||||
@@ -148,19 +154,30 @@ export default {
|
||||
buttonBoolean: false,
|
||||
//图标,可根据自己的需求匹配
|
||||
icon: "el-icon-caret-bottom",
|
||||
createTimeRange:'',
|
||||
adapayMember:{},
|
||||
createTimeRange: "",
|
||||
adapayMember: {},
|
||||
dialogVisible: false,
|
||||
withdrawalFee: 5
|
||||
withdrawalFee: 5,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleClose(done) {
|
||||
this.$confirm('确认关闭?')
|
||||
.then(_ => {
|
||||
done();
|
||||
})
|
||||
.catch(_ => {});
|
||||
handleClose() {
|
||||
this.$confirm("确认提交?")
|
||||
.then((_) => {
|
||||
let params = {
|
||||
merchantId: this.merchantId,
|
||||
cashAmt: this.adapayMember.avlBalance,
|
||||
};
|
||||
withdraw(params).then((response) => {
|
||||
console.log("res 提现金额", response);
|
||||
if (response.code !== 200) return this.$modal.msgError(response.msg);
|
||||
this.$modal.msgSuccess("操作成功");
|
||||
this.getList();
|
||||
});
|
||||
|
||||
this.dialogVisible = false;
|
||||
})
|
||||
.catch((_) => { });
|
||||
},
|
||||
handleClick(tab, event) {
|
||||
console.log(tab, event);
|
||||
@@ -177,18 +194,18 @@ export default {
|
||||
}
|
||||
},
|
||||
// 提现弹窗确定事件
|
||||
submit(){
|
||||
let params = {
|
||||
merchantId: this.merchantId,
|
||||
cashAmt:this.adapayMember.avlBalance
|
||||
}
|
||||
withdraw(params).then((response) =>{
|
||||
console.log('res 提现金额',response);
|
||||
if(response.code !== 200) return this.$modal.msgError(response.msg);
|
||||
this.$modal.msgSuccess("操作成功");
|
||||
this.getList()
|
||||
})
|
||||
this.dialogVisible = false
|
||||
submit() {
|
||||
// let params = {
|
||||
// merchantId: this.merchantId,
|
||||
// cashAmt: this.adapayMember.avlBalance,
|
||||
// };
|
||||
// withdraw(params).then((response) => {
|
||||
// console.log("res 提现金额", response);
|
||||
// if (response.code !== 200) return this.$modal.msgError(response.msg);
|
||||
// this.$modal.msgSuccess("操作成功");
|
||||
// this.getList();
|
||||
// });
|
||||
this.handleClose();
|
||||
},
|
||||
getList() {
|
||||
console.log("this.merchantId", this.merchantId);
|
||||
@@ -197,49 +214,57 @@ export default {
|
||||
};
|
||||
queryAdapayAccountBalance(param).then((response) => {
|
||||
console.log("查询 queryAdapayAccountBalance", response);
|
||||
this.adapayMember = response.data;
|
||||
this.adapayMember = response.data;
|
||||
});
|
||||
},
|
||||
|
||||
},
|
||||
created () {
|
||||
this.getList()
|
||||
}
|
||||
created() {
|
||||
this.getList();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.number{
|
||||
color:#50bfff;font-size:20px;font-weight: bolder;
|
||||
.number {
|
||||
color: #50bfff;
|
||||
font-size: 20px;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.center{
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.text{
|
||||
|
||||
.text {
|
||||
font-size: 12px;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.main {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
// align-items: baseline;
|
||||
.main-right{
|
||||
.main-right {
|
||||
width: 310px;
|
||||
margin-right: 20px;
|
||||
border: 1px solid #e6ebf5;
|
||||
border-radius: 10px;
|
||||
padding: 10px;
|
||||
transition: all .2s linear;
|
||||
transition: all 0.2s linear;
|
||||
}
|
||||
}
|
||||
.main-right:hover{
|
||||
|
||||
.main-right:hover {
|
||||
box-shadow: 0 0 5px 3px #999;
|
||||
}
|
||||
|
||||
.bord {
|
||||
position: relative;
|
||||
top: 68px;
|
||||
height: 60px;
|
||||
border-left: 1px solid gray;
|
||||
}
|
||||
|
||||
.card {
|
||||
// width: 230px;
|
||||
padding: 10px;
|
||||
|
||||
Reference in New Issue
Block a user