diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java index c7cebb2..f35c28e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/ContractUserQueryController.java @@ -1,6 +1,7 @@ package com.qniao.dam.api.query.contract.user; import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; +import com.qniao.dam.api.query.contract.user.response.UserGetCustomizedServiceContractVo; import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; import com.qniao.dam.query.contract.ContractQueryService; import com.qniao.dau.infrastructure.constant.RequestHeaderFields; @@ -39,4 +40,9 @@ public class ContractUserQueryController { return PageUtil.convert(contractQueryService.pageCustomizedServiceContract(queryParams, pageUtil), UserPageCustomizedServiceContractVo.class); } + @GetMapping("get/customized-service-contract/by/dating-store-customer") + @ApiOperation("用户查询客户定制服务合同详情") + public UserGetCustomizedServiceContractVo userGetCustomizedServiceContractByDatingStoreCustomer(@RequestParam(value = "datingStoreCustomerId") Long datingStoreCustomerId) { + return contractQueryService.detailByDatingStoreCustomerId(datingStoreCustomerId); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserGetCustomizedServiceContractVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserGetCustomizedServiceContractVo.java new file mode 100644 index 0000000..06bc4de --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/contract/user/response/UserGetCustomizedServiceContractVo.java @@ -0,0 +1,73 @@ +package com.qniao.dam.api.query.contract.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.contract.constant.ContractStatusEnum; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +@Data +public class UserGetCustomizedServiceContractVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("甲方身份类型") + private IdentityTypeEnum firstPartyIdentityType; + + @ApiModelProperty("甲方标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long firstPartyId; + + @ApiModelProperty("甲方经办人名称") + private String firstPartyName; + + @ApiModelProperty("甲方身份编号 身份证、统一信用代码") + private String firstPartyIdentityNo; + + @ApiModelProperty("乙方身份类型") + private IdentityTypeEnum secondPartyIdentityType; + + @ApiModelProperty("乙方标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long secondPartyId; + + @ApiModelProperty("乙方经办人名称") + private String secondPartyName; + + @ApiModelProperty("乙方身份编号 身份证、统一信用代码") + private String secondPartyIdentityNo; + + @ApiModelProperty("合同金额") + private BigDecimal amount; + + @ApiModelProperty("签订日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate signDate; + + @ApiModelProperty("开始日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate startDate; + + @ApiModelProperty("开始日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate endDate; + + @ApiModelProperty("状态") + private ContractStatusEnum status; + + @ApiModelProperty("合同备注") + private String remark; + + private List contractTermList; + + private List contractImageList; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/PaymentOrderUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/PaymentOrderUserQueryController.java new file mode 100644 index 0000000..ee8bf6e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/PaymentOrderUserQueryController.java @@ -0,0 +1,28 @@ +package com.qniao.dam.api.query.paymentorder.user; + +import com.qniao.dam.api.query.paymentorder.user.response.UserGetPaymentOrderVo; +import com.qniao.dam.query.paymentorder.PaymentOrderQueryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@Api(tags = "付款单") +@RestController +@RequestMapping("user") +public class PaymentOrderUserQueryController { + + @Resource + private PaymentOrderQueryService paymentOrderQueryService; + + @GetMapping("get/payment-order/by/dating-store-customer") + @ApiOperation("用户获取定制服务客户付款单") + public UserGetPaymentOrderVo userGetPaymentOrderByDatingStoreCustomer(@RequestParam(value = "datingStoreCustomerId") Long datingStoreCustomerId) { + return paymentOrderQueryService.queryByDatingStoreCustomer(datingStoreCustomerId); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/PaymentOrderVoucherImageVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/PaymentOrderVoucherImageVo.java new file mode 100644 index 0000000..a09e7d0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/PaymentOrderVoucherImageVo.java @@ -0,0 +1,7 @@ +package com.qniao.dam.api.query.paymentorder.user.response; + +import lombok.Data; + +@Data +public class PaymentOrderVoucherImageVo { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/UserGetPaymentOrderVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/UserGetPaymentOrderVo.java new file mode 100644 index 0000000..ef0a464 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/paymentorder/user/response/UserGetPaymentOrderVo.java @@ -0,0 +1,48 @@ +package com.qniao.dam.api.query.paymentorder.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentMethodEnum; +import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class UserGetPaymentOrderVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("订单标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long orderId; + + @ApiModelProperty("应付金额") + private BigDecimal payableAmount; + + @ApiModelProperty("未付金额") + private BigDecimal unpaidAmount; + + @ApiModelProperty("实付金额") + private BigDecimal paidAmount; + + @ApiModelProperty("付款时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime paidTime; + + @ApiModelProperty("付款方式") + private PaymentMethodEnum paymentMethod; + + @ApiModelProperty("状态") + private PaymentOrderStatusEnum status; + + @ApiModelProperty("付款凭证") + private List voucherImageList; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java index eb822fc..b9dc05f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/ContractQueryService.java @@ -2,6 +2,7 @@ package com.qniao.dam.query.contract; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; +import com.qniao.dam.api.query.contract.user.response.UserGetCustomizedServiceContractVo; import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; import com.qniao.domain.QnPage; import com.qniao.framework.utils.PageUtil; @@ -9,4 +10,6 @@ import com.qniao.framework.utils.PageUtil; public interface ContractQueryService { IPage pageCustomizedServiceContract(UserPageCustomizedServiceContractQueryParams queryParams, PageUtil pageUtil); + + UserGetCustomizedServiceContractVo detailByDatingStoreCustomerId(Long datingStoreCustomerId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java index 4b06d8d..5ea8fb0 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/contract/impl/ContractQueryServiceImpl.java @@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.contract.user.request.UserPageCustomizedServiceContractQueryParams; import com.qniao.dam.api.query.contract.user.response.ContractImageVo; import com.qniao.dam.api.query.contract.user.response.ContractTermVo; +import com.qniao.dam.api.query.contract.user.response.UserGetCustomizedServiceContractVo; import com.qniao.dam.api.query.contract.user.response.UserPageCustomizedServiceContractVo; +import com.qniao.dam.domain.aggregate.contract.entity.Contract; import com.qniao.dam.domain.aggregate.contract.valobj.ContractImage; import com.qniao.dam.domain.aggregate.contract.valobj.ContractTerm; import com.qniao.dam.infrastructure.persistent.dao.contract.ContractDao; @@ -17,9 +19,7 @@ import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -49,6 +49,23 @@ public class ContractQueryServiceImpl implements ContractQueryService { return page; } + @Override + public UserGetCustomizedServiceContractVo detailByDatingStoreCustomerId(Long datingStoreCustomerId) { + UserGetCustomizedServiceContractVo contractVo = null; + Contract contract = contractDao.selectOne(new LambdaQueryWrapper() + .eq(Contract::getFirstPartyId, datingStoreCustomerId) + .orderByDesc(Contract::getSignDate) + .last("limit 1")); + if (Objects.nonNull(contract)) { + contractVo = TypeConvertUtils.convert(contract, UserGetCustomizedServiceContractVo.class); + Map> allContractTermVoMap = mapContractTermVo(Collections.singletonList(contract.getId())); + contractVo.setContractTermList(allContractTermVoMap.get(contract.getId())); + Map> allContractImageVoMap = mapContractImageVo(Collections.singletonList(contract.getId())); + contractVo.setContractImageList(allContractImageVoMap.get(contract.getId())); + } + return contractVo; + } + private Map> mapContractImageVo(List contractIdList) { List contractImageList = contractImageDao.selectList(new LambdaQueryWrapper() .in(ContractImage::getContractId, contractIdList)); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java index ae763bf..2070f10 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java @@ -29,4 +29,6 @@ public interface OrderQueryService { Order queryBySubCategory(Long userId,ProductSubCategoryEnum subCategory); List listHis(Long userId, OrderBelongingEnum orderBelonging, OrderStatusEnum status); + + Order queryByDatingStoreCustomer(Long datingStoreCustomerId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java index f32793d..20bf64f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/impl/OrderQueryServiceImpl.java @@ -114,4 +114,13 @@ public class OrderQueryServiceImpl implements OrderQueryService { .eq(Order::getOrderBelonging, orderBelonging) .eq(Order::getStatus, status)); } + + @Override + public Order queryByDatingStoreCustomer(Long datingStoreCustomerId) { + return orderDao.selectOne(new LambdaQueryWrapper() + .eq(Order::getUserId, datingStoreCustomerId) + .eq(Order::getStatus, OrderStatusEnum.COMPLETED) + .orderByDesc(Order::getCreateTime) + .last("limit 1")); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/PaymentOrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/PaymentOrderQueryService.java index b44636b..d59d6a1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/PaymentOrderQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/PaymentOrderQueryService.java @@ -1,5 +1,6 @@ package com.qniao.dam.query.paymentorder; +import com.qniao.dam.api.query.paymentorder.user.response.UserGetPaymentOrderVo; import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; @@ -11,4 +12,6 @@ public interface PaymentOrderQueryService { List listByOrderId(List orderList, PaymentOrderStatusEnum paymentOrderStatusEnum); Map> mapVoucherImage(List paymentOrderIdList); + + UserGetPaymentOrderVo queryByDatingStoreCustomer(Long datingStoreCustomerId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/impl/PaymentOrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/impl/PaymentOrderQueryServiceImpl.java index 33987ca..bfe2044 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/impl/PaymentOrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/paymentorder/impl/PaymentOrderQueryServiceImpl.java @@ -2,19 +2,20 @@ package com.qniao.dam.query.paymentorder.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.api.query.paymentorder.user.response.UserGetPaymentOrderVo; +import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder; import com.qniao.dam.domain.aggregate.paymentorder.valobj.PaymentOrderVoucherImage; import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentOrderStatusEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentOrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.PaymentOrderVoucherImageDao; +import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.paymentorder.PaymentOrderQueryService; +import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Service @@ -24,6 +25,8 @@ public class PaymentOrderQueryServiceImpl implements PaymentOrderQueryService { private PaymentOrderDao paymentOrderDao; @Resource private PaymentOrderVoucherImageDao paymentOrderVoucherImageDao; + @Resource + private OrderQueryService orderQueryService; @Override public List listByOrderId(List orderList, PaymentOrderStatusEnum status) { @@ -41,4 +44,24 @@ public class PaymentOrderQueryServiceImpl implements PaymentOrderQueryService { } return voucherImageList.stream().collect(Collectors.groupingBy(PaymentOrderVoucherImage::getPaymentOrderId)); } + + @Override + public UserGetPaymentOrderVo queryByDatingStoreCustomer(Long datingStoreCustomerId) { + UserGetPaymentOrderVo paymentOrderVo = null; + Order order = orderQueryService.queryByDatingStoreCustomer(datingStoreCustomerId); + if (Objects.nonNull(order)) { + PaymentOrder paymentOrder = paymentOrderDao.selectOne(new LambdaQueryWrapper() + .eq(PaymentOrder::getOrderId, order.getMiId()) + .orderByDesc(PaymentOrder::getCreateTime) + .last("limit 1")); + if (Objects.nonNull(paymentOrder)) { + paymentOrderVo = TypeConvertUtils.convert(paymentOrder, UserGetPaymentOrderVo.class); + Map> allVoucherImageMap = mapVoucherImage(Collections.singletonList(paymentOrder.getId())); + if (CollUtil.isNotEmpty(allVoucherImageMap.get(paymentOrder.getId()))) { + paymentOrderVo.setVoucherImageList(allVoucherImageMap.get(paymentOrder.getId()).stream().map(PaymentOrderVoucherImage::getUrl).collect(Collectors.toList())); + } + } + } + return paymentOrderVo; + } }