Browse Source

积分奖励配置

release
张彭杰 1 year ago
parent
commit
6c86f1674d
23 changed files with 420 additions and 36 deletions
  1. 45
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java
  2. 47
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java
  3. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java
  4. 24
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PointAccountVo.java
  5. 18
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/PointRewardConfigUserQueryController.java
  6. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigByOperatorQueryParams.java
  7. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigQueryParams.java
  8. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/response/UserPagePointRewardConfigVo.java
  9. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/par/PointAccountRecordApplicationService.java
  10. 26
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pointaccount/PointAccountApplicationService.java
  11. 31
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/PointAccountAggregate.java
  12. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/repository/PointAccountRepository.java
  13. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java
  14. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/pointaccount/PointAccountDao.java
  15. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/prc/PointRewardConfigDao.java
  16. 51
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointAccountRepositoryImpl.java
  17. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/PointAccountRecordQueryService.java
  18. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/impl/PointAccountRecordQueryServiceImpl.java
  19. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java
  20. 30
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java
  21. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/PointRewardConfigQueryService.java
  22. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/impl/PointRewardConfigQueryServiceImpl.java
  23. 26
      dating-agency-mall-server/src/main/resources/mapper/prc/PointRewardConfigMapper.xml

45
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java

@ -0,0 +1,45 @@
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;
/**
* 积分账号
*
* @date 2024/12/23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_point_account")
public class PointAccount extends Entity<PointAccount> {
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("组织唯一标识")
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private IdentityTypeEnum identityType;
@ApiModelProperty("积分")
private Integer points;
private transient List<PointAccountRecord> recordList;
public static PointAccount initUser(Long userId) {
PointAccount pointAccount = new PointAccount();
pointAccount.setUserId(userId);
pointAccount.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
pointAccount.setPoints(0);
return pointAccount;
}
}

47
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/valueobj/PointAccountRecord.java

@ -0,0 +1,47 @@
package com.qniao.dam.domain.aggregate.pointaccount.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 积分账户记录
*
* @date 2024/12/23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_point_account_record")
public class PointAccountRecord extends ValueObject<PointAccountRecord> {
@ApiModelProperty("积分账号标识")
private Long pointAccountId;
@ApiModelProperty("积分类型")
private Integer pointType;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("积分")
private Integer points;
@ApiModelProperty("是否收入")
private Boolean isIncome;
@ApiModelProperty("原始积分")
private Integer originalPoints;
@ApiModelProperty("当前积分")
private Integer currentPoints;
@ApiModelProperty("关联ID")
private Long associateId;
@ApiModelProperty("是否已读")
private Boolean isRead;
}

31
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java

@ -0,0 +1,31 @@
package com.qniao.dam.api.query.pointaccount.user;
import com.qniao.dam.api.query.pointaccount.user.response.PointAccountVo;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.dam.query.pointaccount.PointAccountQueryService;
import com.qniao.framework.utils.TypeConvertUtils;
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 PointAccountUserQueryController {
@Resource
private PointAccountQueryService pointAccountQueryService;
@GetMapping("get/point-account")
@ApiOperation("用户获取积分账号")
public PointAccountVo userGetPointAccount(@RequestParam("userId") Long userId) {
PointAccount pointAccount = pointAccountQueryService.queryByUserId(userId);
return TypeConvertUtils.convert(pointAccount, PointAccountVo.class);
}
}

24
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PointAccountVo.java

@ -0,0 +1,24 @@
package com.qniao.dam.api.query.pointaccount.user.response;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class PointAccountVo {
private Long id;
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("组织唯一标识")
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private Integer identityType;
@ApiModelProperty("积分")
private Integer points;
}

18
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/PointRewardConfigUserQueryController.java

@ -1,7 +1,7 @@
package com.qniao.dam.api.query.prc.user;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigByOperatorQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigByOperatorVo;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo;
import com.qniao.dam.query.prc.PointRewardConfigQueryService;
import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
@ -21,8 +21,16 @@ public class PointRewardConfigUserQueryController {
@GetMapping("page/point-reward-config/by/operator")
@ApiOperation("运营获取积分奖励配置分页列表")
public QnPage<UserPagePointRewardConfigByOperatorVo> userPagePointRewardConfigByOperator(PageUtil pageUtil,
UserPagePointRewardConfigByOperatorQueryParams queryParams) {
return PageUtil.convert(pointRewardConfigQueryService.pageByOperator(pageUtil, queryParams), UserPagePointRewardConfigByOperatorVo.class);
public QnPage<UserPagePointRewardConfigVo> userPagePointRewardConfigByOperator(PageUtil pageUtil,
UserPagePointRewardConfigQueryParams queryParams) {
return PageUtil.convert(pointRewardConfigQueryService.page(pageUtil, queryParams), UserPagePointRewardConfigVo.class);
}
@GetMapping("page/point-reward-config/by/customer")
@ApiOperation("客户获取积分奖励配置分页列表")
public QnPage<UserPagePointRewardConfigVo> userPagePointRewardConfigByCustomer(PageUtil pageUtil,
UserPagePointRewardConfigQueryParams queryParams) {
queryParams.setEnable(true);
return PageUtil.convert(pointRewardConfigQueryService.page(pageUtil, queryParams), UserPagePointRewardConfigVo.class);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigByOperatorQueryParams.java

@ -1,7 +0,0 @@
package com.qniao.dam.api.query.prc.user.request;
import lombok.Data;
@Data
public class UserPagePointRewardConfigByOperatorQueryParams {
}

10
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigQueryParams.java

@ -0,0 +1,10 @@
package com.qniao.dam.api.query.prc.user.request;
import lombok.Data;
@Data
public class UserPagePointRewardConfigQueryParams {
private Boolean enable;
}

dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/response/UserPagePointRewardConfigByOperatorVo.java → dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/response/UserPagePointRewardConfigVo.java

@ -8,7 +8,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class UserPagePointRewardConfigByOperatorVo {
public class UserPagePointRewardConfigVo {
@ApiModelProperty("唯一标识")
@JsonSerialize(using = ToStringSerializer.class)

26
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/par/PointAccountRecordApplicationService.java

@ -0,0 +1,26 @@
package com.qniao.dam.application.service.par;
import com.qniao.dam.domain.aggregate.par.PointAccountRecordAggregate;
import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class PointAccountRecordApplicationService {
@Resource
private PointAccountRecordAggregate pointAccountRecordAggregate;
public void create(PointAccountRecord pointAccountRecord) {
pointAccountRecordAggregate.create(pointAccountRecord);
}
public void edit(PointAccountRecord pointAccountRecord) {
pointAccountRecordAggregate.edit(pointAccountRecord);
}
public void delete(Long id) {
pointAccountRecordAggregate.delete(id);
}
}

26
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pointaccount/PointAccountApplicationService.java

@ -0,0 +1,26 @@
package com.qniao.dam.application.service.pointaccount;
import com.qniao.dam.domain.aggregate.pointaccount.PointAccountAggregate;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class PointAccountApplicationService {
@Resource
private PointAccountAggregate pointAccountAggregate;
public void create(PointAccount pointAccount) {
pointAccountAggregate.create(pointAccount);
}
public void edit(PointAccount pointAccount) {
pointAccountAggregate.edit(pointAccount);
}
public void delete(Long id) {
pointAccountAggregate.delete(id);
}
}

31
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/PointAccountAggregate.java

@ -0,0 +1,31 @@
package com.qniao.dam.domain.aggregate.pointaccount;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.dam.domain.aggregate.pointaccount.repository.PointAccountRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 积分账号
*
* @date 2024/12/23
*/
@Service
public class PointAccountAggregate {
@Resource
private PointAccountRepository repository;
public void create(PointAccount entity) {
repository.save(entity);
}
public void edit(PointAccount entity) {
repository.save(entity);
}
public void delete(Long id) {
repository.delete(id);
}
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/repository/PointAccountRepository.java

@ -0,0 +1,12 @@
package com.qniao.dam.domain.aggregate.pointaccount.repository;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.domain.Repository;
/**
* 积分账号
*
* @date 2024/12/23
*/
public interface PointAccountRepository extends Repository<PointAccount, Long> {
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.par;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.pointaccount.valueobj.PointAccountRecord;
/**
* 积分账户记录
*
* @date 2024/12/23
*/
public interface PointAccountRecordDao extends BaseMapper<PointAccountRecord> {
}

12
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/pointaccount/PointAccountDao.java

@ -0,0 +1,12 @@
package com.qniao.dam.infrastructure.persistent.dao.pointaccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
/**
* 积分账号
*
* @date 2024/12/23
*/
public interface PointAccountDao extends BaseMapper<PointAccount> {
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/prc/PointRewardConfigDao.java

@ -3,8 +3,8 @@ package com.qniao.dam.infrastructure.persistent.dao.prc;
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.prc.user.request.UserPagePointRewardConfigByOperatorQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigByOperatorVo;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo;
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig;
import org.apache.ibatis.annotations.Param;
@ -14,6 +14,6 @@ import org.apache.ibatis.annotations.Param;
* @date 2024/12/23
*/
public interface PointRewardConfigDao extends BaseMapper<PointRewardConfig> {
IPage<UserPagePointRewardConfigByOperatorVo> pageByOperator(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPagePointRewardConfigByOperatorQueryParams queryParams);
IPage<UserPagePointRewardConfigVo> page(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPagePointRewardConfigQueryParams queryParams);
}

51
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointAccountRepositoryImpl.java

@ -0,0 +1,51 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.dam.domain.aggregate.pointaccount.repository.PointAccountRepository;
import com.qniao.dam.infrastructure.persistent.dao.par.PointAccountRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.pointaccount.PointAccountDao;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**
* 积分账号
*
* @date 2024/12/23
*/
@Service
public class PointAccountRepositoryImpl implements PointAccountRepository {
@Resource
private PointAccountDao dao;
@Resource
private PointAccountRecordDao pointAccountRecordDao;
@Override
public PointAccount load(Long id) {
return dao.selectById(id);
}
@Override
public Long save(PointAccount entity) {
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) {
dao.insert(entity);
} else {
dao.updateById(entity);
}
if (CollUtil.isNotEmpty(entity.getRecordList())) {
entity.getRecordList().forEach(record -> {
record.setPointAccountId(entity.getId());
pointAccountRecordDao.insert(record);
});
}
return entity.getId();
}
@Override
public void delete(Long id) {
dao.deleteById(id);
}
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/PointAccountRecordQueryService.java

@ -0,0 +1,5 @@
package com.qniao.dam.query.par;
public interface PointAccountRecordQueryService {
}

9
dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/impl/PointAccountRecordQueryServiceImpl.java

@ -0,0 +1,9 @@
package com.qniao.dam.query.par.impl;
import com.qniao.dam.query.par.PointAccountRecordQueryService;
import org.springframework.stereotype.Service;
@Service
public class PointAccountRecordQueryServiceImpl implements PointAccountRecordQueryService {
}

8
dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java

@ -0,0 +1,8 @@
package com.qniao.dam.query.pointaccount;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
public interface PointAccountQueryService {
PointAccount queryByUserId(Long userId);
}

30
dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java

@ -0,0 +1,30 @@
package com.qniao.dam.query.pointaccount.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.pointaccount.PointAccountDao;
import com.qniao.dam.query.pointaccount.PointAccountQueryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class PointAccountQueryServiceImpl implements PointAccountQueryService {
@Resource
private PointAccountDao pointAccountDao;
@Override
public PointAccount queryByUserId(Long userId) {
PointAccount pointAccount = pointAccountDao.selectOne(new LambdaQueryWrapper<PointAccount>()
.eq(PointAccount::getIdentityType, IdentityTypeEnum.INDIVIDUAL)
.eq(PointAccount::getUserId, userId)
.last("limit 1"));
if (Objects.isNull(pointAccount)){
pointAccount = PointAccount.initUser(userId);
}
return pointAccount;
}
}

6
dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/PointRewardConfigQueryService.java

@ -1,11 +1,11 @@
package com.qniao.dam.query.prc;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigByOperatorQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigByOperatorVo;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo;
import com.qniao.framework.utils.PageUtil;
public interface PointRewardConfigQueryService {
IPage<UserPagePointRewardConfigByOperatorVo> pageByOperator(PageUtil pageUtil, UserPagePointRewardConfigByOperatorQueryParams queryParams);
IPage<UserPagePointRewardConfigVo> page(PageUtil pageUtil, UserPagePointRewardConfigQueryParams queryParams);
}

10
dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/impl/PointRewardConfigQueryServiceImpl.java

@ -1,8 +1,8 @@
package com.qniao.dam.query.prc.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigByOperatorQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigByOperatorVo;
import com.qniao.dam.api.query.prc.user.request.UserPagePointRewardConfigQueryParams;
import com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo;
import com.qniao.dam.infrastructure.persistent.dao.prc.PointRewardConfigDao;
import com.qniao.dam.query.prc.PointRewardConfigQueryService;
import com.qniao.framework.utils.PageUtil;
@ -17,8 +17,8 @@ public class PointRewardConfigQueryServiceImpl implements PointRewardConfigQuery
private PointRewardConfigDao pointRewardConfigDao;
@Override
public IPage<UserPagePointRewardConfigByOperatorVo> pageByOperator(PageUtil pageUtil,
UserPagePointRewardConfigByOperatorQueryParams queryParams) {
return pointRewardConfigDao.pageByOperator(pageUtil.toPageWithoutOrders(), queryParams);
public IPage<UserPagePointRewardConfigVo> page(PageUtil pageUtil,
UserPagePointRewardConfigQueryParams queryParams) {
return pointRewardConfigDao.page(pageUtil.toPageWithoutOrders(), queryParams);
}
}

26
dating-agency-mall-server/src/main/resources/mapper/prc/PointRewardConfigMapper.xml

@ -2,19 +2,23 @@
<!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.prc.PointRewardConfigDao">
<select id="pageByOperator"
resultType="com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigByOperatorVo">
<select id="page"
resultType="com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo">
SELECT
id,
create_time,
update_time,
type,
attribute,
num,
`enable`,
remark
id,
create_time,
update_time,
type,
attribute,
num,
`enable`,
remark
FROM
da_point_reward_config
da_point_reward_config
where is_delete=0
<if test="queryParams.enable != null">
AND enable = #{queryParams.enable}
</if>
</select>
</mapper>
Loading…
Cancel
Save