diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/A.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/A.java new file mode 100644 index 0000000..2fdc829 --- /dev/null +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/A.java @@ -0,0 +1,14 @@ +package com.muyu.cloud.pay; + +/** + * @Author:作者姓名 + * @Package:com.muyu.cloud.pay + * @Project:cloud-pay + * @name:A + * @Date:2024/8/5 17:14 + */ +public interface A { + + + +} diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/B.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/B.java new file mode 100644 index 0000000..ec02d1c --- /dev/null +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/B.java @@ -0,0 +1,11 @@ +package com.muyu.cloud.pay; + +/** + * @Author:作者姓名 + * @Package:com.muyu.cloud.pay + * @Project:cloud-pay + * @name:B + * @Date:2024/8/5 17:14 + */ +public interface B extends A>>{ +} diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/OrderPayInfo.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/OrderPayInfo.java new file mode 100644 index 0000000..93f04c6 --- /dev/null +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/OrderPayInfo.java @@ -0,0 +1,83 @@ +package com.muyu.cloud.pay.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.muyu.cloud.pay.domain.resp.CustomerOrderPaySimpleResp; +import com.muyu.common.core.enums.SysPayType; +import com.muyu.common.core.web.domain.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.math.BigDecimal; + +@Data +@SuperBuilder +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@TableName(value = "order_pay_info", autoResultMap = true) +public class OrderPayInfo extends BaseEntity { + /** + * `id` INT AUTO_INCREMENT COMMENT '主键' , + * `` VARCHAR(16) COMMENT '客户名称' , + * `` VARCHAR(16) COMMENT '客户编号' , + * `` VARCHAR(32) COMMENT '客户单号' , + * `` VARCHAR(32) COMMENT '支付单号' , + * `` VARCHAR(32) COMMENT '渠道商类型' , + * `` VARCHAR(64) COMMENT '渠道商单号' , + * `` DECIMAL(24,6) COMMENT '支付金额' , + * `` VARCHAR(32) COMMENT '支付状态;0:新建,1:待支付,2:支付中,3:支付成功,4:支付失败,5:支付超时' , + * + */ + /** + * 主键 + */ + @TableId(value = "id",type = IdType.AUTO) + private Long id ; + /** + * 客户名称 + */ + private String appName ; + /** + * 客户编号 + */ + private String appCode ; + /** + * 客户单号 + */ + private String cusOrderNumber ; + /** + * 支付单号 + */ + private String payOrderNumber ; + /** + * 渠道商类型 + */ + private String channelType ; + /** + * 渠道商单号 + */ + private String channelOrderNumber ; + /** + * 支付金额 + */ + private BigDecimal price ; + /** + * 支付状态;0:新建,1:待支付,2:支付中,3:支付成功,4:支付失败,5:支付超时 + */ + private String status ; + + public CustomerOrderPaySimpleResp buildCustomerOrderPaySimpleResp() { + return CustomerOrderPaySimpleResp.builder() + .cusOrderNumber(this.cusOrderNumber) + .channelTypeName(SysPayType.getInfoByCode(this.channelType)) + .price(this.price) + .build() ; + } + +} diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerOrderPaySimpleResp.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerOrderPaySimpleResp.java new file mode 100644 index 0000000..a42d26c --- /dev/null +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerOrderPaySimpleResp.java @@ -0,0 +1,41 @@ +package com.muyu.cloud.pay.domain.resp; + +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @Author:作者姓名 + * @Package:com.muyu.cloud.pay.domain.resp + * @Project:cloud-pay + * @name:CustomerOrderPaySimpleResp + * @Date:2024/8/4 21:03 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name = "客户支付单",description = "客户支付单简略信息") +public class CustomerOrderPaySimpleResp { + /** + * 客户单号 + */ + @Schema(name = "客户单号",type = "String",defaultValue = "UIOH123467981JKF",description ="客户传入的支付单信息" ) + private String cusOrderNumber ; + + /** + * 支付金额 + */ + @Schema(name = "支付金额",type = "BigDecimal",defaultValue = "36.56",description ="客户传入的支付金额" ) + private BigDecimal price ; + /** + * 渠道商类型 + */ + @Schema(name = "渠道商类型",type = "String",defaultValue = "支付宝",description ="用户支付的时候选择的渠道商" ) + private String channelTypeName ; +} diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerResp.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerResp.java index eb560d7..2b6b7c5 100644 --- a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerResp.java +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/CustomerResp.java @@ -13,6 +13,9 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; +import java.util.List; +import java.util.function.Function; +import java.util.function.Supplier; @Data @Builder @@ -48,12 +51,18 @@ public class CustomerResp { @Schema(description = "创建时间",defaultValue = "2024-7-31 14:30:29",type = "Date") private Date createTime; + + /** + * 客户最近5条支付单 + */ + private List orderPaySimpleRespList; + /**\ * 数据库对象构建为返回结果对象 * @param orderPayCustomer 数据对象 * @return 视图对象 */ - public static CustomerResp customerBuild(OrderPayCustomer orderPayCustomer) { + public static CustomerResp customerBuild(OrderPayCustomer orderPayCustomer, Supplier> function) { return CustomerResp.builder() .id(orderPayCustomer.getId()) .appName(orderPayCustomer.getAppName()) @@ -61,6 +70,7 @@ public class CustomerResp { .status(orderPayCustomer.getStatus()) .createBy(orderPayCustomer.getCreateBy()) .createTime(orderPayCustomer.getCreateTime()) + .orderPaySimpleRespList(function.get()) .build(); } } diff --git a/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/OrderPayResp.java b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/OrderPayResp.java new file mode 100644 index 0000000..b155c62 --- /dev/null +++ b/cloud-pay-common/src/main/java/com/muyu/cloud/pay/domain/resp/OrderPayResp.java @@ -0,0 +1,20 @@ +package com.muyu.cloud.pay.domain.resp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:作者姓名 + * @Package:com.muyu.cloud.pay.domain.resp + * @Project:cloud-pay + * @name:OrderPayResp + * @Date:2024/8/4 21:04 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class OrderPayResp { +} diff --git a/cloud-pay-server/src/main/java/com/muyu/cloud/pay/mapper/OrderPayMapper.java b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/mapper/OrderPayMapper.java new file mode 100644 index 0000000..52f938a --- /dev/null +++ b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/mapper/OrderPayMapper.java @@ -0,0 +1,10 @@ +package com.muyu.cloud.pay.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.cloud.pay.domain.OrderPayInfo; +import org.apache.ibatis.annotations.Mapper; + + +@Mapper +public interface OrderPayMapper extends BaseMapper { +} diff --git a/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/OrderPayService.java b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/OrderPayService.java new file mode 100644 index 0000000..6be7a86 --- /dev/null +++ b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/OrderPayService.java @@ -0,0 +1,19 @@ +package com.muyu.cloud.pay.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.cloud.pay.domain.OrderPayInfo; + +import java.util.List; + + +public interface OrderPayService extends IService { + + /** + * 根据客户Code和分页限制,查询结果 + * @param appCode 客户code + * @param limit 分页限制 + * @return 支付订单记录 + */ + List selectOrderPayByAppCodeAndLimit(String appCode, int limit); + +} diff --git a/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayCustomerServiceImpl.java b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayCustomerServiceImpl.java index e34e846..c23f9c5 100644 --- a/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayCustomerServiceImpl.java +++ b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayCustomerServiceImpl.java @@ -4,37 +4,42 @@ package com.muyu.cloud.pay.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.cloud.pay.domain.OrderPayCustomer; +import com.muyu.cloud.pay.domain.OrderPayInfo; import com.muyu.cloud.pay.domain.req.CustomerListReq; import com.muyu.cloud.pay.domain.resp.CustomerResp; import com.muyu.cloud.pay.mapper.OrderPayCustomerMapper; import com.muyu.cloud.pay.service.OrderPayCustomerService; +import com.muyu.cloud.pay.service.OrderPayService; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import java.util.ArrayList; +import javax.annotation.Resource; import java.util.List; @Log4j2 @Service public class OrderPayCustomerServiceImpl extends ServiceImpl - implements OrderPayCustomerService -{ + implements OrderPayCustomerService { + + @Resource(type = OrderPayServiceImpl.class) + private OrderPayService orderPayService; + @Override //查询客户集合 public List selectList(CustomerListReq customerListReq) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like( StringUtils.isNoneEmpty(customerListReq.getAppName()), - OrderPayCustomer::getAppName,customerListReq.getAppName() + OrderPayCustomer::getAppName, customerListReq.getAppName() ); queryWrapper.like( StringUtils.isNoneEmpty(customerListReq.getAppCode()), - OrderPayCustomer::getAppCode,customerListReq.getAppCode() + OrderPayCustomer::getAppCode, customerListReq.getAppCode() ); queryWrapper.eq( StringUtils.isNoneEmpty(customerListReq.getStatus()), - OrderPayCustomer::getStatus,customerListReq.getStatus() + OrderPayCustomer::getStatus, customerListReq.getStatus() ); List orderPayCustomerList = this.list(queryWrapper); @@ -83,8 +88,18 @@ public class OrderPayCustomerServiceImpl /** * 第四种 比上一个在高级的一种写法 */ +// return orderPayCustomerList.stream() +// .map(CustomerResp::customerBuild) +// .toList(); return orderPayCustomerList.stream() - .map(CustomerResp::customerBuild) + .map(orderPayCustomer -> CustomerResp.customerBuild( + orderPayCustomer, + () -> orderPayService.selectOrderPayByAppCodeAndLimit(orderPayCustomer.getAppCode(), 5) + .stream() + .map(OrderPayInfo::buildCustomerOrderPaySimpleResp) + .toList() + ) + ) .toList(); } } diff --git a/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayServiceImpl.java b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayServiceImpl.java new file mode 100644 index 0000000..eaf66b9 --- /dev/null +++ b/cloud-pay-server/src/main/java/com/muyu/cloud/pay/service/impl/OrderPayServiceImpl.java @@ -0,0 +1,23 @@ +package com.muyu.cloud.pay.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.cloud.pay.domain.OrderPayInfo; +import com.muyu.cloud.pay.mapper.OrderPayMapper; +import com.muyu.cloud.pay.service.OrderPayService; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class OrderPayServiceImpl extends ServiceImpl implements OrderPayService{ + @Override + public List selectOrderPayByAppCodeAndLimit(String appCode, int limit) { + LambdaQueryWrapper orderPayInfoQueryWrapper = new LambdaQueryWrapper<>(); + orderPayInfoQueryWrapper.eq(OrderPayInfo::getAppCode,appCode); + orderPayInfoQueryWrapper.orderBy(true,false,OrderPayInfo::getCreateTime); + orderPayInfoQueryWrapper.last("limit"+limit); + return this.list(orderPayInfoQueryWrapper); + } +} diff --git a/doc/sql/cloud-pay-init.sql b/doc/sql/cloud-pay-init.sql new file mode 100644 index 0000000..2ed69aa --- /dev/null +++ b/doc/sql/cloud-pay-init.sql @@ -0,0 +1,49 @@ +CREATE TABLE order_pay_info( + `id` INT AUTO_INCREMENT COMMENT '主键' , + `app_name` VARCHAR(16) NOT NULL COMMENT '客户名称' , + `app_code` VARCHAR(16) COMMENT '客户编号' , + `cus_order_number` VARCHAR(32) COMMENT '客户单号' , + `pay_order_number` VARCHAR(32) COMMENT '支付单号' , + `channel_type` VARCHAR(32) COMMENT '渠道商类型' , + `channel_order_number` VARCHAR(64) COMMENT '渠道商单号' , + `price` DECIMAL(24,6) COMMENT '支付金额' , + `status` VARCHAR(32) COMMENT '支付状态' , + `create_by` bigint COMMENT '创建人' , + `create_time` DATETIME COMMENT '创建时间' , + `update_by` bigint COMMENT '更新人' , + `update_time` DATETIME COMMENT '更新时间' , + `remark` VARCHAR(255) COMMENT '备注' , + PRIMARY KEY (id) +) COMMENT = '订单支付信息'; + + +CREATE TABLE order_pay_customer( + `id` INT AUTO_INCREMENT COMMENT '主键' , + `app_name` VARCHAR(16) NOT NULL COMMENT '服务/客户名称' , + `app_code` VARCHAR(16) NOT NULL COMMENT '服务/客户名称' , + `app_desc` TEXT COMMENT '客户描述' , + `status` VARCHAR(32) COMMENT '是否开启' , + `create_by` bigint COMMENT '创建人' , + `create_time` DATETIME COMMENT '创建时间' , + `update_by` bigint COMMENT '更新人' , + `update_time` DATETIME COMMENT '更新时间' , + PRIMARY KEY (id) +) COMMENT = '支付单客户'; + + +CREATE TABLE order_pay_refund( + `id` INT AUTO_INCREMENT COMMENT '主键' , + `cus_order_number` VARCHAR(32) NOT NULL COMMENT '客户退单号' , + `pay_order_number` VARCHAR(32) NOT NULL COMMENT '支付退单号' , + `channel_order_number` VARCHAR(64) NOT NULL COMMENT '渠道商退单号' , + `price` DECIMAL(24,6) NOT NULL COMMENT '退款金额' , + `pay_info_number` VARCHAR(32) COMMENT '支付单号' , + `to_account_time` DATETIME COMMENT '到账时间' , + `status` VARCHAR(32) COMMENT '退单状态' , + `create_by` bigint COMMENT '创建人' , + `create_time` DATETIME COMMENT '创建时间' , + `update_by` bigint COMMENT '更新人' , + `update_time` DATETIME COMMENT '更新时间' , + PRIMARY KEY (id) +) COMMENT = '订单支付退款表'; + diff --git a/doc/sql/update-sql-202408041952.sql b/doc/sql/update-sql-202408041952.sql new file mode 100644 index 0000000..799e9dc --- /dev/null +++ b/doc/sql/update-sql-202408041952.sql @@ -0,0 +1,6 @@ +-- order_pay_customer 支付单客户 增加备注字段 +ALTER TABLE `order_pay_customer` ADD COLUMN `remark` varchar(64) NULL COMMENT '备注'; +-- order_pay_customer 支付订单记录表 增加备注字段 +ALTER TABLE `order_pay_info` ADD COLUMN `remark` varchar(64) NULL COMMENT '备注'; +-- order_pay_customer 支付退款表 增加备注字段 +ALTER TABLE `order_pay_refund` ADD COLUMN `remark` varchar(64) NULL COMMENT '备注'; diff --git a/doc/sql/update-sql-2024842107.sql b/doc/sql/update-sql-2024842107.sql new file mode 100644 index 0000000..9513d42 --- /dev/null +++ b/doc/sql/update-sql-2024842107.sql @@ -0,0 +1,3 @@ +-- 给order_pay_info 支付记录订单表 添加支付金额字段 +ALTER TABLE `order_pay_info` ADD COLUMN `price` decimal(24,6) NULL COMMENT '支付金额'; +