This commit is contained in:
2023-07-24 16:10:34 +08:00
8 changed files with 172 additions and 34 deletions

View File

@@ -1,5 +1,6 @@
package com.jsowell.api.uniapp;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
@@ -18,6 +19,7 @@ import com.jsowell.pile.service.IMemberBasicInfoService;
import com.jsowell.pile.service.IMemberPlateNumberRelationService;
import com.jsowell.pile.vo.uniapp.InvoiceTitleVO;
import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.uniapp.MemberWalletInfoVO;
import com.jsowell.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -185,14 +187,15 @@ public class MemberController extends BaseController {
*/
@PostMapping("/getMemberBalanceChanges")
public RestApiResponse<?> getMemberBalanceChanges(HttpServletRequest request, @RequestBody UniAppQueryMemberBalanceDTO dto) {
logger.info("查询用户账户余额变动信息 params:{}", dto.toString() );
logger.info("查询用户账户余额变动信息 params:{}", JSON.toJSONString(dto));
RestApiResponse<?> response = null;
try {
String memberId = getMemberIdByAuthorization(request);
dto.setMemberId(memberId);
PageResponse pageResponse = memberService.getMemberBalanceChanges(dto);
// PageResponse pageResponse = memberService.getMemberBalanceChanges(dto);
// PageResponse pageResponse = memberService.getMemberWalletLog(dto);
response = new RestApiResponse<>(pageResponse);
MemberWalletInfoVO memberWalletInfo = memberService.getMemberWalletInfo(dto);
response = new RestApiResponse<>(memberWalletInfo);
} catch (Exception e) {
logger.error("查询用户账户余额变动信息 error:", e);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_BALANCE_CHANGES_ERROR);

View File

@@ -1,5 +1,6 @@
package com.jsowell.service;
import cn.hutool.core.util.PageUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
@@ -32,10 +33,8 @@ import com.jsowell.pile.dto.*;
import com.jsowell.pile.service.*;
import com.jsowell.pile.transaction.dto.MemberTransactionDTO;
import com.jsowell.pile.transaction.service.TransactionService;
import com.jsowell.pile.vo.uniapp.InvoiceTitleVO;
import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.uniapp.MemberWalletLogVO;
import com.jsowell.pile.vo.uniapp.OrderVO;
import com.jsowell.pile.vo.base.StationInfoVO;
import com.jsowell.pile.vo.uniapp.*;
import com.jsowell.wxpay.service.WxAppletRemoteService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
@@ -80,6 +79,9 @@ public class MemberService {
@Autowired
private IMemberInvoiceTitleService memberInvoiceTitleService;
@Autowired
private IMemberWalletInfoService memberWalletInfoService;
@Autowired
private PileRemoteService pileRemoteService;
@@ -290,14 +292,12 @@ public class MemberService {
return pageResponse;
}
/**
* 获取会员钱包明细
* @return
*/
public PageResponse getMemberWalletLog (UniAppQueryMemberBalanceDTO dto) throws ParseException {
// 获取分页信息以及memberId
int pageNum = dto.getPageNum() == 0 ? 1 : dto.getPageNum();
int pageSize = dto.getPageSize() == 0 ? 10 : dto.getPageSize();
public MemberWalletInfoVO getMemberWalletInfo(UniAppQueryMemberBalanceDTO dto) throws ParseException {
MemberWalletInfoVO vo = new MemberWalletInfoVO();
vo.setMemberId(dto.getMemberId());
// 获取分页信息
long pageNum = dto.getPageNum() == 0 ? 1L : dto.getPageNum();
long pageSize = dto.getPageSize() == 0 ? 10L : dto.getPageSize();
String tradeDate = dto.getTradeDate();
// 获取年、月
String[] split = StringUtils.split(tradeDate, "-");
@@ -311,13 +311,27 @@ public class MemberService {
lastDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date);
dto.setTradeDate(tradeDate);
dto.setEndDate(lastDay);
// 查询会员钱包信息表,获取 本金余额
MemberWalletInfo memberWalletInfo = memberWalletInfoService.selectByMemberId(dto.getMemberId());
if (memberWalletInfo == null) {
// 用户未注册小程序
throw new BusinessException(ReturnCodeEnum.CODE_AUTHENTICATION_ERROR);
}
// 当前余额
vo.setCurrentBalance(memberWalletInfo.getPrincipalBalance().add(memberWalletInfo.getGiftBalance()));
// 根据日期查询会员钱包变动明细
// 分页
PageHelper.startPage(pageNum, pageSize);
// PageHelper.startPage(pageNum, pageSize);
List<MemberWalletLogVO> list = memberBasicInfoService.getMemberWalletDetail(dto);
PageInfo<MemberWalletLogVO> pageInfo = new PageInfo<>(list);
// 总支出
BigDecimal totalConsumption = list.stream().map(MemberWalletLogVO::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
vo.setTotalConsumption(totalConsumption);
// PageInfo<MemberWalletLogVO> pageInfo = new PageInfo<>(list);
// 获取 type 和 subType 的对应信息
for (MemberWalletLogVO walletLogVO : pageInfo.getList()) {
for (MemberWalletLogVO walletLogVO : list) {
// 将负数转为正数
walletLogVO.setAmount(BigDecimal.valueOf(Math.abs(walletLogVO.getAmount().doubleValue())).setScale(2, BigDecimal.ROUND_HALF_UP));
String subType = walletLogVO.getSubType();
@@ -328,16 +342,75 @@ public class MemberService {
// walletLogVO.setTotalAccountAmount(walletLogVO.getPrincipalBalance().add(walletLogVO.getGiftBalance()));
}
List<MemberWalletLogVO> collect = list.stream()
.skip((pageNum - 1) * pageSize)
.limit(pageSize)
.collect(Collectors.toList());
int total = list.size();
int pages = PageUtil.totalPage(total, dto.getPageSize());
// 返回结果集
PageResponse pageResponse = PageResponse.builder()
.pageSize(pageSize)
.pageNum(pageNum)
.list(pageInfo.getList())
.pages(pageInfo.getPages())
.total(pageInfo.getTotal())
.pageNum(Integer.parseInt(String.valueOf(pageNum)))
.pageSize(Integer.parseInt(String.valueOf(pageSize)))
.list(collect)
.pages(pages)
.total(total)
.build();
return pageResponse;
vo.setPageResponse(pageResponse);
return vo;
}
/**
* 获取会员钱包明细
* @return
*/
// public PageResponse getMemberWalletLog (UniAppQueryMemberBalanceDTO dto) throws ParseException {
// // 获取分页信息以及memberId
// int pageNum = dto.getPageNum() == 0 ? 1 : dto.getPageNum();
// int pageSize = dto.getPageSize() == 0 ? 10 : dto.getPageSize();
// String tradeDate = dto.getTradeDate();
// // 获取年、月
// String[] split = StringUtils.split(tradeDate, "-");
// int year = Integer.parseInt(split[0]);
// int month = Integer.parseInt(split[1]);
// // 根据年月获取当月第一天和最后一天
// tradeDate = DateUtils.getFirstDay(year, month, DateUtils.YYYY_MM_DD);
// String lastDay = DateUtils.getLastDay(year, month, DateUtils.YYYY_MM_DD);
// // sql语句查询日期需要多加一天
// Date date = DateUtils.addDays(DateUtils.parseDate(lastDay, DateUtils.YYYY_MM_DD), 1);
// lastDay = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, date);
// dto.setTradeDate(tradeDate);
// dto.setEndDate(lastDay);
// // 根据日期查询会员钱包变动明细
// // 分页
// PageHelper.startPage(pageNum, pageSize);
// List<MemberWalletLogVO> list = memberBasicInfoService.getMemberWalletDetail(dto);
// PageInfo<MemberWalletLogVO> pageInfo = new PageInfo<>(list);
// // 获取 type 和 subType 的对应信息
// for (MemberWalletLogVO walletLogVO : pageInfo.getList()) {
// // 将负数转为正数
// walletLogVO.setAmount(BigDecimal.valueOf(Math.abs(walletLogVO.getAmount().doubleValue())).setScale(2, BigDecimal.ROUND_HALF_UP));
// String subType = walletLogVO.getSubType();
// String subTypeValue = BalanceChangesEnum.getValueByCode(subType);
// if (StringUtils.isNotBlank(subTypeValue)) {
// walletLogVO.setSubType(subTypeValue);
// }
// // walletLogVO.setTotalAccountAmount(walletLogVO.getPrincipalBalance().add(walletLogVO.getGiftBalance()));
// }
//
// PageResponse pageResponse = PageResponse.builder()
// .pageSize(pageSize)
// .pageNum(pageNum)
// .list(pageInfo.getList())
// .pages(pageInfo.getPages())
// .total(pageInfo.getTotal())
// .build();
// return pageResponse;
// }
/**
* 用户绑定车牌号
* @param dto

View File

@@ -3,9 +3,13 @@ package com.jsowell.web.controller.pile;
import com.google.common.collect.ImmutableMap;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.AjaxResult;
import com.jsowell.common.enums.ykc.OrderPayModeEnum;
import com.jsowell.common.enums.ykc.PayModeEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.id.IdUtils;
import com.jsowell.pile.dto.GenerateOrderDTO;
import com.jsowell.pile.dto.PayOrderDTO;
import com.jsowell.pile.dto.QueryPileDTO;
import com.jsowell.pile.dto.UpdateFirmwareDTO;
import com.jsowell.service.OrderService;
@@ -17,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
/**
* 远程控制controller
*/
@@ -58,16 +64,27 @@ public class PileRemoteController {
*/
@PostMapping("/remoteStartChargingForWeb")
public AjaxResult remoteStartCharging(@RequestBody GenerateOrderDTO dto) {
// pileRemoteService.remoteStartCharging(queryPileDTO.getPileSn(), queryPileDTO.getConnectorCode());
// 生成订单并远程启动充电
dto.setStartMode(Constants.ZERO);
String orderCode = null;
// dto.setStartMode(Constants.ZERO);
// String orderCode = null;
String transactionCode = null;
try {
orderCode = orderService.generateOrder(dto);
transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode());
pileRemoteService.remoteStartCharging(dto.getPileSn(), dto.getConnectorCode(), transactionCode, new BigDecimal("500"));
// // 生成订单
// orderCode = orderService.generateOrder(dto);
// // 支付订单
// PayOrderDTO payOrderDTO = new PayOrderDTO();
// payOrderDTO.setPayMode(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue());
// payOrderDTO.setOrderCode(orderCode);
// payOrderDTO.setStartMode(Constants.ZERO);
//
// orderService.payOrder(payOrderDTO);
} catch (Exception e) {
e.printStackTrace();
}
return AjaxResult.success(ImmutableMap.of("orderCode", orderCode));
return AjaxResult.success(ImmutableMap.of("orderCode", transactionCode));
}
/**

View File

@@ -11,6 +11,8 @@ public interface IMemberWalletInfoService {
MemberWalletInfo selectByPrimaryKey(Integer id);
MemberWalletInfo selectByMemberId(String memberId);
int updateByPrimaryKeySelective(MemberWalletInfo record);
int updateByPrimaryKey(MemberWalletInfo record);

View File

@@ -33,6 +33,11 @@ public class MemberWalletInfoServiceImpl implements IMemberWalletInfoService {
return memberWalletInfoMapper.selectByPrimaryKey(id);
}
@Override
public MemberWalletInfo selectByMemberId(String memberId) {
return memberWalletInfoMapper.selectByMemberId(memberId);
}
@Override
public int updateByPrimaryKeySelective(MemberWalletInfo record) {
return memberWalletInfoMapper.updateByPrimaryKeySelective(record);

View File

@@ -619,8 +619,8 @@ public class PileBasicInfoServiceImpl implements IPileBasicInfoService {
List<PileInfoVO> pileInfoVOS = queryPileDetailList(stationIdList);
// 对集合根据pileSn进行去重
ArrayList<PileInfoVO> pileInfoList = pileInfoVOS.stream()
.collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(PileInfoVO::getPileSn))), ArrayList::new));
.collect(Collectors.collectingAndThen(Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(PileInfoVO::getPileSn))), ArrayList::new));
// 桩总数
generalInfo.setTotalPileQuantity(String.valueOf(pileInfoList.size()));
// 总充电订单数 3.0 --> 3

View File

@@ -0,0 +1,35 @@
package com.jsowell.pile.vo.uniapp;
import com.jsowell.common.core.page.PageResponse;
import lombok.Data;
import java.math.BigDecimal;
/**
* 会员钱包明细VO
*
* @author Lemon
* @Date 2023/7/24 14:36
*/
@Data
public class MemberWalletInfoVO {
/**
* 会员id
*/
private String memberId;
/**
* 当前余额
*/
private BigDecimal currentBalance;
/**
* 总消费
*/
private BigDecimal totalConsumption;
/**
* 分页对象list
*/
private PageResponse pageResponse;
}

View File

@@ -243,9 +243,12 @@ public class WxAppletRemoteService {
stopChargingMessage.setEndReason(sendMessageVO.getStopReason()); // 结束原因
stopChargingMessage.setOrderCode(sendMessageVO.getOrderCode()); // 订单号
stopChargingMessage.setChargingDegree(sendMessageVO.getChargingDegree()); // 充电度数
Date chargeStartTime = DateUtils.parseDate(sendMessageVO.getChargeStartTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
Date chargeStopTime = DateUtils.parseDate(sendMessageVO.getChargeStopTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
String chargingTime = DateUtils.getDatePoor(chargeStopTime, chargeStartTime);
String chargingTime = "";
if (StringUtils.isNotBlank(sendMessageVO.getChargeStartTime()) && StringUtils.isNotBlank(sendMessageVO.getChargeStopTime())) {
Date chargeStartTime = DateUtils.parseDate(sendMessageVO.getChargeStartTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
Date chargeStopTime = DateUtils.parseDate(sendMessageVO.getChargeStopTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
chargingTime = DateUtils.getDatePoor(chargeStopTime, chargeStartTime);
}
stopChargingMessage.setChargingTime(chargingTime); // 充电时长