diff --git a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java index 9795ca1a..42f87ad2 100644 --- a/src/main/java/com/ai/da/controller/ConvenientInquiryController.java +++ b/src/main/java/com/ai/da/controller/ConvenientInquiryController.java @@ -2,20 +2,21 @@ package com.ai.da.controller; import com.ai.da.common.context.UserContext; +import com.ai.da.common.response.PageBaseResponse; import com.ai.da.common.response.Response; import com.ai.da.mapper.primary.DesignMapper; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.TrialOrder; import com.ai.da.model.dto.AccountAddDTO; +import com.ai.da.model.dto.QueryPaymentInfoDTO; import com.ai.da.model.dto.UserDesignStatisticDTO; +import com.ai.da.model.vo.PaymentInfoVO; import com.ai.da.model.vo.QuestionnaireFeedbackVO; import com.ai.da.model.vo.QuestionnaireVO; import com.ai.da.model.vo.QueryUserConditionsVO; import com.ai.da.service.AccountService; import com.ai.da.service.ConvenientInquiryService; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.itextpdf.text.pdf.PRIndirectReference; import io.netty.util.internal.StringUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -196,5 +197,9 @@ public class ConvenientInquiryController { return Response.success(convenientInquiryService.getAllUserIdList()); } - + @ApiOperation("获取所有交易信息") + @PostMapping("/queryTransaction") + public Response> queryTransactionRecords(@Valid @RequestBody QueryPaymentInfoDTO queryPaymentInfoDTO){ + return Response.success(convenientInquiryService.queryTransactionRecords(queryPaymentInfoDTO)); + } } diff --git a/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java b/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java index 797c5baf..b0a82f21 100644 --- a/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java +++ b/src/main/java/com/ai/da/mapper/primary/PaymentInfoMapper.java @@ -2,6 +2,7 @@ package com.ai.da.mapper.primary; import com.ai.da.mapper.primary.entity.PaymentInfo; import com.ai.da.model.vo.OrderListVO; +import com.ai.da.model.vo.PaymentInfoVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; @@ -11,4 +12,13 @@ public interface PaymentInfoMapper extends BaseMapper { List selectPageOrderList(Long accountId, String startTime, String endTime, int offset, int pageSize, Long id); int queryOrderListTotalCount(Long accountId, String startTime, String endTime, Long id); + + List queryPaymentInfo(String paymentType,String payerTotal, String type, String status, + String country, String city, String startTime, String endTime, + int limit, int offset + ); + + Long queryPaymentInfoCount(String paymentType,String payerTotal, String type, String status, + String country, String city, String startTime, String endTime + ); } diff --git a/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java b/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java index 0c273d87..12470d20 100644 --- a/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java +++ b/src/main/java/com/ai/da/mapper/primary/entity/PaymentInfo.java @@ -15,13 +15,21 @@ public class PaymentInfo extends BaseEntity{ private String paymentType;//支付类型 + /** + * PayPal 订单状态:CREATED/SAVED/APPROVED/VOIDED/COMPLETED/PAYER_ACTION_REQUIRED + * Stripe 订单状态: 原 session 状态:open/completed/expired ; 现 invoice 状态:draft/open/paid/uncollectible/void + * Alipay-HK 订单状态:wait, paid, expired, liquidated + * paid and liquidated means the refund request has been executed. + * expired means the request has been rejected. + * wait means the request is still under processing. + */ private String tradeState;//交易状态 private Float payerTotal;//支付金额(元) private String content;//通知参数 - // 支付类型 new || renewal + // 支付类型 new || renewal || credits private String type; // 当前支付是否已邮件通知 0 || 1 diff --git a/src/main/java/com/ai/da/model/dto/QueryPaymentInfoDTO.java b/src/main/java/com/ai/da/model/dto/QueryPaymentInfoDTO.java new file mode 100644 index 00000000..28f7ac06 --- /dev/null +++ b/src/main/java/com/ai/da/model/dto/QueryPaymentInfoDTO.java @@ -0,0 +1,27 @@ +package com.ai.da.model.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@Data +@ApiModel("交易记录详情") +public class QueryPaymentInfoDTO extends QueryPageByTimeDTO { + @ApiModelProperty("选择的支付平台 PayPal || Stripe || Alipay-HK") + private String platform; + @ApiModelProperty("支付的金额 单位:HKD") + private String payerTotal; + @ApiModelProperty("商品种类 new || renewal || credits") + private String type; + @ApiModelProperty("交易状态 Success || Fail || Pending") + private String status; + @ApiModelProperty("付款人所在国家") + private String country; + @ApiModelProperty("付款人所在城市") + private String city; + +} diff --git a/src/main/java/com/ai/da/model/vo/PaymentInfoVO.java b/src/main/java/com/ai/da/model/vo/PaymentInfoVO.java new file mode 100644 index 00000000..34ddbf79 --- /dev/null +++ b/src/main/java/com/ai/da/model/vo/PaymentInfoVO.java @@ -0,0 +1,32 @@ +package com.ai.da.model.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@Data +@ApiModel("交易记录详情") +public class PaymentInfoVO { + private Long id; + @ApiModelProperty("选择的支付平台 PayPal || Stripe || Alipay-HK") + private String platform; + @ApiModelProperty("支付的金额 单位:HKD") + private String payerTotal; + @ApiModelProperty("商品种类 new || renewal || credits") + private String type; + @ApiModelProperty("交易状态 Success || Fail || Pending") + private String status; + @ApiModelProperty("付款人所在国家") + private String country; + @ApiModelProperty("付款人所在城市") + private String city; + @ApiModelProperty("使用Stripe具体的支付方式") + private String paymentMethod; + @ApiModelProperty("信用卡支付的卡号后四位") + private String last4; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") + private String createTime; +} diff --git a/src/main/java/com/ai/da/service/ConvenientInquiryService.java b/src/main/java/com/ai/da/service/ConvenientInquiryService.java index fa4210f4..3e71d645 100644 --- a/src/main/java/com/ai/da/service/ConvenientInquiryService.java +++ b/src/main/java/com/ai/da/service/ConvenientInquiryService.java @@ -1,9 +1,12 @@ package com.ai.da.service; +import com.ai.da.common.response.PageBaseResponse; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.Questionnaire; import com.ai.da.mapper.primary.entity.TrialOrder; import com.ai.da.model.dto.AccountAddDTO; +import com.ai.da.model.dto.QueryPaymentInfoDTO; +import com.ai.da.model.vo.PaymentInfoVO; import com.ai.da.model.vo.QuestionnaireFeedbackVO; import com.ai.da.model.vo.QuestionnaireVO; import com.ai.da.model.vo.QueryUserConditionsVO; @@ -43,4 +46,6 @@ public interface ConvenientInquiryService extends IService { IPage getUserInfo(QueryUserConditionsVO queryUserConditionsVO); List> getAllUserIdList(); + + PageBaseResponse queryTransactionRecords(QueryPaymentInfoDTO queryPaymentInfoDTO); } diff --git a/src/main/java/com/ai/da/service/PaymentInfoService.java b/src/main/java/com/ai/da/service/PaymentInfoService.java index 761c0d8b..03db46a4 100644 --- a/src/main/java/com/ai/da/service/PaymentInfoService.java +++ b/src/main/java/com/ai/da/service/PaymentInfoService.java @@ -17,11 +17,11 @@ public interface PaymentInfoService extends IService { void createPaymentInfo(String plainText); - void createPaymentInfoForAliPay(Map params); + void createPaymentInfoForAliPay(Map params, String type); - void createPaymentInfoForPayPal(Order order); + void createPaymentInfoForPayPal(Order order, String type); - void createPaymentInfoForAliPayHK(AlipayHKCallbackDTO alipayHKCallbackDTO); + void createPaymentInfoForAliPayHK(AlipayHKCallbackDTO alipayHKCallbackDTO, String type); PaymentInfo createOrUpdatePaymentInfoForStripe(Invoice invoice); diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 0577e514..3679acfa 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -1256,7 +1256,7 @@ public class AccountServiceImpl extends ServiceImpl impl private static final String QUERY_CUSTOMER_EMAIL = "SELECT username, email, country FROM pmr_wc_customer_lookup " + "WHERE customer_id = ? "; private static final String UPDATE_ORDER_STATUS = "UPDATE pmr_wc_order_stats " + - "SET status = 'wc-complete' , date_completed = ? " + + "SET status = 'wc-completed' , date_completed = ? " + "WHERE order_id = ?"; private static final DataSource dataSource; diff --git a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java index 2d14a37b..2d3e6ed4 100644 --- a/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AliPayServiceImpl.java @@ -211,7 +211,7 @@ public class AliPayServiceImpl implements AliPayService { //更新订单状态 orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //记录支付日志 - paymentInfoService.createPaymentInfoForAliPay(params); + paymentInfoService.createPaymentInfoForAliPay(params,"credits"); float quantity = Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()); // 更新积分 creditsService.buyCredits(orderByOrderNo.getAccountId(), quantity); @@ -315,7 +315,7 @@ public class AliPayServiceImpl implements AliPayService { //如果订单已支付,则更新商户端订单状态 orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //并记录支付日志 - paymentInfoService.createPaymentInfoForAliPay(alipayTradeQueryResponse); + paymentInfoService.createPaymentInfoForAliPay(alipayTradeQueryResponse, "credits"); float quantity = orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()); // 更新积分 creditsService.buyCredits(orderByOrderNo.getAccountId(), quantity); diff --git a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java index a8230e8c..6b74b072 100644 --- a/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AlipayHKServiceImpl.java @@ -245,7 +245,7 @@ public class AlipayHKServiceImpl implements AlipayHKService { orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); log.info("Alipay-HK 订单:{} 状态更新成功",orderNo); //记录支付日志 - paymentInfoService.createPaymentInfoForAliPayHK(alipayHKCallbackDTO); + paymentInfoService.createPaymentInfoForAliPayHK(alipayHKCallbackDTO, "credits"); log.info("Alipay-HK 订单:{} 支付信息状态更新成功",orderNo); float quantity = Float.parseFloat(totalAmount) / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()); // 更新积分 diff --git a/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java b/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java index 69167b80..0bd9a40c 100644 --- a/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/ConvenientInquiryServiceImpl.java @@ -4,19 +4,16 @@ import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.constant.CommonConstant; import com.ai.da.common.context.UserContext; import com.ai.da.common.enums.CreditsEventsEnum; +import com.ai.da.common.response.PageBaseResponse; import com.ai.da.common.utils.CopyUtil; -import com.ai.da.mapper.primary.AccountMapper; -import com.ai.da.mapper.primary.QuestionnaireMapper; -import com.ai.da.mapper.primary.ToProductImageResultMapper; -import com.ai.da.mapper.primary.TrialOrderMapper; +import com.ai.da.mapper.primary.*; import com.ai.da.mapper.primary.entity.Account; import com.ai.da.mapper.primary.entity.Questionnaire; import com.ai.da.mapper.primary.entity.TrialOrder; import com.ai.da.model.dto.AccountAddDTO; +import com.ai.da.model.dto.QueryPaymentInfoDTO; import com.ai.da.model.enums.Language; -import com.ai.da.model.vo.QuestionnaireFeedbackVO; -import com.ai.da.model.vo.QuestionnaireVO; -import com.ai.da.model.vo.QueryUserConditionsVO; +import com.ai.da.model.vo.*; import com.ai.da.service.*; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -43,9 +40,22 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl getTrial(QueryUserConditionsVO queryUserConditionsVO) { log.info("getTrial parameter : {},page:{}, size:{}", queryUserConditionsVO, queryUserConditionsVO.getPage(), queryUserConditionsVO.getSize()); @@ -323,17 +333,6 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl> getActiveUserFunc(String startTime, String endTime, List ids) { log.info("getActiveUserFunc ==> startTime:{}, endTime:{}, accountList:{}", startTime, endTime, ids); @@ -388,9 +387,6 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl conversionRate(String startTime, String endTime) { @@ -457,7 +453,6 @@ public class ConvenientInquiryServiceImpl extends ServiceImpl (Long)map.get("id")).collect(Collectors.toList()); } + /** + * 查询交易记录 + * 允许按日期,支付方式,支付金额,商品种类,交易状态,付款人的国家或城市查询,需要分页查询 + */ + public PageBaseResponse queryTransactionRecords(QueryPaymentInfoDTO queryPaymentInfoDTO) { + Integer size = queryPaymentInfoDTO.getSize(); + int offset = (queryPaymentInfoDTO.getPage() - 1) * size; + List paymentInfoVOS = paymentInfoMapper.queryPaymentInfo(queryPaymentInfoDTO.getPlatform(), queryPaymentInfoDTO.getPayerTotal(), + queryPaymentInfoDTO.getType(), queryPaymentInfoDTO.getStatus(), + queryPaymentInfoDTO.getCountry(), queryPaymentInfoDTO.getCity(), + queryPaymentInfoDTO.getStartTime(), queryPaymentInfoDTO.getEndTime(), + size, offset); + // 查询数据总量 + Long total = paymentInfoMapper.queryPaymentInfoCount(queryPaymentInfoDTO.getPlatform(), queryPaymentInfoDTO.getPayerTotal(), + queryPaymentInfoDTO.getType(), queryPaymentInfoDTO.getStatus(), + queryPaymentInfoDTO.getCountry(), queryPaymentInfoDTO.getCity(), + queryPaymentInfoDTO.getStartTime(), queryPaymentInfoDTO.getEndTime()); + + // 总页数 + double totalPage = Math.ceil((double) total / size); + // 组装返回参数 + PageBaseResponse response = new PageBaseResponse<>(); + response.setContent(paymentInfoVOS); + response.setPage(queryPaymentInfoDTO.getPage()); + response.setSize(size); + response.setTotal(total); + response.setPages((long) totalPage); + return response; + } + } diff --git a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java index 22d4cd47..98595177 100644 --- a/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PayPalCheckoutServiceImpl.java @@ -586,7 +586,7 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService { //更新订单状态 orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //记录支付日志 - paymentInfoService.createPaymentInfoForPayPal(capturedOrder); + paymentInfoService.createPaymentInfoForPayPal(capturedOrder, "credits"); float quantity = orderInfo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()); // 更新积分 creditsService.buyCredits(orderInfo.getAccountId(), quantity); @@ -629,7 +629,7 @@ public class PayPalCheckoutServiceImpl implements PayPalCheckoutService { //如果订单已支付,则更新商户端订单状态 orderInfoService.updateStatusByOrderNo(orderNo, OrderStatusEnum.SUCCESS); //并记录支付日志 - paymentInfoService.createPaymentInfoForPayPal(result); + paymentInfoService.createPaymentInfoForPayPal(result, "credits"); float quantity = orderByOrderNo.getTotalFee() / Float.parseFloat(CreditsEventsEnum.PRICE.getValue()); // 更新积分 // creditsService.buyCredits(orderByOrderNo.getAccountId(),orderByOrderNo.getTotalFee() / Integer.parseInt(CreditsEventsEnum.PRICE.getValue())); diff --git a/src/main/java/com/ai/da/service/impl/PaymentInfoServiceImpl.java b/src/main/java/com/ai/da/service/impl/PaymentInfoServiceImpl.java index 2d0f3e5c..f5db3e24 100644 --- a/src/main/java/com/ai/da/service/impl/PaymentInfoServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/PaymentInfoServiceImpl.java @@ -89,7 +89,7 @@ public class PaymentInfoServiceImpl extends ServiceImpl params) { + public void createPaymentInfoForAliPay(Map params, String type) { log.info("记录支付日志"); @@ -111,6 +111,7 @@ public class PaymentInfoServiceImpl extends ServiceImpl + + + +