ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/factory/ParkingLotFallbackFactory.java
@@ -4,6 +4,7 @@ import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.common.core.domain.R; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,6 +32,11 @@ public R<TParkingLot> getLotBySiteId(Integer siteId) { return R.fail("通过站点id查询停车场信息调用失败:" + throwable.getMessage()); } @Override public R<TParkingRecord> getRecordById(Long siteId) { return R.fail("通过id查询停车场记录:" + throwable.getMessage()); } }; } } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/feignClient/ParkingLotClient.java
@@ -3,6 +3,7 @@ import com.ruoyi.chargingPile.api.factory.ParkingLotFallbackFactory; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import io.swagger.annotations.ApiOperation; @@ -26,4 +27,7 @@ @PostMapping(value = "/t-parking-lot/getLotBySiteId") public R<TParkingLot> getLotBySiteId(@RequestParam("siteId") Integer siteId); @PostMapping(value = "/t-parking-lot/getRecordById") public R<TParkingRecord> getRecordById(@RequestParam("id") Long siteId); } ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TParkingRecord.java
@@ -39,6 +39,9 @@ @ApiModelProperty(value = "车牌号") @TableField("license_plate") private String licensePlate; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "车辆颜色") @TableField("vehicle_color") ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java
@@ -155,4 +155,11 @@ @TableField("refund_time") private LocalDateTime refundTime; @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("pay_time") private LocalDateTime payTime; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrderRefund.java
New file @@ -0,0 +1,90 @@ package com.ruoyi.order.api.model; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author xiaochen * @since 2024-08-26 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_charging_order_refund") @ApiModel(value="TChargingOrderRefund对象", description="") public class TChargingOrderRefund implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableField("id") private Long id; @ApiModelProperty(value = "订单id") @TableField("charging_order_id") private Long chargingOrderId; @ApiModelProperty(value = "退款流水号") @TableField("refund_code") private String refundCode; @ApiModelProperty(value = "退款金额") @TableField("refund_amount") private BigDecimal refundAmount; @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)") @TableField("refund_status") private Integer refundStatus; @ApiModelProperty(value = "1wx2ali") @TableField("pay_type") private Integer payType; @ApiModelProperty(value = "退款第三方流水号") @TableField("refund_serial_number") private String refundSerialNumber; @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "退款标题") @TableField("refund_title") private String refundTitle; @ApiModelProperty(value = "退款内容") @TableField("refund_content") private String refundContent; @ApiModelProperty(value = "退款原因") @TableField("refund_reason") private String refundReason; @ApiModelProperty(value = "退款备注") @TableField("refund_remark") private String refundRemark; @ApiModelProperty(value = "累计退款金额") @TableField("refund_total_amount") private BigDecimal refundTotalAmount; @ApiModelProperty(value = "累计退款金额") @TableField("pay_amount") private BigDecimal payAmount; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TOrderAppeal.java
@@ -35,6 +35,10 @@ @TableField("order_type") private Integer orderType; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "订单id") @TableField("order_id") private Long orderId; @@ -47,6 +51,10 @@ @TableField("reason") private String reason; @ApiModelProperty(value = "联系方式") @TableField("phone") private String phone; @ApiModelProperty(value = "申诉内容") @TableField("content") private String content; ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrder.java
@@ -157,6 +157,11 @@ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("refund_time") private LocalDateTime refundTime; @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("pay_time") private LocalDateTime payTime; @ApiModelProperty(value = "收货人") @TableField(exist = false) ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TShoppingOrderRefund.java
New file @@ -0,0 +1,89 @@ package com.ruoyi.order.api.model; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author xiaochen * @since 2024-08-26 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_shopping_order_refund") @ApiModel(value="TShoppingOrderRefund对象", description="") public class TShoppingOrderRefund implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableField("id") private Long id; @ApiModelProperty(value = "累计退款金额") @TableField("pay_amount") private BigDecimal payAmount; @ApiModelProperty(value = "1wx2ali") @TableField("pay_type") private Integer payType; @ApiModelProperty(value = "订单id") @TableField("shopping_order_id") private Long shoppingOrderId; @ApiModelProperty(value = "退款流水号") @TableField("refund_code") private String refundCode; @ApiModelProperty(value = "退款金额") @TableField("refund_amount") private BigDecimal refundAmount; @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)") @TableField("refund_status") private Integer refundStatus; @ApiModelProperty(value = "退款第三方流水号") @TableField("refund_serial_number") private String refundSerialNumber; @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "退款标题") @TableField("refund_title") private String refundTitle; @ApiModelProperty(value = "退款内容") @TableField("refund_content") private String refundContent; @ApiModelProperty(value = "退款原因") @TableField("refund_reason") private String refundReason; @ApiModelProperty(value = "退款备注") @TableField("refund_remark") private String refundRemark; @ApiModelProperty(value = "累计退款金额") @TableField("refund_total_amount") private BigDecimal refundTotalAmount; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrder.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; @@ -11,6 +12,7 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.time.LocalDateTime; /** * <p> @@ -80,4 +82,12 @@ @TableField("serial_number") private String serialNumber; @ApiModelProperty(value = "支付时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("pay_time") private LocalDateTime payTime; @ApiModelProperty(value = "退款金额") @TableField("refund_amount") private BigDecimal refundAmount; } ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TVipOrderRefund.java
New file @@ -0,0 +1,91 @@ package com.ruoyi.order.api.model; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.TableField; import java.io.Serializable; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author xiaochen * @since 2024-08-26 */ @Data @EqualsAndHashCode(callSuper = false) @TableName("t_vip_order_refund") @ApiModel(value="TVipOrderRefund对象", description="") public class TVipOrderRefund implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") @TableField("id") private Long id; @ApiModelProperty(value = "累计退款金额") @TableField("pay_amount") private BigDecimal payAmount; @ApiModelProperty(value = "1wx2ali") @TableField("pay_type") private Integer payType; @ApiModelProperty(value = "订单id") @TableField("vip_order_id") private Long vipOrderId; @ApiModelProperty(value = "退款流水号") @TableField("refund_code") private String refundCode; @ApiModelProperty(value = "退款金额") @TableField("refund_amount") private BigDecimal refundAmount; @ApiModelProperty(value = "退款状态(1=退款中,2=退款成功)") @TableField("refund_status") private Integer refundStatus; @ApiModelProperty(value = "退款第三方流水号") @TableField("refund_serial_number") private String refundSerialNumber; @ApiModelProperty(value = "退款成功时间") @TableField("refund_time") private LocalDateTime refundTime; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "退款标题") @TableField("refund_title") private String refundTitle; @ApiModelProperty(value = "退款内容") @TableField("refund_content") private String refundContent; @ApiModelProperty(value = "退款原因") @TableField("refund_reason") private String refundReason; @ApiModelProperty(value = "退款备注") @TableField("refund_remark") private String refundRemark; @ApiModelProperty(value = "累计退款金额") @TableField("refund_total_amount") private BigDecimal refundTotalAmount; } ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TParkingLotController.java
@@ -5,11 +5,13 @@ import com.ruoyi.chargingPile.api.dto.TParkingLotDTO; import com.ruoyi.chargingPile.api.model.TCarport; import com.ruoyi.chargingPile.api.model.TParkingLot; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.chargingPile.api.model.TVehicleRamp; import com.ruoyi.chargingPile.api.query.TParkingLotQuery; import com.ruoyi.chargingPile.api.vo.TParkingLotVO; import com.ruoyi.chargingPile.service.TCarportService; import com.ruoyi.chargingPile.service.TParkingLotService; import com.ruoyi.chargingPile.service.TParkingRecordService; import com.ruoyi.chargingPile.service.TVehicleRampService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; @@ -23,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Arrays; import java.util.List; @@ -42,6 +45,9 @@ private final TParkingLotService parkingLotService; private final TVehicleRampService vehicleRampService; private final TCarportService carportService; @Resource private TParkingRecordService parkingRecordService; @Autowired public TParkingLotController(TParkingLotService parkingLotService, TVehicleRampService vehicleRampService, TCarportService carportService) { @@ -138,5 +144,10 @@ return R.ok(parkingLotService.getOne(Wrappers.lambdaQuery(TParkingLot.class) .eq(TParkingLot::getSiteId, siteId))); } @PostMapping(value = "/getRecordById") public R<TParkingRecord> getRecordById(@RequestParam("id") Long id){ return R.ok(parkingRecordService.getById(id)); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -1,8 +1,20 @@ package com.ruoyi.order.controller; import java.math.BigDecimal; import java.time.LocalDateTime; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.account.api.feignClient.AppUserCarClient; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUserCar; import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; import com.ruoyi.chargingPile.api.feignClient.ChargingPileClient; import com.ruoyi.chargingPile.api.feignClient.ParkingLotClient; import com.ruoyi.chargingPile.api.feignClient.SiteClient; import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.chargingPile.api.model.TParkingRecord; import com.ruoyi.chargingPile.api.vo.SiteVO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.redis.service.RedisService; @@ -10,8 +22,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TOrderEvaluate; import com.ruoyi.order.api.model.*; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.query.TChargingCountQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; @@ -22,9 +33,7 @@ import com.ruoyi.order.dto.MyChargingOrderList; import com.ruoyi.order.dto.OrderEvaluateVo; import com.ruoyi.order.dto.*; import com.ruoyi.order.service.TChargingOrderService; import com.ruoyi.order.service.TOrderEvaluateService; import com.ruoyi.order.service.TOrderEvaluateTagService; import com.ruoyi.order.service.*; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.WxPaymentClient; import com.ruoyi.payment.api.vo.AliQueryOrder; @@ -39,6 +48,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.List; @@ -71,23 +81,148 @@ @Resource private AliPaymentClient aliPaymentClient; @Resource private TShoppingOrderService shoppingOrderService; @Autowired private AppUserClient appUserClient; @Resource private TVipOrderService vipOrderService; @Resource private ParkingLotClient parkingLotClient; @Resource private TChargingOrderRefundService chargingOrderRefundService; @Resource private TShoppingOrderRefundService shoppingOrderRefundService; @Resource private TVipOrderRefundService vipOrderRefundService; @Resource private SiteClient siteClient; @Resource private ChargingPileClient chargingPileClient; @Resource private ChargingGunClient chargingGunClient; @Resource private AppUserCarClient appUserCarClient; @Resource private TChargingOrderAccountingStrategyService chargingOrderAccountingStrategyService; @ResponseBody @PostMapping(value = "/pay/order/list") @ApiOperation(value = "列表", tags = {"管理后台-支付订单-订单信息"}) public R payOrderList(@RequestBody ChargingOrderQuery dto){ public R<PageInfo<PayOrderDto>> payOrderList(@RequestBody PayOrderQueryDto payOrderQueryDto){ return chargingOrderService.payOrderQuery(payOrderQueryDto); } @ResponseBody @GetMapping(value = "/pay/order/pay/detail") @ApiOperation(value = "支付信息", tags = {"管理后台-支付订单-订单信息"}) public R<PayOrderInfoDto> payOrderList(Long orderId,Integer type){ switch (type){ case 1: TChargingOrder byId = chargingOrderService.getById(orderId); PayOrderInfoDto payOrderInfoDto = new PayOrderInfoDto(); payOrderInfoDto.setOrderId(byId.getId().toString()); payOrderInfoDto.setCode(byId.getCode()); payOrderInfoDto.setTradeNo(byId.getRechargeSerialNumber()); payOrderInfoDto.setPayType(byId.getRechargePaymentType()); payOrderInfoDto.setPayAmount(byId.getPaymentAmount()); payOrderInfoDto.setPayTime(byId.getPayTime()); payOrderInfoDto.setRefundAmount(byId.getRefundAmount()); return R.ok(payOrderInfoDto); case 2: TShoppingOrder byId1 = shoppingOrderService.getById(orderId); PayOrderInfoDto payOrderInfoDto1 = new PayOrderInfoDto(); payOrderInfoDto1.setOrderId(byId1.getId().toString()); payOrderInfoDto1.setCode(byId1.getCode()); payOrderInfoDto1.setTradeNo(byId1.getSerialNumber()); payOrderInfoDto1.setPayType(byId1.getPaymentType()); payOrderInfoDto1.setPayAmount(byId1.getPaymentAmount()); payOrderInfoDto1.setPayTime(byId1.getPayTime()); payOrderInfoDto1.setRefundAmount(byId1.getRefundAmount()); return R.ok(payOrderInfoDto1); case 3 : TVipOrder byId2 = vipOrderService.getById(orderId); PayOrderInfoDto payOrderInfoDto2 = new PayOrderInfoDto(); payOrderInfoDto2.setOrderId(byId2.getId().toString()); payOrderInfoDto2.setCode(byId2.getCode()); payOrderInfoDto2.setTradeNo(byId2.getSerialNumber()); payOrderInfoDto2.setPayType(byId2.getPaymentType()); payOrderInfoDto2.setPayAmount(byId2.getPaymentAmount()); payOrderInfoDto2.setPayTime(byId2.getPayTime()); payOrderInfoDto2.setRefundAmount(byId2.getRefundAmount()); return R.ok(payOrderInfoDto2); //todo luo 停车场订单 // case 4: // TParkingRecord byId3 = parkingLotClient.getRecordById(orderId).getData(); // PayOrderInfoDto payOrderInfoDto3 = new PayOrderInfoDto(); // payOrderInfoDto3.setOrderId(byId3.getId().toString()); // payOrderInfoDto3.setCode(byId3.getCode()); // payOrderInfoDto3.setTradeNo(byId3); // payOrderInfoDto3.setPayType(0); // payOrderInfoDto3.setPayAmount(new BigDecimal("0")); // payOrderInfoDto3.setPayTime(LocalDateTime.now()); // payOrderInfoDto3.setRefundAmount(new BigDecimal("0")); } return R.ok(); } @ResponseBody @GetMapping(value = "/pay/order/refund/detail") @ApiOperation(value = "退款信息", tags = {"管理后台-支付订单-订单信息"}) public R refundDetail(Long orderId,Integer type){ switch (type) { case 1: List<TChargingOrderRefund> byId = chargingOrderRefundService.lambdaQuery().eq(TChargingOrderRefund::getChargingOrderId, orderId).orderByDesc(TChargingOrderRefund::getRefundTime).list(); return R.ok(byId); case 2: List<TShoppingOrderRefund> list = shoppingOrderRefundService.lambdaQuery().eq(TShoppingOrderRefund::getShoppingOrderId, orderId).orderByDesc(TShoppingOrderRefund::getRefundTime).list(); return R.ok(list); case 3: List<TVipOrderRefund> list1 = vipOrderRefundService.lambdaQuery().eq(TVipOrderRefund::getVipOrderId, orderId).orderByDesc(TVipOrderRefund::getRefundTime).list(); return R.ok(list1); } return R.ok(); } @ResponseBody @GetMapping(value = "/pay/order/charging") @ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-订单信息"}) public R refundDetail(Long orderId){ PayOrderChargingInfo payOrderChargingInfo = new PayOrderChargingInfo(); TChargingOrder byId = chargingOrderService.getById(orderId); List<Site> data = siteClient.getSiteByIds(Collections.singletonList(byId.getSiteId())).getData(); payOrderChargingInfo.setSiteName(data.get(0).getName()); TChargingPile data1 = chargingPileClient.getChargingPileById(byId.getChargingPileId()).getData(); payOrderChargingInfo.setChargingName(data1.getName()); TChargingGun data2 = chargingGunClient.getChargingGunById(byId.getChargingGunId()).getData(); payOrderChargingInfo.setGunName(data2.getName()); List<TAppUserCar> data3 = appUserCarClient.getCarByIds(Collections.singletonList(byId.getAppUserCarId())).getData(); payOrderChargingInfo.setCarNum(data3.get(0).getLicensePlate()); return R.ok(); } @ResponseBody @GetMapping(value = "/pay/order/charging/details") @ApiOperation(value = "充电明细", tags = {"管理后台-支付订单-订单信息"}) public R<List<TChargingOrderAccountingStrategy>> chargingDetail(Long orderId){ List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.lambdaQuery().eq(TChargingOrderAccountingStrategy::getChargingOrderId, orderId).orderByDesc(TChargingOrderAccountingStrategy::getStartTime).list(); return R.ok(list); } @ResponseBody @PostMapping(value = "/pay/order/refund/list") @ApiOperation(value = "充电信息", tags = {"管理后台-支付订单-退款订单"}) public R<PageInfo<TChargingOrderRefund>> refundList(@RequestBody ChargingRefundDto chargingRefundDto){ return chargingOrderService.getRefundList(chargingRefundDto); } @ResponseBody @PostMapping(value = "/chargingOrder") @ApiOperation(value = "充电桩订单列表", tags = {"管理后台-订单管理"}) ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TOrderAppealController.java
@@ -1,6 +1,10 @@ package com.ruoyi.order.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; @@ -8,11 +12,15 @@ import com.ruoyi.order.api.model.TOrderAppeal; import com.ruoyi.order.api.query.TOrderAppealQuery; import com.ruoyi.order.api.vo.TOrderAppealVO; import com.ruoyi.order.dto.ManageFeedbackDto; import com.ruoyi.order.dto.ManageOrderAppealQuery; import com.ruoyi.order.service.TOrderAppealService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * <p> @@ -28,11 +36,35 @@ private final TOrderAppealService orderAppealService; private final TokenService tokenService; @Resource private AppUserClient appUserClient; @Autowired public TOrderAppealController(TOrderAppealService orderAppealService, TokenService tokenService) { this.orderAppealService = orderAppealService; this.tokenService = tokenService; } @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "列表") @PostMapping(value = "/manage/pageList") public R<Page<TOrderAppeal>> managePageList(@RequestBody ManageOrderAppealQuery manageOrderAppealQuery) { Page<TOrderAppeal> page = orderAppealService.lambdaQuery().eq(manageOrderAppealQuery.getStatus() != null, TOrderAppeal::getStatus, manageOrderAppealQuery.getStatus()) .like(manageOrderAppealQuery.getCode() != null, TOrderAppeal::getCode, manageOrderAppealQuery.getCode()) .like(manageOrderAppealQuery.getPhone() != null, TOrderAppeal::getPhone, manageOrderAppealQuery.getPhone()) .eq(manageOrderAppealQuery.getOrderType() != null, TOrderAppeal::getOrderType, manageOrderAppealQuery.getOrderType()) .in(TOrderAppeal::getOrderType, 1, 2).page(Page.of(manageOrderAppealQuery.getPageCurr(), manageOrderAppealQuery.getPageSize())); return R.ok(page); } @ApiOperation(tags = {"后台-订单管理-订单申诉"},value = "后台-订单管理-订单申诉") @PostMapping(value = "/manage/feedback") public R manageFeedback(@RequestBody ManageFeedbackDto manageFeedbackDto) { TOrderAppeal byId = orderAppealService.getById(manageFeedbackDto.getId()); byId.setFeedback(manageFeedbackDto.getFeedback()); orderAppealService.updateById(byId); return R.ok(); } /** @@ -63,8 +95,10 @@ @ApiOperation(value = "申诉订单", tags = {"小程序-充电记录(个人中心)"}) public AjaxResult addOrderAppeal(@RequestBody TOrderAppeal orderAppeal){ Long appUserId = tokenService.getLoginUserApplet().getUserId(); TAppUser data = appUserClient.getUserById(appUserId).getData(); orderAppeal.setAppUserId(appUserId); orderAppeal.setStatus(1); orderAppeal.setPhone(data.getPhone()); orderAppealService.save(orderAppeal); return AjaxResult.success(); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -195,7 +195,7 @@ @GetMapping("/getMyShoppingOrderInfo/{id}") @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单"}) @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单","管理后台-支付订单-订单信息"}) public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id){ MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id); return AjaxResult.success(info); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ChargingRefundDto.java
New file @@ -0,0 +1,13 @@ package com.ruoyi.order.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ChargingRefundDto extends BasePage { @ApiModelProperty("订单编号") private String code; @ApiModelProperty("平台退款编号") private String refundCode; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ManageFeedbackDto.java
New file @@ -0,0 +1,12 @@ package com.ruoyi.order.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ManageFeedbackDto { private Long id; private String feedback; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/ManageOrderAppealQuery.java
New file @@ -0,0 +1,22 @@ package com.ruoyi.order.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class ManageOrderAppealQuery extends BasePage { @ApiModelProperty(value = "申诉状态 (1=待处理,2=已处理)") @TableField("status") private Integer status; @ApiModelProperty(value = "订单编号") @TableField("code") private String code; @ApiModelProperty(value = "手机号") private String phone; @ApiModelProperty(value = "订单类型(1=充电订单,2=购物订单") private Integer orderType; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderChargingInfo.java
New file @@ -0,0 +1,37 @@ package com.ruoyi.order.dto; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class PayOrderChargingInfo { @ApiModelProperty(value = "站点名称", required = true) private String siteName; @ApiModelProperty(value = "充电设备名称", required = true) private String chargingName; @ApiModelProperty(value = "接口名称", required = true) private String gunName; @ApiModelProperty(value = "充电开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("start_time") private LocalDateTime startTime; @ApiModelProperty(value = "充电结束时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @TableField("end_time") private LocalDateTime endTime; @ApiModelProperty(value = "订单金额(总金额)") @TableField("order_amount") private BigDecimal orderAmount; @ApiModelProperty(value = "车牌") private String carNum; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderDto.java
@@ -3,6 +3,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class PayOrderDto { private String id; @@ -23,7 +25,11 @@ private Double orderAmount; @ApiModelProperty("支付金额") private Double paymentAmount; private java.sql.Timestamp createTime; private java.sql.Timestamp endTime; @ApiModelProperty("下单时间") private LocalDateTime createTime; @ApiModelProperty("订单完成时间") private LocalDateTime endTime; @ApiModelProperty("支付时间") private LocalDateTime payTime; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderInfoDto.java
New file @@ -0,0 +1,27 @@ package com.ruoyi.order.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class PayOrderInfoDto { @ApiModelProperty("订单id") private String orderId; @ApiModelProperty("订单编号") private String code; @ApiModelProperty("支付流水号") private String tradeNo; @ApiModelProperty("1微信2支付宝") private Integer payType; @ApiModelProperty("支付金额") private BigDecimal payAmount; @ApiModelProperty("支付时间") private LocalDateTime payTime; @ApiModelProperty("退款金额") private BigDecimal refundAmount; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/dto/PayOrderQueryDto.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.order.dto; import com.ruoyi.common.core.web.page.BasePage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data public class PayOrderQueryDto extends BasePage { @ApiModelProperty("订单编号") private String code; @ApiModelProperty("1充电订单2购物订单3vip订单4停车订单") private Integer type; @ApiModelProperty("手机号") private String phone; @ApiModelProperty("1有退款2无退款") private Integer isRefund; @ApiModelProperty("下单时间1") private LocalDateTime createTime1; @ApiModelProperty("下单时间2") private LocalDateTime createTime2; } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderMapper.java
@@ -3,9 +3,13 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.dto.ChargingRefundDto; import com.ruoyi.order.dto.GetNoInvoicedOrder; import com.ruoyi.order.dto.PayOrderDto; import com.ruoyi.order.dto.PayOrderQueryDto; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -48,4 +52,7 @@ List<ChargingOrderVO> chargingOrder(@Param("pageInfo") PageInfo<ChargingOrderVO> pageInfo, @Param("req") ChargingOrderQuery dto, @Param("startTime1")String startTime1, @Param("startTime2")String startTime2,@Param("endTime1") String endTime1,@Param("endTime2") String endTime11); List<PayOrderDto> payOrderQuery(@Param("pageInfo")PageInfo<PayOrderDto> pageInfo,@Param("data") PayOrderQueryDto payOrderQueryDto); List<TChargingOrderRefund> getRefundList(@Param("pageInfo")PageInfo<TChargingOrderRefund> pageInfo,@Param("data") ChargingRefundDto chargingRefundDto); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TChargingOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TChargingOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TChargingOrderRefundMapper extends BaseMapper<TChargingOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TShoppingOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TShoppingOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TShoppingOrderRefundMapper extends BaseMapper<TShoppingOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/TVipOrderRefundMapper.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.order.api.model.TVipOrderRefund; /** * <p> * Mapper 接口 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TVipOrderRefundMapper extends BaseMapper<TVipOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderRefundService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TChargingOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TChargingOrderRefundService extends IService<TChargingOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -1,10 +1,12 @@ package com.ruoyi.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; @@ -84,4 +86,8 @@ AjaxResult stopCharging(String id); TCharingOrderVO chargingOrder(ChargingOrderQuery dto); R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto); R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TShoppingOrderRefundService.java
New file @@ -0,0 +1,15 @@ package com.ruoyi.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TShoppingOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TShoppingOrderRefundService extends IService<TShoppingOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TVipOrderRefundService.java
New file @@ -0,0 +1,16 @@ package com.ruoyi.order.service; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.order.api.model.TVipOrderRefund; /** * <p> * 服务类 * </p> * * @author xiaochen * @since 2024-08-26 */ public interface TVipOrderRefundService extends IService<TVipOrderRefund> { } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.chargingPile.api.model.Site; import com.ruoyi.chargingPile.api.model.TChargingGun; import com.ruoyi.chargingPile.api.model.TChargingPile; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.BasePage; import com.ruoyi.common.core.web.page.PageInfo; @@ -23,6 +24,7 @@ import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TChargingOrderAccountingStrategy; import com.ruoyi.order.api.model.TChargingOrderRefund; import com.ruoyi.order.api.query.ChargingOrderQuery; import com.ruoyi.order.api.vo.ChargingOrderVO; import com.ruoyi.order.api.vo.TCharingOrderVO; @@ -518,4 +520,21 @@ tCharingOrderVO.setList(pageInfo); return tCharingOrderVO; } @Override public R<PageInfo<PayOrderDto>> payOrderQuery(PayOrderQueryDto payOrderQueryDto) { PageInfo<PayOrderDto> pageInfo = new PageInfo<>(payOrderQueryDto.getPageCurr(),payOrderQueryDto.getPageSize()); List<PayOrderDto> list = this.baseMapper.payOrderQuery(pageInfo,payOrderQueryDto); pageInfo.setRecords(list); return R.ok(pageInfo); } @Override public R<PageInfo<TChargingOrderRefund>> getRefundList(ChargingRefundDto chargingRefundDto) { PageInfo<TChargingOrderRefund> pageInfo = new PageInfo<>(chargingRefundDto.getPageCurr(),chargingRefundDto.getPageSize()); List<TChargingOrderRefund> list = this.baseMapper.getRefundList(pageInfo,chargingRefundDto); pageInfo.setRecords(list); return R.ok(pageInfo); } } ruoyi-service/ruoyi-order/src/main/resources/mapper/order/TChargingOrderMapper.xml
@@ -102,4 +102,135 @@ and (t1.end_time between #{endTime1} and #{endTime2} </if> </select> <select id="payOrderQuery" resultType="com.ruoyi.order.dto.PayOrderDto"> SELECT * FROM (SELECT id, `code`, 1 as type, title, phone, `status`, order_amount, payment_amount , create_time, end_time, pay_time FROM charging_pile_order.t_charging_order UNION ALL SELECT id, `code`, 2 as type, title, phone, `status`, order_amount, payment_amount , create_time, receiving_time as end_time, pay_time FROM charging_pile_order.t_shopping_order UNION ALL SELECT id, `code`, 3 as type, title, phone, payment_status AS `status`, order_amount, payment_amount , create_time, create_time as end_time, pay_time FROM charging_pile_order.t_vip_order UNION ALL SELECT id, `code`, 4 as type, title, phone, `status`, order_amount , order_amount as payment_amount, create_time, out_parking_time as end_time, out_parking_time as pay_time FROM charging_pile_service.t_parking_record ) o <where> <if test="data.code != null and data.code != ''"> AND o.code LIKE CONCAT('%',#{data.code},'%') </if> <if test="data.phone != null and data.phone != ''"> AND o.phone LIKE CONCAT('%',#{data.phone},'%') </if> <if test="data.type != null"> AND o.type = #{data.type} </if> <if test="data.status != null"> AND o.status = #{data.status} </if> <if test="data.createTime1 != null"> AND o.create_time >= #{data.createTime1} </if> <if test="data.createTime2 != null"> AND o.create_time <= #{data.createTime2} </if> </where> </select> <select id="getRefundList" resultType="com.ruoyi.order.api.model.TChargingOrderRefund"> select * from (SELECT id, `code`, refund_code, refund_title, refund_reason, refund_amount, refund_total_amount, refund_time, pay_type, pay_amount, refund_remark FROM t_charging_order_refund UNION ALL SELECT id, `code`, refund_code, refund_title, refund_reason, refund_amount, refund_total_amount, refund_time, pay_type, pay_amount, refund_remark FROM t_shopping_order_refund UNION ALL SELECT id, `code`, refund_code, refund_title, refund_reason, refund_amount, refund_total_amount, refund_time, pay_type, pay_amount, refund_remark FROM t_vip_order_refund) o <where> <if test="data.code != null and data.code != ''"> AND o.code LIKE CONCAT('%',#{data.code},'%') </if> <if test="data.refundCode != null and data.refundCode != ''"> AND o.refund_code LIKE CONCAT('%',#{data.refundCode},'%') </if> </where> </select> </mapper>