Browse Source

积分奖励配置

release
张彭杰 1 year ago
parent
commit
6ab60e734a
10 changed files with 88 additions and 8 deletions
  1. 2
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java
  2. 6
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java
  3. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java
  4. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java
  5. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java
  6. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java
  7. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java
  8. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java
  9. 13
      dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml
  10. 2
      dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml

2
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; package com.qniao.dam.domain.aggregate.pointaccount.entity;
import com.baomidou.mybatisplus.annotation.TableName; 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 com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import com.qniao.domain.Entity; import com.qniao.domain.Entity;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
/** /**

dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java → 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.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; 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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("da_point_account_record") @TableName("da_point_account_record")
public class PointAccountRecord extends ValueObject<PointAccountRecord> {
public class PointAccountRecord extends Entity<PointAccountRecord> {
@ApiModelProperty("积分账号标识") @ApiModelProperty("积分账号标识")
private Long pointAccountId; private Long pointAccountId;

7
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; 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.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.PagePointAccountRecordVo;
import com.qniao.dam.api.query.pointaccount.user.response.PointAccountVo; import com.qniao.dam.api.query.pointaccount.user.response.PointAccountVo;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; 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); 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);
}
} }

32
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;
}

2
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.PointAccountAggregate;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; 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.domain.aggregate.prc.entity.PointRewardConfig;
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ; import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ;
import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqExchange;

4
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; package com.qniao.dam.infrastructure.persistent.dao.par;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; 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 * @date 2024/12/23
*/ */
public interface PointAccountRecordDao extends BaseMapper<PointAccountRecord> { public interface PointAccountRecordDao extends BaseMapper<PointAccountRecord> {
void updateIsRead(@Param("pointAccountId") Long pointAccountId);
} }

3
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.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.pointaccount.user.request.PagePointAccountRecordQueryParams; 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.PagePointAccountRecordVo;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
@ -14,4 +15,6 @@ public interface PointAccountQueryService {
PointAccount queryByType(Long ownId, IdentityTypeEnum identityType); PointAccount queryByType(Long ownId, IdentityTypeEnum identityType);
IPage<PagePointAccountRecordVo> pagePointAccountRecord(PagePointAccountRecordQueryParams queryParams, PageUtil pageUtil); IPage<PagePointAccountRecordVo> pagePointAccountRecord(PagePointAccountRecordQueryParams queryParams, PageUtil pageUtil);
GetUnreadPointAccountRecordVo getUnreadPointAccountRecord(Long userId);
} }

25
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; package com.qniao.dam.query.pointaccount.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.pointaccount.user.request.PagePointAccountRecordQueryParams; 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.PagePointAccountRecordVo;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; 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.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.infrastructure.persistent.dao.pointaccount.PointAccountDao;
import com.qniao.dam.query.pointaccount.PointAccountQueryService; import com.qniao.dam.query.pointaccount.PointAccountQueryService;
import com.qniao.framework.utils.PageUtil; import com.qniao.framework.utils.PageUtil;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -19,6 +24,8 @@ public class PointAccountQueryServiceImpl implements PointAccountQueryService {
@Resource @Resource
private PointAccountDao pointAccountDao; private PointAccountDao pointAccountDao;
@Resource
private PointAccountRecordDao pointAccountRecordDao;
@Override @Override
public PointAccount queryByUserId(Long userId) { public PointAccount queryByUserId(Long userId) {
@ -58,4 +65,22 @@ public class PointAccountQueryServiceImpl implements PointAccountQueryService {
return pointAccountDao.pagePointAccountRecord(pageUtil.toPageWithoutOrders(), queryParams); 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<PointAccountRecord>()
.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;
}
} }

13
dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qniao.dam.infrastructure.persistent.dao.par.PointAccountRecordDao">
<update id="updateIsRead" parameterType="java.lang.Long">
UPDATE da_point_account_record
set is_read=1
where is_delete = 0
and is_read = 0
and point_account_id = #{pointAccountId}
</update>
</mapper>

2
dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml

@ -14,7 +14,7 @@
dapar.current_points dapar.current_points
from da_point_account_record as dapar 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 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
<if test="queryParams.queryUserId != null"> <if test="queryParams.queryUserId != null">
AND dapa.user_id = #{queryParams.queryUserId} AND dapa.user_id = #{queryParams.queryUserId}
</if> </if>

Loading…
Cancel
Save