diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java index ee385cc..8d061c6 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java @@ -1,14 +1,12 @@ package com.qniao.dam.domain.aggregate.pointaccount.entity; import com.baomidou.mybatisplus.annotation.TableName; -import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import com.qniao.domain.Entity; -import java.math.BigDecimal; import java.util.List; /** diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java similarity index 85% rename from dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java rename to dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java index 1d62365..7af6867 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java @@ -1,8 +1,8 @@ -package com.qniao.dam.domain.aggregate.pointaccount.valueobj; +package com.qniao.dam.domain.aggregate.pointaccount.entity; import com.baomidou.mybatisplus.annotation.TableName; import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; -import com.qniao.domain.ValueObject; +import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = true) @TableName("da_point_account_record") -public class PointAccountRecord extends ValueObject { +public class PointAccountRecord extends Entity { @ApiModelProperty("积分账号标识") private Long pointAccountId; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java index 7861a3a..90394f2 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java @@ -1,6 +1,7 @@ package com.qniao.dam.api.query.pointaccount.user; import com.qniao.dam.api.query.pointaccount.user.request.PagePointAccountRecordQueryParams; +import com.qniao.dam.api.query.pointaccount.user.response.GetUnreadPointAccountRecordVo; import com.qniao.dam.api.query.pointaccount.user.response.PagePointAccountRecordVo; import com.qniao.dam.api.query.pointaccount.user.response.PointAccountVo; import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; @@ -44,4 +45,10 @@ public class PointAccountUserQueryController { } return PageUtil.convert(pointAccountQueryService.pagePointAccountRecord(queryParams, pageUtil), PagePointAccountRecordVo.class); } + + @GetMapping("get/unread-point-account-record") + @ApiOperation("用户获取未读积分账号记录") + public GetUnreadPointAccountRecordVo userGetUnreadPointAccountRecord(@RequestParam("userId") Long userId) { + return pointAccountQueryService.getUnreadPointAccountRecord(userId); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java new file mode 100644 index 0000000..aec834e --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java @@ -0,0 +1,32 @@ +package com.qniao.dam.api.query.pointaccount.user.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class GetUnreadPointAccountRecordVo { + + @ApiModelProperty("积分类型") + private PointRewardConfigTypeEnum pointType; + + @ApiModelProperty("内容") + private String content; + + @ApiModelProperty("积分") + private Integer points; + + @ApiModelProperty("是否收入") + private Boolean isIncome; + + @ApiModelProperty("当前积分") + private Integer currentPoints; + + @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/application/handler/pointaccount/PointAccountEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java index 44323f7..608f7b8 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java @@ -2,7 +2,7 @@ package com.qniao.dam.application.handler.pointaccount; import com.qniao.dam.domain.aggregate.pointaccount.PointAccountAggregate; import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; -import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord; +import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccountRecord; import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ; import com.qniao.dam.infrastructure.constant.MqExchange; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java index a6510c1..050caaf 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java @@ -1,7 +1,8 @@ package com.qniao.dam.infrastructure.persistent.dao.par; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord; +import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccountRecord; +import org.apache.ibatis.annotations.Param; /** * 积分账户记录 @@ -9,4 +10,5 @@ import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord; * @date 2024/12/23 */ public interface PointAccountRecordDao extends BaseMapper { + void updateIsRead(@Param("pointAccountId") Long pointAccountId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java index 0f547b7..de1d82c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java @@ -2,6 +2,7 @@ package com.qniao.dam.query.pointaccount; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.pointaccount.user.request.PagePointAccountRecordQueryParams; +import com.qniao.dam.api.query.pointaccount.user.response.GetUnreadPointAccountRecordVo; import com.qniao.dam.api.query.pointaccount.user.response.PagePointAccountRecordVo; import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; @@ -14,4 +15,6 @@ public interface PointAccountQueryService { PointAccount queryByType(Long ownId, IdentityTypeEnum identityType); IPage pagePointAccountRecord(PagePointAccountRecordQueryParams queryParams, PageUtil pageUtil); + + GetUnreadPointAccountRecordVo getUnreadPointAccountRecord(Long userId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java index a3a54dc..0c7fafe 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java @@ -1,14 +1,19 @@ package com.qniao.dam.query.pointaccount.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.qniao.dam.api.query.pointaccount.user.request.PagePointAccountRecordQueryParams; +import com.qniao.dam.api.query.pointaccount.user.response.GetUnreadPointAccountRecordVo; import com.qniao.dam.api.query.pointaccount.user.response.PagePointAccountRecordVo; import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; +import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccountRecord; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.par.PointAccountRecordDao; import com.qniao.dam.infrastructure.persistent.dao.pointaccount.PointAccountDao; import com.qniao.dam.query.pointaccount.PointAccountQueryService; import com.qniao.framework.utils.PageUtil; +import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -19,6 +24,8 @@ public class PointAccountQueryServiceImpl implements PointAccountQueryService { @Resource private PointAccountDao pointAccountDao; + @Resource + private PointAccountRecordDao pointAccountRecordDao; @Override public PointAccount queryByUserId(Long userId) { @@ -58,4 +65,22 @@ public class PointAccountQueryServiceImpl implements PointAccountQueryService { return pointAccountDao.pagePointAccountRecord(pageUtil.toPageWithoutOrders(), queryParams); } + @Override + public GetUnreadPointAccountRecordVo getUnreadPointAccountRecord(Long userId) { + GetUnreadPointAccountRecordVo recordVo = null; + PointAccount pointAccount = queryByUserId(userId); + if (Objects.isNull(pointAccount.getId())) { + PointAccountRecord pointAccountRecord = pointAccountRecordDao.selectOne(new LambdaQueryWrapper() + .eq(PointAccountRecord::getPointAccountId, pointAccount.getId()) + .eq(PointAccountRecord::getIsRead, false) + .orderByDesc(PointAccountRecord::getCreateTime) + .last("limit 1")); + if (Objects.nonNull(pointAccountRecord)) { + recordVo = TypeConvertUtils.convert(pointAccountRecord, GetUnreadPointAccountRecordVo.class); + pointAccountRecordDao.updateIsRead(pointAccount.getId()); + } + } + return recordVo; + } + } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml new file mode 100644 index 0000000..cfc9692 --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml @@ -0,0 +1,13 @@ + + + + + + UPDATE da_point_account_record + set is_read=1 + where is_delete = 0 + and is_read = 0 + and point_account_id = #{pointAccountId} + + + \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml index cab74cb..21948ff 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml @@ -14,7 +14,7 @@ dapar.current_points from da_point_account_record as dapar INNER JOIN da_point_account as dapa on dapa.is_delete=0 and dapar.point_account_id=dapa.id - where 1=1 + where dapar.is_delete=0 AND dapa.user_id = #{queryParams.queryUserId}