feat:第三方支付查询订单详情

This commit is contained in:
dzc committed 2025-05-08 16:16:37 +08:00
1 parent e12828656f
commit 2727c3627c
19 files changed
+220 -50

No files matched your search

@@ -48,4 +48,9 @@ public class HardOrderDto extends HardOrderEntity implements BaseIsIncludeTreeIn
*/
private Boolean isFindCarList = false;
/**
* 退款相关
*/
private String afterSaleNo;
}
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.hard.api.feign;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.feign.annotation.NoToken;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDetailDto;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDto;
import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto;
import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto;
@@ -41,4 +42,11 @@ public interface RemoteHardThirdPayService {
@NoToken
@PostMapping("/hard-third-pay/water")
PayBaseVo<List<PayWaterVo>> waterList(@RequestBody WaterDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType);
/**
* 订单详情
*/
@NoToken
@PostMapping("/hard-third-pay/detail")
PayBaseVo<PayWaterVo> orderDetail(@RequestBody PayDetailDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType);
}
@@ -257,7 +257,7 @@ public class HardOrderController {
dto.setMchIds(mchDtoIds);
}
}
List<HardOrderVo> list = hardwareOrderService.scopeList(dto);
List<HardOrderVo> list = hardwareOrderService.scopeList(dto, DataScope.of());
List<HardOrderExcelVo> excelList = BeanUtils.toBean(list, HardOrderExcelVo.class);
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(ResourceUtil.getStream("file/订单交易汇总.xlsx")).build()) {
WriteSheet writeSheet = EasyExcel.writerSheet().build();
@@ -4,6 +4,7 @@ import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.hard.service.HardThirdPayService;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDetailDto;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDto;
import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto;
import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto;
@@ -54,4 +55,12 @@ public class HardThirdPayController {
return hardThirdPayService.waterList(dto, soureType);
}
@Inner
@PostMapping("/detail")
@SysLog("订单详情")
@Operation(summary = "订单详情")
public PayBaseVo<PayWaterVo> orderDetail(@RequestBody PayDetailDto dto, @RequestParam ThirdPaySoureBizTypeEnum soureType) {
return hardThirdPayService.orderDetail(dto, soureType);
}
}
@@ -7,6 +7,7 @@ import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.hard.api.dto.order.HardAfterSaleLogDto;
import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity;
import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleLogVo;
import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
@@ -110,6 +110,8 @@ public interface HardOrderMapper extends PjcloudBaseMapper<HardOrderEntity> {
Page<HardOrderVo> scopePageList(Page page, @Param("dto") HardOrderDto dto, DataScope dataScope);
List<HardOrderVo> scopeList(@Param("dto") HardOrderDto dto, DataScope dataScope);
List<HardOrderSbVo> listSb(@Param("dto") HardOrderDto dto, DataScope dataScope);
List<HardOrderCsVo> listCs(@Param("dto") HardOrderDto dto, DataScope dataScope);
@@ -29,7 +29,7 @@ public interface HardOrderService extends IService<HardOrderEntity> {
Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto, DataScope dataScope);
List<HardOrderVo> scopeList(HardOrderDto dto);
List<HardOrderVo> scopeList(HardOrderDto dto, DataScope dataScope);
HardOrderVo join(Long id);
@@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDetailDto;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDto;
import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto;
import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto;
@@ -28,4 +29,9 @@ public interface HardThirdPayService {
* 获取流水
*/
PayBaseVo<List<PayWaterVo>> waterList(WaterDto dto, ThirdPaySoureBizTypeEnum soureType);
/**
* 订单详情
*/
PayBaseVo<PayWaterVo> orderDetail(PayDetailDto dto, ThirdPaySoureBizTypeEnum soureType);
}
@@ -124,11 +124,10 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
}
@Override
public List<HardOrderVo> scopeList(HardOrderDto dto) {
List<HardOrderEntity> list = baseMapper.list(dto);
List<HardOrderVo> resultList = BeanUtils.toBean(list, HardOrderVo.class);
disposeList(resultList, dto);
return resultList;
public List<HardOrderVo> scopeList(HardOrderDto dto, DataScope dataScope) {
List<HardOrderVo> list = baseMapper.scopeList(dto, dataScope);
disposeList(list, dto);
return list;
}
/**
@@ -142,40 +141,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
@Override
public Page<HardOrderVo> scopePageList(Page page, HardOrderDto dto, DataScope dataScope) {
Page<HardOrderVo> list = baseMapper.scopePageList(page, dto, dataScope);
if (ObjectUtil.isNotEmpty(list.getRecords())) {
// 用户
List<Long> userIds = list.getRecords().stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(userIds)) {
R<List<SysUser>> userList = userService.getInnerUserById(new ArrayList<>(userIds));
if (ObjectUtil.isNotEmpty(userList.getData())) {
DataUtil.convertUserList(list.getRecords(), CollectionUtils.convertMap(userList.getData(), SysUser::getUserId));
}
}
// 部门
List<Long> deptIds = list.getRecords().stream().map(HardOrderVo::getDeptId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(deptIds)) {
R<Map<Long, SysDept>> deptList = deptService.getDeptByDeptIds(deptIds);
if (ObjectUtil.isNotEmpty(deptList.getData())) {
DataUtil.convertDeptList(list.getRecords(), deptList.getData());
}
}
// 商户
List<Long> mchIds = list.getRecords().stream().map(HardOrderVo::getMerchantId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(mchIds)) {
R<List<MchManageVo>> mchList = remoteMchService.getByIds(mchIds);
if (ObjectUtil.isNotEmpty(mchList.getData())) {
WalletDataUtil.convertMchList(list.getRecords(), CollectionUtils.convertMap(mchList.getData(), MchManageVo::getId));
}
}
// 购物车
if (dto.getIsFindCarList()) {
for (HardOrderVo v : list.getRecords()) {
List<HardCarEntity> carList = hardCarService.getByParentCarId(v.getParentCarId());
List<HardCarVo> carVoList = BeanUtils.toBean(carList, HardCarVo.class);
v.setCarList(carVoList);
}
}
}
disposeList(list.getRecords(), dto);
return list;
}
@@ -859,7 +825,7 @@ public class HardOrderServiceImpl extends ServiceImpl<HardOrderMapper, HardOrder
// 用户
List<Long> userIds = list.stream().map(HardOrderVo::getUserId).filter(ObjectUtil::isNotEmpty).distinct().toList();
if (ObjectUtil.isNotEmpty(userIds)) {
R<List<SysUser>> userList = userService.getUserById(new ArrayList<>(userIds));
R<List<SysUser>> userList = userService.getInnerUserById(new ArrayList<>(userIds));
if (ObjectUtil.isNotEmpty(userList.getData())) {
DataUtil.convertUserList(list, CollectionUtils.convertMap(userList.getData(), SysUser::getUserId));
}
@@ -21,7 +21,7 @@ import com.bsd.pjcloud.hard.api.dto.order.HardOrderDto;
import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity;
import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity;
import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity;
import com.bsd.pjcloud.hard.api.vo.order.HardOrderPayTypeVo;
import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo;
import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo;
import com.bsd.pjcloud.hard.config.LbCallbackConfig;
import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleLogMapper;
@@ -31,6 +31,7 @@ import com.bsd.pjcloud.hard.service.HardOrderService;
import com.bsd.pjcloud.hard.service.HardThirdPayService;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPaySoureBizTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayVoStatusEnum;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDetailDto;
import com.bsd.pjcloud.thirdparty.dto.pay.PayDto;
import com.bsd.pjcloud.thirdparty.dto.pay.RefundDto;
import com.bsd.pjcloud.thirdparty.dto.pay.WaterDto;
@@ -66,6 +67,7 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
private final HardOrderService hardOrderService;
private final HardCarService hardCarService;
private final HardAfterSaleService hardAfterSaleService;
private final HardAfterSaleLogMapper hardAfterSaleLogMapper;
private final RemoteMchService mchService;
@@ -277,9 +279,13 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
item.setName(v.getUsername());
item.setSignPhone(v.getUserMobile());
item.setPlatformOrderId(String.valueOf(v.getId()));
item.setPlatformRefundId(String.valueOf(v.getAfterSaleId()));
if (ObjectUtil.isNotEmpty(v.getAfterSaleId())) {
item.setPlatformRefundId(String.valueOf(v.getAfterSaleId()));
}
item.setThirdOrderId(v.getOrderNo());
item.setThirdRefundId(String.valueOf(v.getAfterSaleNo()));
if (ObjectUtil.isNotEmpty(v.getAfterSaleNo())) {
item.setThirdRefundId(String.valueOf(v.getAfterSaleNo()));
}
item.setOrderStatus(v.getOrderStatus());
item.setOrderPrice(v.getPayPrice());
item.setRefundPrice(v.getRefundPrice());
@@ -298,6 +304,55 @@ public class HardThirdPayServiceImpl implements HardThirdPayService {
return baseVo;
}
/**
* 订单详情
*/
@Override
public PayBaseVo<PayWaterVo> orderDetail(PayDetailDto dto, ThirdPaySoureBizTypeEnum soureType) {
// 返回值
PayBaseVo baseVo = new PayBaseVo<PayWaterVo>();
String orderType = getOrderType(soureType);
HardOrderDto query = new HardOrderDto();
query.setOrderType(orderType);
query.setOrderNo(dto.getThirdOrderId());
query.setAfterSaleNo(dto.getThirdRefundId());
List<HardOrderVo> hardOrderVos = hardOrderService.scopeList(query, null);
if (ObjectUtil.isEmpty(hardOrderVos)) {
baseVo.set(ThirdPayVoStatusEnum.ORDER_EXIST);
return baseVo;
}
if (hardOrderVos.size() > 1) {
baseVo.set(ThirdPayVoStatusEnum.DETAIL_ITEM_NOT_ONE);
return baseVo;
}
HardOrderVo order = hardOrderVos.get(0);
// 组合返回参数
PayWaterVo item = new PayWaterVo();
item.setUserId(order.getUserId());
item.setName(order.getUsername());
item.setSignPhone(order.getUserMobile());
item.setPlatformOrderId(String.valueOf(order.getId()));
if (ObjectUtil.isNotEmpty(order.getAfterSaleId())) {
item.setPlatformRefundId(String.valueOf(order.getAfterSaleId()));
}
item.setThirdOrderId(order.getOrderNo());
if (ObjectUtil.isNotEmpty(order.getAfterSaleNo())) {
item.setThirdRefundId(String.valueOf(order.getAfterSaleNo()));
}
item.setOrderStatus(order.getOrderStatus());
item.setOrderPrice(order.getPayPrice());
item.setRefundPrice(order.getRefundPrice());
if (ObjectUtil.isNotEmpty(order.getPayTime())) {
item.setPayTime(LocalDateTimeUtil.format(order.getPayTime(), DatePattern.NORM_DATETIME_PATTERN));
}
if (ObjectUtil.isNotEmpty(order.getRefundTime())) {
item.setRefundTime(LocalDateTimeUtil.format(order.getRefundTime(), DatePattern.NORM_DATETIME_PATTERN));
}
baseVo.set(ThirdPayVoStatusEnum.SUCCESS);
baseVo.setData(item);
return baseVo;
}
/**
* 查询美好生活默认商户信息
*/
@@ -82,6 +82,9 @@
<sql id="whereA">
a.del_flag = '0'
<if test="dto.orderNo != null and dto.orderNo != '' ">
and a.order_no = #{dto.orderNo}
</if>
<if test="dto.orderStatus != null and dto.orderStatus != '' ">
and a.order_status = #{dto.orderStatus}
</if>
@@ -179,7 +182,7 @@
</if>
</sql>
<select id="scopePageList" resultType="com.bsd.pjcloud.hard.api.vo.order.HardOrderVo">
<sql id="pageList">
<include refid="selectA"/>
m.name as hardName,
m.type as hardType,
@@ -200,8 +203,19 @@
#{v}
</foreach>
</if>
<if test="dto.afterSaleNo != null and dto.afterSaleNo != ''">
and s.no = #{dto.afterSaleNo}
</if>
</where>
order by a.create_time desc, a.user_id desc
</sql>
<select id="scopePageList" resultType="com.bsd.pjcloud.hard.api.vo.order.HardOrderVo">
<include refid="pageList"/>
</select>
<select id="scopeList" resultType="com.bsd.pjcloud.hard.api.vo.order.HardOrderVo">
<include refid="pageList"/>
</select>
<select id="listSb" resultType="com.bsd.pjcloud.hard.api.vo.order.HardOrderSbVo">