diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/MarriageInformationContactApplyUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/MarriageInformationContactApplyUserQueryController.java new file mode 100644 index 0000000..bd60faa --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/MarriageInformationContactApplyUserQueryController.java @@ -0,0 +1,45 @@ +package com.qniao.dam.api.query.mica.user; + +import com.qniao.dam.api.query.mica.user.request.UserPageApplicantMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.request.UserPageTargetMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.response.UserPageApplicantMarriageInformationContactApplyVo; +import com.qniao.dam.api.query.mica.user.response.UserPageTargetMarriageInformationContactApplyVo; +import com.qniao.dam.query.mica.MarriageInformationContactApplyQueryService; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; +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 MarriageInformationContactApplyUserQueryController { + + @Resource + private MarriageInformationContactApplyQueryService marriageInformationContactApplyQueryService; + + @GetMapping("page/applicant/marriage-information-contact-apply") + @ApiOperation("用户查询发起人征婚资料联系申请列表") + public QnPage userPageApplicantMarriageInformationContactApply(PageUtil pageUtil, + UserPageApplicantMarriageInformationContactApplyQueryParams queryParams, + @RequestParam("userId") Long userId) { + queryParams.setApplicantUserId(userId); + return PageUtil.convert(marriageInformationContactApplyQueryService.pageApplicant(queryParams, pageUtil), UserPageApplicantMarriageInformationContactApplyVo.class); + } + + @GetMapping("page/target/marriage-information-contact-apply") + @ApiOperation("用户查询接收人征婚资料联系申请列表") + public QnPage userPageTargetMarriageInformationContactApply(PageUtil pageUtil, + UserPageTargetMarriageInformationContactApplyQueryParams queryParams, + @RequestParam("userId") Long userId) { + queryParams.setTargetUserId(userId); + return PageUtil.convert(marriageInformationContactApplyQueryService.pageTarget(queryParams, pageUtil), UserPageTargetMarriageInformationContactApplyVo.class); + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageApplicantMarriageInformationContactApplyQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageApplicantMarriageInformationContactApplyQueryParams.java new file mode 100644 index 0000000..d9fa789 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageApplicantMarriageInformationContactApplyQueryParams.java @@ -0,0 +1,12 @@ +package com.qniao.dam.api.query.mica.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserPageApplicantMarriageInformationContactApplyQueryParams { + + @ApiModelProperty(hidden = true) + private Long applicantUserId; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageTargetMarriageInformationContactApplyQueryParams.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageTargetMarriageInformationContactApplyQueryParams.java new file mode 100644 index 0000000..c8009ff --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/request/UserPageTargetMarriageInformationContactApplyQueryParams.java @@ -0,0 +1,13 @@ +package com.qniao.dam.api.query.mica.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserPageTargetMarriageInformationContactApplyQueryParams { + + + @ApiModelProperty(hidden = true) + private Long targetUserId; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageApplicantMarriageInformationContactApplyVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageApplicantMarriageInformationContactApplyVo.java new file mode 100644 index 0000000..f90cff3 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageApplicantMarriageInformationContactApplyVo.java @@ -0,0 +1,67 @@ +package com.qniao.dam.api.query.mica.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.mica.constant.MarriageInformationContactApplyStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class UserPageApplicantMarriageInformationContactApplyVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("目标用户id") + @JsonSerialize(using = ToStringSerializer.class) + private Long targetUserId; + + @ApiModelProperty("目标资料id") + @JsonSerialize(using = ToStringSerializer.class) + private Long targetMiId; + + @ApiModelProperty("昵称") + private String nickName; + + @ApiModelProperty("头像URL") + private String profilePhoto; + + @ApiModelProperty("性别") + private Integer genderCode; + + @ApiModelProperty("出身年份") + private String birthYear; + + @ApiModelProperty("出身日期") + private String birthDate; + + @ApiModelProperty("年龄") + private Integer age; + + @ApiModelProperty("省编码") + private Integer provinceCode; + + @ApiModelProperty("省名称") + private String provinceName; + + @ApiModelProperty("市名编码") + private Integer cityCode; + + @ApiModelProperty("市名称") + private String cityName; + + @ApiModelProperty("状态") + private MarriageInformationContactApplyStatusEnum status; + + @ApiModelProperty("是否解锁") + private Boolean unlocked; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageTargetMarriageInformationContactApplyVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageTargetMarriageInformationContactApplyVo.java new file mode 100644 index 0000000..c830eb1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/mica/user/response/UserPageTargetMarriageInformationContactApplyVo.java @@ -0,0 +1,67 @@ +package com.qniao.dam.api.query.mica.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.mica.constant.MarriageInformationContactApplyStatusEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class UserPageTargetMarriageInformationContactApplyVo { + + @ApiModelProperty("唯一标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("申请人用户id") + @JsonSerialize(using = ToStringSerializer.class) + private Long applicantUserId; + + @ApiModelProperty("申请人资料id") + @JsonSerialize(using = ToStringSerializer.class) + private Long applicantMiId; + + @ApiModelProperty("昵称") + private String nickName; + + @ApiModelProperty("头像URL") + private String profilePhoto; + + @ApiModelProperty("性别") + private Integer genderCode; + + @ApiModelProperty("出身年份") + private String birthYear; + + @ApiModelProperty("出身日期") + private String birthDate; + + @ApiModelProperty("年龄") + private Integer age; + + @ApiModelProperty("省编码") + private Integer provinceCode; + + @ApiModelProperty("省名称") + private String provinceName; + + @ApiModelProperty("市名编码") + private Integer cityCode; + + @ApiModelProperty("市名称") + private String cityName; + + @ApiModelProperty("状态") + private MarriageInformationContactApplyStatusEnum status; + + @ApiModelProperty("是否解锁") + private Boolean unlocked; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/mica/MarriageInformationContactApplyDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/mica/MarriageInformationContactApplyDao.java index 4944121..36ef15a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/mica/MarriageInformationContactApplyDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/mica/MarriageInformationContactApplyDao.java @@ -1,7 +1,14 @@ package com.qniao.dam.infrastructure.persistent.dao.mica; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.qniao.dam.api.query.mica.user.request.UserPageApplicantMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.request.UserPageTargetMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.response.UserPageApplicantMarriageInformationContactApplyVo; +import com.qniao.dam.api.query.mica.user.response.UserPageTargetMarriageInformationContactApplyVo; import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; +import org.apache.ibatis.annotations.Param; /** * 征婚资料联系申请 @@ -9,4 +16,9 @@ import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactAppl * @date 2026/02/04 */ public interface MarriageInformationContactApplyDao extends BaseMapper { + IPage pageApplicant(Page pageWithoutOrders, + @Param("queryParams") UserPageApplicantMarriageInformationContactApplyQueryParams queryParams); + + IPage pageTarget(Page pageWithoutOrders, + @Param("queryParams") UserPageTargetMarriageInformationContactApplyQueryParams queryParams); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/AgeCalculatorUtil.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/AgeCalculatorUtil.java new file mode 100644 index 0000000..b340c58 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/AgeCalculatorUtil.java @@ -0,0 +1,26 @@ +package com.qniao.dam.infrastructure.utils; + +import cn.hutool.core.util.StrUtil; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeFormatter; + +public class AgeCalculatorUtil { + + // 固定支持 yyyy-MM-dd 格式 + private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + public static Integer calculateAge(String birthYearStr, String yearDateStr) { + Integer age = null; + if (StrUtil.isEmpty(yearDateStr) && StrUtil.isNotBlank(birthYearStr)) { + yearDateStr = birthYearStr + "-01-01"; + } + if (StrUtil.isNotBlank(yearDateStr)) { + LocalDate birthDate = LocalDate.parse(yearDateStr, DATE_FORMATTER); + age = Period.between(birthDate, LocalDate.now()).getYears(); + } + return age; + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/MarriageInformationContactApplyQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/MarriageInformationContactApplyQueryService.java index ad9c6ea..cdafa2a 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/MarriageInformationContactApplyQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/MarriageInformationContactApplyQueryService.java @@ -1,6 +1,18 @@ package com.qniao.dam.query.mica; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.mica.user.request.UserPageApplicantMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.request.UserPageTargetMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.response.UserPageApplicantMarriageInformationContactApplyVo; +import com.qniao.dam.api.query.mica.user.response.UserPageTargetMarriageInformationContactApplyVo; +import com.qniao.domain.QnPage; +import com.qniao.framework.utils.PageUtil; + public interface MarriageInformationContactApplyQueryService { Boolean checkApplying(Long applicantUserId, Long targetMiId); + + IPage pageApplicant(UserPageApplicantMarriageInformationContactApplyQueryParams queryParams, PageUtil pageUtil); + + IPage pageTarget(UserPageTargetMarriageInformationContactApplyQueryParams queryParams, PageUtil pageUtil); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/impl/MarriageInformationContactApplyQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/impl/MarriageInformationContactApplyQueryServiceImpl.java index 3f56442..ac3a96e 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/impl/MarriageInformationContactApplyQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/mica/impl/MarriageInformationContactApplyQueryServiceImpl.java @@ -1,10 +1,17 @@ package com.qniao.dam.query.mica.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.qniao.dam.api.query.mica.user.request.UserPageApplicantMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.request.UserPageTargetMarriageInformationContactApplyQueryParams; +import com.qniao.dam.api.query.mica.user.response.UserPageApplicantMarriageInformationContactApplyVo; +import com.qniao.dam.api.query.mica.user.response.UserPageTargetMarriageInformationContactApplyVo; import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; import com.qniao.dam.domian.aggregate.mica.constant.MarriageInformationContactApplyStatusEnum; import com.qniao.dam.infrastructure.persistent.dao.mica.MarriageInformationContactApplyDao; +import com.qniao.dam.infrastructure.utils.AgeCalculatorUtil; import com.qniao.dam.query.mica.MarriageInformationContactApplyQueryService; +import com.qniao.framework.utils.PageUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -30,4 +37,23 @@ public class MarriageInformationContactApplyQueryServiceImpl implements Marriage .in(MarriageInformationContactApply::getStatus, Arrays.asList(MarriageInformationContactApplyStatusEnum.PENDING, MarriageInformationContactApplyStatusEnum.APPROVED))) > 0; } + @Override + public IPage pageApplicant(UserPageApplicantMarriageInformationContactApplyQueryParams queryParams, + PageUtil pageUtil) { + IPage page = marriageInformationContactApplyDao.pageApplicant(pageUtil.toPageWithoutOrders(), queryParams); + page.getRecords().forEach(record -> { + record.setAge(AgeCalculatorUtil.calculateAge(record.getBirthYear(), record.getBirthDate())); + }); + return page; + } + + @Override + public IPage pageTarget(UserPageTargetMarriageInformationContactApplyQueryParams queryParams, PageUtil pageUtil) { + IPage page = marriageInformationContactApplyDao.pageTarget(pageUtil.toPageWithoutOrders(), queryParams); + page.getRecords().forEach(record -> { + record.setAge(AgeCalculatorUtil.calculateAge(record.getBirthYear(), record.getBirthDate())); + }); + return page; + } + } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/resources/mapper/mica/MarriageInformationContactApplyDao.xml b/dating-agency-mall-server/src/main/resources/mapper/mica/MarriageInformationContactApplyDao.xml new file mode 100644 index 0000000..4160d15 --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/mica/MarriageInformationContactApplyDao.xml @@ -0,0 +1,54 @@ + + + + + + + + +