49 changed files with 1358 additions and 8 deletions
Split View
Diff Options
-
37dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigAttributeEnum.java
-
49dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/prc/constant/PointRewardConfigTypeEnum.java
-
3dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java
-
11dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/rewardconfig/constant/RewardTypeEnum.java
-
51dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccount.java
-
48dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/entity/PointAccountRecord.java
-
48dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/prc/entity/PointRewardConfig.java
-
2dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java
-
34dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/pointaccount/event/PointRewardCreatedMQ.java
-
47dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/PointRewardConfigUserCommandController.java
-
30dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserCreatePointRewardConfigDto.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserDeletePointRewardConfigDto.java
-
33dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEditPointRewardConfigDto.java
-
11dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/prc/user/request/UserEnablePointRewardConfigDto.java
-
54dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/PointAccountUserQueryController.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/request/PagePointAccountRecordQueryParams.java
-
32dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/GetUnreadPointAccountRecordVo.java
-
31dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PagePointAccountRecordVo.java
-
24dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/pointaccount/user/response/PointAccountVo.java
-
36dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/PointRewardConfigUserQueryController.java
-
10dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/request/UserPagePointRewardConfigQueryParams.java
-
31dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/prc/user/response/UserPagePointRewardConfigVo.java
-
86dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/marriagebounty/MarriageBountyOrderEventHandle.java
-
60dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/pointaccount/PointAccountEventHandler.java
-
2dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
-
26dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/pointaccount/PointAccountApplicationService.java
-
38dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/prc/PointRewardConfigApplicationService.java
-
19dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
-
31dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/PointAccountAggregate.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/pointaccount/repository/PointAccountRepository.java
-
32dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/prc/PointRewardConfigAggregate.java
-
12dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/prc/repository/PointRewardConfigRepository.java
-
1dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqExchange.java
-
1dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/constant/MqQueue.java
-
14dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/par/PointAccountRecordDao.java
-
19dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/pointaccount/PointAccountDao.java
-
19dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/prc/PointRewardConfigDao.java
-
51dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointAccountRepositoryImpl.java
-
41dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/PointRewardConfigRepositoryImpl.java
-
5dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/PointAccountRecordQueryService.java
-
9dating-agency-mall-server/src/main/java/com/qniao/dam/query/par/impl/PointAccountRecordQueryServiceImpl.java
-
20dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/PointAccountQueryService.java
-
86dating-agency-mall-server/src/main/java/com/qniao/dam/query/pointaccount/impl/PointAccountQueryServiceImpl.java
-
15dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/PointRewardConfigQueryService.java
-
35dating-agency-mall-server/src/main/java/com/qniao/dam/query/prc/impl/PointRewardConfigQueryServiceImpl.java
-
26dating-agency-mall-server/src/main/java/com/qniao/dam/query/rewardconfig/impl/RewardConfigQueryServiceImpl.java
-
13dating-agency-mall-server/src/main/resources/mapper/par/PointAccountRecordMapper.xml
-
23dating-agency-mall-server/src/main/resources/mapper/pointaccount/PointAccountMapper.xml
-
24dating-agency-mall-server/src/main/resources/mapper/prc/PointRewardConfigMapper.xml
@ -0,0 +1,37 @@ |
|||
package com.qniao.dam.domian.aggregate.prc.constant; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.EnumValue; |
|||
import com.fasterxml.jackson.annotation.JsonCreator; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.fasterxml.jackson.annotation.JsonValue; |
|||
import lombok.Getter; |
|||
|
|||
@Getter |
|||
@JsonFormat(shape = JsonFormat.Shape.OBJECT) |
|||
public enum PointRewardConfigAttributeEnum { |
|||
|
|||
NUM(1, "数值"), |
|||
|
|||
PERCENT(2, "百分比"); |
|||
|
|||
@EnumValue |
|||
@JsonValue |
|||
private final Integer value; |
|||
private final String desc; |
|||
|
|||
PointRewardConfigAttributeEnum(Integer value, String desc) { |
|||
this.value = value; |
|||
this.desc = desc; |
|||
} |
|||
|
|||
@JsonCreator |
|||
public static PointRewardConfigAttributeEnum get(Object code) { |
|||
for (PointRewardConfigAttributeEnum e : PointRewardConfigAttributeEnum.values()) { |
|||
if (e.getValue().equals(code)) { |
|||
return e; |
|||
} |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,49 @@ |
|||
package com.qniao.dam.domian.aggregate.prc.constant; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.EnumValue; |
|||
import com.fasterxml.jackson.annotation.JsonCreator; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.fasterxml.jackson.annotation.JsonValue; |
|||
import lombok.Getter; |
|||
|
|||
@Getter |
|||
@JsonFormat(shape = JsonFormat.Shape.OBJECT) |
|||
public enum PointRewardConfigTypeEnum { |
|||
|
|||
INVITE_MATCHMAKER(1, "邀请红娘加盟"), |
|||
|
|||
INVITE_REGISTER(2, "邀请嘉宾注册"), |
|||
|
|||
INVITE_UPLOAD_PROFILE_PHOTO(3, "邀请嘉宾上传头像"), |
|||
|
|||
INVITE_AUTHENTICATION(4, "邀请嘉宾实名认证"), |
|||
|
|||
INVITE_BOUNTY(5, "邀请嘉宾发布悬赏"), |
|||
|
|||
COMPLETE_BOUNTY_AUTHENTICATION(6,"完成榜单悬赏注册"), |
|||
|
|||
COMPLETE_BOUNTY_PUBLISH(7,"完成榜单悬赏发布"), |
|||
|
|||
COMPLETE_BOUNTY_MATCH(8,"完成榜单悬赏匹配"); |
|||
|
|||
@EnumValue |
|||
@JsonValue |
|||
private final Integer value; |
|||
private final String desc; |
|||
|
|||
PointRewardConfigTypeEnum(Integer value, String desc) { |
|||
this.value = value; |
|||
this.desc = desc; |
|||
} |
|||
|
|||
@JsonCreator |
|||
public static PointRewardConfigTypeEnum get(Object code) { |
|||
for (PointRewardConfigTypeEnum e : PointRewardConfigTypeEnum.values()) { |
|||
if (e.getValue().equals(code)) { |
|||
return e; |
|||
} |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,51 @@ |
|||
package com.qniao.dam.domain.aggregate.pointaccount.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
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.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; |
|||
} |
|||
|
|||
public static PointAccount initOrg(Long orgId) { |
|||
PointAccount pointAccount = new PointAccount(); |
|||
pointAccount.setOrgId(orgId); |
|||
pointAccount.setIdentityType(IdentityTypeEnum.ORGANIZATION); |
|||
pointAccount.setPoints(0); |
|||
return pointAccount; |
|||
} |
|||
} |
|||
@ -0,0 +1,48 @@ |
|||
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.Entity; |
|||
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 Entity<PointAccountRecord> { |
|||
|
|||
@ApiModelProperty("积分账号标识") |
|||
private Long pointAccountId; |
|||
|
|||
@ApiModelProperty("积分类型") |
|||
private PointRewardConfigTypeEnum 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; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,48 @@ |
|||
package com.qniao.dam.domain.aggregate.prc.entity; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.TableName; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigAttributeEnum; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import com.qniao.domain.Entity; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
|
|||
/** |
|||
* 积分奖励配置 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
@Data |
|||
@EqualsAndHashCode(callSuper = true) |
|||
@TableName("da_point_reward_config") |
|||
public class PointRewardConfig extends Entity<PointRewardConfig> { |
|||
|
|||
@ApiModelProperty("类型") |
|||
private PointRewardConfigTypeEnum type; |
|||
|
|||
@ApiModelProperty("属性") |
|||
private PointRewardConfigAttributeEnum attribute; |
|||
|
|||
@ApiModelProperty("数量") |
|||
private String num; |
|||
|
|||
@ApiModelProperty("启用状态") |
|||
private Boolean enable; |
|||
|
|||
@ApiModelProperty("备注") |
|||
private String remark; |
|||
|
|||
|
|||
public Integer calculateReward(BigDecimal amount) { |
|||
if (PointRewardConfigAttributeEnum.NUM.equals(attribute)) { |
|||
return Integer.valueOf(num); |
|||
} else { |
|||
return amount.multiply(new BigDecimal(num)).divide(BigDecimal.valueOf(100), 0, RoundingMode.HALF_UP).intValue(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,34 @@ |
|||
package com.qniao.dam.domian.aggregate.pointaccount.event; |
|||
|
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
import java.math.BigDecimal; |
|||
|
|||
@Data |
|||
public class PointRewardCreatedMQ implements Serializable { |
|||
|
|||
@ApiModelProperty("用户唯一标识") |
|||
private Long ownId; |
|||
|
|||
@ApiModelProperty("身份类型(个人、组织)") |
|||
private IdentityTypeEnum identityType; |
|||
|
|||
@ApiModelProperty("积分类型") |
|||
private PointRewardConfigTypeEnum pointType; |
|||
|
|||
@ApiModelProperty("内容") |
|||
private String content; |
|||
|
|||
@ApiModelProperty("是否收入") |
|||
private Boolean isIncome; |
|||
|
|||
@ApiModelProperty("关联ID") |
|||
private Long associateId; |
|||
|
|||
@ApiModelProperty("金额") |
|||
private BigDecimal amount; |
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
package com.qniao.dam.api.command.prc.user; |
|||
|
|||
import com.qniao.dam.api.command.prc.user.request.*; |
|||
import com.qniao.dam.application.service.prc.PointRewardConfigApplicationService; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.annotation.Resource; |
|||
import javax.validation.Valid; |
|||
|
|||
@Api(tags = "积分奖励配置") |
|||
@RestController |
|||
@RequestMapping("user") |
|||
public class PointRewardConfigUserCommandController { |
|||
|
|||
@Resource |
|||
private PointRewardConfigApplicationService pointRewardConfigApplicationService; |
|||
|
|||
@ApiOperation("用户创建积分奖励配置") |
|||
@PostMapping("create/point-reward-config") |
|||
public void userCreatePointRewardConfig(@RequestBody @Valid UserCreatePointRewardConfigDto dto, |
|||
@RequestParam("userId") Long userId) { |
|||
pointRewardConfigApplicationService.create(dto.trans2Domain()); |
|||
} |
|||
|
|||
@ApiOperation("用户编辑积分奖励配置") |
|||
@PostMapping("edit/point-reward-config") |
|||
public void userEditPointRewardConfig(@RequestBody @Valid UserEditPointRewardConfigDto dto, |
|||
@RequestParam("userId") Long userId) { |
|||
pointRewardConfigApplicationService.edit(dto.trans2Domain()); |
|||
} |
|||
|
|||
@ApiOperation("用户删除积分奖励配置") |
|||
@PostMapping("delete/point-reward-config") |
|||
public void userDeletePointRewardConfig(@RequestBody @Valid UserDeletePointRewardConfigDto dto, |
|||
@RequestParam("userId") Long userId) { |
|||
pointRewardConfigApplicationService.delete(dto.getId()); |
|||
} |
|||
|
|||
@ApiOperation("用户启停积分奖励配置") |
|||
@PostMapping("enable/point-reward-config") |
|||
public void userEnablePointRewardConfig(@RequestBody @Valid UserEnablePointRewardConfigDto dto, |
|||
@RequestParam("userId") Long userId) { |
|||
pointRewardConfigApplicationService.enable(dto.getId()); |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
package com.qniao.dam.api.command.prc.user.request; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigAttributeEnum; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.domain.Trans2DomainAssembler; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserCreatePointRewardConfigDto implements Trans2DomainAssembler<PointRewardConfig> { |
|||
|
|||
@ApiModelProperty("类型") |
|||
private PointRewardConfigTypeEnum type; |
|||
|
|||
@ApiModelProperty("属性") |
|||
private PointRewardConfigAttributeEnum attribute; |
|||
|
|||
@ApiModelProperty("数量") |
|||
private String num; |
|||
|
|||
@ApiModelProperty("备注") |
|||
private String remark; |
|||
|
|||
@Override |
|||
public PointRewardConfig trans2Domain() { |
|||
return TypeConvertUtils.convert(this, PointRewardConfig.class); |
|||
} |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
package com.qniao.dam.api.command.prc.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserDeletePointRewardConfigDto { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
private Long id; |
|||
|
|||
} |
|||
@ -0,0 +1,33 @@ |
|||
package com.qniao.dam.api.command.prc.user.request; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigAttributeEnum; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.domain.Trans2DomainAssembler; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserEditPointRewardConfigDto implements Trans2DomainAssembler<PointRewardConfig> { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
private Long id; |
|||
|
|||
@ApiModelProperty("类型") |
|||
private PointRewardConfigTypeEnum type; |
|||
|
|||
@ApiModelProperty("属性") |
|||
private PointRewardConfigAttributeEnum attribute; |
|||
|
|||
@ApiModelProperty("数量") |
|||
private String num; |
|||
|
|||
@ApiModelProperty("备注") |
|||
private String remark; |
|||
|
|||
@Override |
|||
public PointRewardConfig trans2Domain() { |
|||
return TypeConvertUtils.convert(this, PointRewardConfig.class); |
|||
} |
|||
} |
|||
@ -0,0 +1,11 @@ |
|||
package com.qniao.dam.api.command.prc.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserEnablePointRewardConfigDto { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
private Long id; |
|||
} |
|||
@ -0,0 +1,54 @@ |
|||
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; |
|||
import com.qniao.dam.query.pointaccount.PointAccountQueryService; |
|||
import com.qniao.domain.QnPage; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.validation.annotation.Validated; |
|||
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; |
|||
import java.util.Objects; |
|||
|
|||
@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); |
|||
} |
|||
|
|||
@GetMapping("page/point-account-record") |
|||
@ApiOperation("用户获取积分账号记录分页") |
|||
public QnPage<PagePointAccountRecordVo> userPagePointAccountRecord(PageUtil pageUtil, |
|||
@Validated PagePointAccountRecordQueryParams queryParams, |
|||
@RequestParam("userId") Long userId) { |
|||
if (Objects.isNull(queryParams.getQueryUserId())) { |
|||
queryParams.setQueryUserId(userId); |
|||
} |
|||
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); |
|||
} |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
package com.qniao.dam.api.query.pointaccount.user.request; |
|||
|
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class PagePointAccountRecordQueryParams { |
|||
|
|||
@ApiModelProperty("制定查询的用户id") |
|||
private Long queryUserId; |
|||
|
|||
} |
|||
@ -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; |
|||
|
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
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 PagePointAccountRecordVo { |
|||
|
|||
@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; |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
package com.qniao.dam.api.query.prc.user; |
|||
|
|||
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; |
|||
import io.swagger.annotations.Api; |
|||
import io.swagger.annotations.ApiOperation; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Api(tags = "积分奖励配置") |
|||
@RestController |
|||
@RequestMapping("user") |
|||
public class PointRewardConfigUserQueryController { |
|||
|
|||
@Resource |
|||
private PointRewardConfigQueryService pointRewardConfigQueryService; |
|||
|
|||
@GetMapping("page/point-reward-config/by/operator") |
|||
@ApiOperation("运营获取积分奖励配置分页列表") |
|||
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); |
|||
} |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
package com.qniao.dam.api.query.prc.user.request; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserPagePointRewardConfigQueryParams { |
|||
|
|||
private Boolean enable; |
|||
|
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
package com.qniao.dam.api.query.prc.user.response; |
|||
|
|||
import com.fasterxml.jackson.databind.annotation.JsonSerialize; |
|||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigAttributeEnum; |
|||
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import io.swagger.annotations.ApiModelProperty; |
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class UserPagePointRewardConfigVo { |
|||
|
|||
@ApiModelProperty("唯一标识") |
|||
@JsonSerialize(using = ToStringSerializer.class) |
|||
private Long id; |
|||
|
|||
@ApiModelProperty("类型") |
|||
private PointRewardConfigTypeEnum type; |
|||
|
|||
@ApiModelProperty("属性") |
|||
private PointRewardConfigAttributeEnum attribute; |
|||
|
|||
@ApiModelProperty("数量") |
|||
private String num; |
|||
|
|||
@ApiModelProperty("启用状态") |
|||
private Boolean enable; |
|||
|
|||
@ApiModelProperty("备注") |
|||
private String remark; |
|||
} |
|||
@ -0,0 +1,60 @@ |
|||
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.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; |
|||
import com.qniao.dam.infrastructure.constant.MqQueue; |
|||
import com.qniao.dam.query.pointaccount.PointAccountQueryService; |
|||
import com.qniao.dam.query.prc.PointRewardConfigQueryService; |
|||
import com.qniao.domain.BaseApplicationService; |
|||
import com.qniao.framework.utils.TypeConvertUtils; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.amqp.core.ExchangeTypes; |
|||
import org.springframework.amqp.rabbit.annotation.Exchange; |
|||
import org.springframework.amqp.rabbit.annotation.Queue; |
|||
import org.springframework.amqp.rabbit.annotation.QueueBinding; |
|||
import org.springframework.amqp.rabbit.annotation.RabbitListener; |
|||
import org.springframework.stereotype.Component; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Collections; |
|||
import java.util.Objects; |
|||
|
|||
@Component |
|||
@Slf4j |
|||
public class PointAccountEventHandler extends BaseApplicationService { |
|||
|
|||
@Resource |
|||
private PointAccountQueryService pointAccountQueryService; |
|||
@Resource |
|||
private PointRewardConfigQueryService pointRewardConfigQueryService; |
|||
@Resource |
|||
private PointAccountAggregate pointAccountAggregate; |
|||
|
|||
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.POINT_REWARD_CREATED), |
|||
exchange = @Exchange(value = MqExchange.POINT_REWARD_CREATED, |
|||
type = ExchangeTypes.FANOUT))) |
|||
public void handle(PointRewardCreatedMQ mq) { |
|||
try { |
|||
PointAccount pointAccount = pointAccountQueryService.queryByType(mq.getOwnId(), mq.getIdentityType()); |
|||
//积分计算 |
|||
PointRewardConfig pointRewardConfig = pointRewardConfigQueryService.queryEnableByType(mq.getPointType()); |
|||
if (Objects.nonNull(pointRewardConfig)) { |
|||
Integer points = pointRewardConfig.calculateReward(mq.getAmount()); |
|||
PointAccountRecord pointAccountRecord = TypeConvertUtils.convert(mq, PointAccountRecord.class); |
|||
pointAccountRecord.setPoints(points); |
|||
pointAccountRecord.setOriginalPoints(pointAccount.getPoints()); |
|||
pointAccount.setPoints(pointAccount.getPoints() + points); |
|||
pointAccountRecord.setCurrentPoints(pointAccount.getPoints()); |
|||
pointAccount.setRecordList(Collections.singletonList(pointAccountRecord)); |
|||
pointAccountAggregate.edit(pointAccount); |
|||
} |
|||
} catch (Exception e) { |
|||
log.error("积分奖励创建事件处理异常", e); |
|||
} |
|||
} |
|||
|
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
package com.qniao.dam.application.service.prc; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.PointRewardConfigAggregate; |
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.dam.infrastructure.persistent.dao.prc.PointRewardConfigDao; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Objects; |
|||
|
|||
@Service |
|||
public class PointRewardConfigApplicationService { |
|||
|
|||
@Resource |
|||
private PointRewardConfigAggregate pointRewardConfigAggregate; |
|||
@Resource |
|||
private PointRewardConfigDao pointRewardConfigDao; |
|||
|
|||
public void create(PointRewardConfig pointRewardConfig) { |
|||
pointRewardConfigAggregate.create(pointRewardConfig); |
|||
} |
|||
|
|||
public void edit(PointRewardConfig pointRewardConfig) { |
|||
pointRewardConfigAggregate.edit(pointRewardConfig); |
|||
} |
|||
|
|||
public void delete(Long id) { |
|||
pointRewardConfigAggregate.delete(id); |
|||
} |
|||
|
|||
public void enable(Long id) { |
|||
PointRewardConfig pointRewardConfig = pointRewardConfigDao.selectById(id); |
|||
if (Objects.nonNull(pointRewardConfig)){ |
|||
pointRewardConfig.setEnable(!pointRewardConfig.getEnable()); |
|||
pointRewardConfigAggregate.edit(pointRewardConfig); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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> { |
|||
} |
|||
@ -0,0 +1,32 @@ |
|||
package com.qniao.dam.domain.aggregate.prc; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.dam.domain.aggregate.prc.repository.PointRewardConfigRepository; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
/** |
|||
* 积分奖励配置 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
@Service |
|||
public class PointRewardConfigAggregate { |
|||
|
|||
@Resource |
|||
private PointRewardConfigRepository repository; |
|||
|
|||
public void create(PointRewardConfig entity) { |
|||
entity.setEnable(true); |
|||
repository.save(entity); |
|||
} |
|||
|
|||
public void edit(PointRewardConfig entity) { |
|||
repository.save(entity); |
|||
} |
|||
|
|||
public void delete(Long id) { |
|||
repository.delete(id); |
|||
} |
|||
} |
|||
@ -0,0 +1,12 @@ |
|||
package com.qniao.dam.domain.aggregate.prc.repository; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.domain.Repository; |
|||
|
|||
/** |
|||
* 积分奖励配置 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
public interface PointRewardConfigRepository extends Repository<PointRewardConfig, Long> { |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.par; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccountRecord; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
/** |
|||
* 积分账户记录 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
public interface PointAccountRecordDao extends BaseMapper<PointAccountRecord> { |
|||
void updateIsRead(@Param("pointAccountId") Long pointAccountId); |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
package com.qniao.dam.infrastructure.persistent.dao.pointaccount; |
|||
|
|||
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.pointaccount.user.request.PagePointAccountRecordQueryParams; |
|||
import com.qniao.dam.api.query.pointaccount.user.response.PagePointAccountRecordVo; |
|||
import com.qniao.dam.domain.aggregate.pointaccount.entity.PointAccount; |
|||
import org.apache.ibatis.annotations.Param; |
|||
|
|||
/** |
|||
* 积分账号 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
public interface PointAccountDao extends BaseMapper<PointAccount> { |
|||
IPage<PagePointAccountRecordVo> pagePointAccountRecord(Page<Object> pageWithoutOrders, |
|||
@Param("queryParams") PagePointAccountRecordQueryParams queryParams); |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
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.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; |
|||
|
|||
/** |
|||
* 积分奖励配置 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
public interface PointRewardConfigDao extends BaseMapper<PointRewardConfig> { |
|||
IPage<UserPagePointRewardConfigVo> page(Page<Object> pageWithoutOrders, |
|||
@Param("queryParams") UserPagePointRewardConfigQueryParams queryParams); |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -0,0 +1,41 @@ |
|||
package com.qniao.dam.infrastructure.persistent.repository.impl; |
|||
|
|||
import com.qniao.dam.domain.aggregate.prc.entity.PointRewardConfig; |
|||
import com.qniao.dam.domain.aggregate.prc.repository.PointRewardConfigRepository; |
|||
import com.qniao.dam.infrastructure.persistent.dao.prc.PointRewardConfigDao; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
import java.util.Objects; |
|||
|
|||
/** |
|||
* 积分奖励配置 |
|||
* |
|||
* @date 2024/12/23 |
|||
*/ |
|||
@Service |
|||
public class PointRewardConfigRepositoryImpl implements PointRewardConfigRepository { |
|||
|
|||
@Resource |
|||
private PointRewardConfigDao dao; |
|||
|
|||
@Override |
|||
public PointRewardConfig load(Long id) { |
|||
return dao.selectById(id); |
|||
} |
|||
|
|||
@Override |
|||
public Long save(PointRewardConfig entity) { |
|||
if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) { |
|||
dao.insert(entity); |
|||
} else { |
|||
dao.updateById(entity); |
|||
} |
|||
return entity.getId(); |
|||
} |
|||
|
|||
@Override |
|||
public void delete(Long id) { |
|||
dao.deleteById(id); |
|||
} |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
package com.qniao.dam.query.par; |
|||
|
|||
public interface PointAccountRecordQueryService { |
|||
|
|||
} |
|||
@ -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 { |
|||
|
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
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; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
|
|||
public interface PointAccountQueryService { |
|||
|
|||
PointAccount queryByUserId(Long userId); |
|||
|
|||
PointAccount queryByType(Long ownId, IdentityTypeEnum identityType); |
|||
|
|||
IPage<PagePointAccountRecordVo> pagePointAccountRecord(PagePointAccountRecordQueryParams queryParams, PageUtil pageUtil); |
|||
|
|||
GetUnreadPointAccountRecordVo getUnreadPointAccountRecord(Long userId); |
|||
} |
|||
@ -0,0 +1,86 @@ |
|||
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; |
|||
import java.util.Objects; |
|||
|
|||
@Service |
|||
public class PointAccountQueryServiceImpl implements PointAccountQueryService { |
|||
|
|||
@Resource |
|||
private PointAccountDao pointAccountDao; |
|||
@Resource |
|||
private PointAccountRecordDao pointAccountRecordDao; |
|||
|
|||
@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; |
|||
} |
|||
|
|||
private PointAccount queryByOrg(Long orgId) { |
|||
PointAccount pointAccount = pointAccountDao.selectOne(new LambdaQueryWrapper<PointAccount>() |
|||
.eq(PointAccount::getIdentityType, IdentityTypeEnum.INDIVIDUAL) |
|||
.eq(PointAccount::getOrgId, orgId) |
|||
.last("limit 1")); |
|||
if (Objects.isNull(pointAccount)) { |
|||
pointAccount = PointAccount.initOrg(orgId); |
|||
} |
|||
return pointAccount; |
|||
} |
|||
|
|||
@Override |
|||
public PointAccount queryByType(Long ownId, IdentityTypeEnum identityType) { |
|||
if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) { |
|||
return queryByUserId(ownId); |
|||
} else if (IdentityTypeEnum.ORGANIZATION.equals(identityType)) { |
|||
return queryByOrg(ownId); |
|||
} |
|||
return null; |
|||
} |
|||
|
|||
@Override |
|||
public IPage<PagePointAccountRecordVo> pagePointAccountRecord(PagePointAccountRecordQueryParams queryParams, PageUtil pageUtil) { |
|||
return pointAccountDao.pagePointAccountRecord(pageUtil.toPageWithoutOrders(), queryParams); |
|||
} |
|||
|
|||
@Override |
|||
public GetUnreadPointAccountRecordVo getUnreadPointAccountRecord(Long userId) { |
|||
GetUnreadPointAccountRecordVo recordVo = null; |
|||
PointAccount pointAccount = queryByUserId(userId); |
|||
if (Objects.nonNull(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; |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
package com.qniao.dam.query.prc; |
|||
|
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
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 com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
|
|||
public interface PointRewardConfigQueryService { |
|||
|
|||
IPage<UserPagePointRewardConfigVo> page(PageUtil pageUtil, UserPagePointRewardConfigQueryParams queryParams); |
|||
|
|||
PointRewardConfig queryEnableByType(PointRewardConfigTypeEnum type); |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
package com.qniao.dam.query.prc.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.core.metadata.IPage; |
|||
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 com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum; |
|||
import com.qniao.dam.infrastructure.persistent.dao.prc.PointRewardConfigDao; |
|||
import com.qniao.dam.query.prc.PointRewardConfigQueryService; |
|||
import com.qniao.framework.utils.PageUtil; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import javax.annotation.Resource; |
|||
|
|||
@Service |
|||
public class PointRewardConfigQueryServiceImpl implements PointRewardConfigQueryService { |
|||
|
|||
@Resource |
|||
private PointRewardConfigDao pointRewardConfigDao; |
|||
|
|||
@Override |
|||
public IPage<UserPagePointRewardConfigVo> page(PageUtil pageUtil, |
|||
UserPagePointRewardConfigQueryParams queryParams) { |
|||
return pointRewardConfigDao.page(pageUtil.toPageWithoutOrders(), queryParams); |
|||
} |
|||
|
|||
@Override |
|||
public PointRewardConfig queryEnableByType(PointRewardConfigTypeEnum type) { |
|||
return pointRewardConfigDao.selectOne(new LambdaQueryWrapper<PointRewardConfig>() |
|||
.eq(PointRewardConfig::getType, type) |
|||
.eq(PointRewardConfig::getEnable, true) |
|||
.last("limit 1")); |
|||
} |
|||
} |
|||
@ -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> |
|||
@ -0,0 +1,23 @@ |
|||
<?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.pointaccount.PointAccountDao"> |
|||
|
|||
<select id="pagePointAccountRecord" |
|||
resultType="com.qniao.dam.api.query.pointaccount.user.response.PagePointAccountRecordVo"> |
|||
SELECT |
|||
dapar.point_type, |
|||
dapar.content, |
|||
dapar.create_time, |
|||
dapar.points, |
|||
dapar.is_income, |
|||
dapar.original_points, |
|||
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 dapar.is_delete=0 |
|||
<if test="queryParams.queryUserId != null"> |
|||
AND dapa.user_id = #{queryParams.queryUserId} |
|||
</if> |
|||
ORDER BY dapar.create_time desc |
|||
</select> |
|||
</mapper> |
|||
@ -0,0 +1,24 @@ |
|||
<?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.prc.PointRewardConfigDao"> |
|||
|
|||
<select id="page" |
|||
resultType="com.qniao.dam.api.query.prc.user.response.UserPagePointRewardConfigVo"> |
|||
SELECT |
|||
id, |
|||
create_time, |
|||
update_time, |
|||
type, |
|||
attribute, |
|||
num, |
|||
`enable`, |
|||
remark |
|||
FROM |
|||
da_point_reward_config |
|||
where is_delete=0 |
|||
<if test="queryParams.enable != null"> |
|||
AND enable = #{queryParams.enable} |
|||
</if> |
|||
</select> |
|||
|
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save